【发布时间】:2013-10-10 07:27:06
【问题描述】:
我想阻止浏览器执行解析和预渲染或绘制一些“隐藏”HTML 的工作,直到我准备好显示它,这样我就可以快速显示最少的内容集,让浏览器只做渲染可见部分的工作。
我正在寻找初始页面加载的最大渲染/绘制速度。
我当前的 HTML:
<div id="stuff">
<div class="item">
<div class="visible">
<h1>Item 1</h1>
<a class="details" href="javascript:void(0)">Show more</a>
</div>
<div class="invisible">
<p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Aenean elit mi, bibendum a imperdiet sed, imperdiet id leo. Mauris vulputate tellus id metus euismod, eget gravida libero ultricies.</p>
<img src="/img/1.jpg" alt="" />
</div>
</div>
<div class="item">
<div class="visible">
<h1>Item 2</h1>
<a class="details" href="javascript:void(0)">Show more</a>
</div>
<div class="invisible">
<p>Vestibulum tristique fermentum dui, et pretium elit. Ut purus lacus, mattis vitae leo vel, congue mollis mi. Aliquam erat volutpat. Vestibulum luctus, purus ut mattis ullamcorper, justo odio ultrices dolor, nec porta purus turpis sed orci. Aliquam orci sapien, dictum sed facilisis molestie, tempus in orci.</p>
<img src="/img/2.jpg" alt="" />
</div>
</div>
... and so on...
</div>
实际的“不可见”内容比本示例中的要重要得多,每页有 50 个“项目”。
我的外部 CSS:
.invisible {
display: none;
}
外部样式表中的display: none 会阻止浏览器预渲染隐藏的内容吗?
有没有更好的方法来做我想做的事?我应该在 div 上放置一个内联 style="display:none" 吗?
谢谢!
【问题讨论】:
-
你有没有测量过HTML包含你的不可见内容时的渲染速度,然后在将不可见内容从HTML中取出后进行测量?有很大的不同吗?当心过早的优化等等。
-
visibility:hidden不会阻止元素渲染,还是我在编造东西? -
不可见的部分可以使用web service,让这个部分在点击show more时渲染,否则不渲染
-
@tymeJV:浏览器仍然必须考虑元素的一切,就好像它是可见的一样,并确保它周围的一切都根据这些计算流动。它不能只是跳过渲染元素并收工。一个简单的实现甚至可能将元素预渲染为正常然后将其变为不可见,虽然这可能是一个允许的实现,但它显然也是一种资源浪费。
-
不显示,无论在哪里/如何都不会减少加载时间