为了让我的移动网络应用程序保持精简和高效,我试图在任何给定时间限制 DOM 上的元素数量。我打算限制使用 DOM 元素的一种方法是尽可能使用伪元素:before
和:after
元素来生成内容。
例如,不是用这样的元数据表示一个列表项:
<dd class="item">
<div class="name">Name</div>
<div class="desc">Description</div>
<div class="location">Location</div>
<div class="genre">Genre</div>
</dd>
我可以像这样表示它(并使用该content:
属性来显示元数据):
<dd class="child"
data-name="Name"
data-desc="Description"
data-location="Location"
data-genre="Genre">
</dd>
因此,一个 DOM 元素具有数据属性,而不是 5 个单独的元素和可以说是更清晰的标记。
在这里演示:http: //jsfiddle.net/quc8b/2/
这种技术真的会提高性能吗?我的想法是,使用更少的 DOM 元素,javascript 应该可以更快地解析,并且我应该能够更快地添加/删除列表项节点。但是渲染(即绘画、布局和回流)会更快吗?换句话说,CSS 生成的内容渲染/解析是否比传统元素和文本节点更快或更有效?
浏览器如何在渲染树和文档树中内部处理 CSS 生成的内容对我来说是未知的(也许是影子 DOM?)。有没有讨论这个的文章?