防止浏览器渲染显示:无HTML?

Ste*_*ley 9 html css browser dom

我想阻止浏览器预先渲染一些"隐藏的"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>
Run Code Online (Sandbox Code Playgroud)

实际的"不可见"内容比这个例子更重要,每页有50个"项目".

我的外部CSS:

.invisible {
    display: none;
}
Run Code Online (Sandbox Code Playgroud)

display: none在外部样式表防止预渲染隐藏的内容浏览器?

有没有更好的方法来做我想要的?我应该在div上放置内联样式="display:none"吗?

谢谢!

Enn*_*nui 12

display: none不会阻止浏览器解析/加载该标记和相关资源(由Steven Moseley编辑:但它会阻止浏览器将CSS应用于隐藏div中的元素).在其display值发生变化之前,它不会呈现为页面流的一部分.一般而言display: none,visibility: hidden对页面加载时间影响很小或没有影响.优化/性能的主要场所display: none涉及有选择地选择何时显示它,因为它触发页面内容的回流/重新呈现,甚至在所有但非常复杂的应用程序中通常是微不足道的差异.

如果您想等到需要加载内容,请不要包含它(或包括空div占位符),然后在页面加载后使用AJAX从服务器获取内容并将其添加到页面用JS.jQuery通过内置的AJAX函数使这非常简单.

  • 我刚刚对此进行了测试以确认.显示:none绝对比display:block明显更快(虽然比根本不渲染HTML慢得多).看起来浏览器正在解析HTML以构造DOM,但是不会将CSS应用于隐藏div中的元素,直到它们被显示为止.这是我所希望的.我还验证了display:none既可以在外部样式表中也可以在内联中获得相同的效果. (3认同)