CSS 选择器的性能已经被强调了很多,有很好的建议:
- 使用高效的选择器。
- 删除未使用的 CSS 规则。
- 删除任何包含当前页面未使用的 CSS 的内联样式块。
但是,没有具体参考以避免在 DOM 中出现不必要的 id(为了 IDing 像 Wordpress 倾向于做的所有事情)。比如像这样比较胖的菜单:
<div id="nav">
<ul id="menu-main-navigation" class="menu genesis-nav-menu menu-primary">
<li id="menu-item-22" class="menu-item menu-item-type-custom menu-item-object-custom menu-item-home menu-item-22"></li>
<li id="menu-item-29" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-29"></li>
<li id="menu-item-30" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-30"></li>
<li id="menu-item-118" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-118"></li>
</ul>
</div>
感觉就像很多不必要的 HTML 解析和匹配来找到不存在的 css ID 规则,或者几乎没有使用默认存在的类(例如这里的 menu-item-# 类),在顶部为每一页下载恒定的不必要字节。单个缓存 css 文件中未使用的 css 规则仅下载一次似乎更糟。或者,如果不是更糟,那还不足以建议避免吗?
或者像这样的 Modernizr 膨胀案例:
<html data-env="production" lang="en" xml:lang="en" style="" class=" js flexbox flexboxlegacy canvas canvastext no-touch postmessage hashchange history websockets rgba hsla multiplebgs backgroundsize borderimage cssanimations csscolumns cssgradients cssreflections csstransforms csstransforms3d csstransitions fontface generatedcontent video audio localstorage sessionstorage webworkers applicationcache overthrow-enabled">
与未使用的外部规则相比,任何浏览器专家对此的看法,以及它对性能的影响有多大。