Css 更具体的选择器解析是否更快?

Css 更具体的选择器解析是否更快?,css,css-selectors,Css,Css Selectors,我有一个网站: 车身#触点h1{ 颜色:红色; } #联系方式h1{ 颜色:红色; } body.contact h1{ 颜色:红色; } .联系h1{ 颜色:红色; } 联系我们! 选择器越短越好。如果可能,请确保键选择器是一个类或ID,以保持其快速和特定 欲了解更多信息,请阅读下面的文章。强烈推荐 在阅读我的答案之前,我想告诉您,通过CSS代码优化速度是一个很大的问题空间。您可以通过使用缩小器和最小化CSS的大小来优化速度。这将简化服务器端文件的加载并将其发送到internet(所有请求

我有一个网站:

车身#触点h1{
颜色:红色;
}
#联系方式h1{
颜色:红色;
}
body.contact h1{
颜色:红色;
}
.联系h1{
颜色:红色;
}

联系我们!

选择器越短越好。如果可能,请确保键选择器是一个类或ID,以保持其快速和特定

欲了解更多信息,请阅读下面的文章。强烈推荐


在阅读我的答案之前,我想告诉您,通过CSS代码优化速度是一个很大的问题空间。您可以通过使用缩小器和最小化CSS的大小来优化速度。这将简化服务器端文件的加载并将其发送到internet(所有请求它的浏览器),而在浏览器端,它将通过减少必须下载的文件来提高性能。除此之外,CSS代码性能严格来说是浏览器级别的问题,只有在观察到客户端性能问题时才应该处理它

另外,在对CSS进行任何优化之前,请先删除
h1
的规则进行测试,看看这是否会对性能产生影响

在这个答案中,我假设当浏览器运行CSS时,您会遇到客户端性能问题。
#
id
选择器告诉浏览器搜索给定的
id
,并且,由于对于有效的HTML代码,
id
是唯一的,因此大多数浏览器将在其第一次出现时停止搜索。但是,您为
body
定义了
id
,这并没有太多地提高性能,因为
body
是根
html
标记的直接子级。如果您有一个可以找到所有
h1
标记的分区,那么如果您给它一个
id
并在选择器中使用它,那就太好了<代码>类选择器不会在第一次匹配时停止,因为类不被认为是唯一的。假设您有一个
div
,其中所有
h1
标记都在其中:

<div>
    <!-- There are some h1 tags in here -->
</div>
并在选择器中使用它:

#h1-container h1 {
    /*Your rules*/
}

那应该很快。如果您仍然遇到性能问题,那么您需要向我们提供有关您的问题的更多信息,可能需要使用一个可复制的示例,例如JSFIDLE。

我不认为特定性可以提高解析速度。id稍微提高的是渲染速度。还有其他影响渲染速度的因素,例如CSS文件大小以及需要多次重新定义同一类的许多规则,例如

改善渲染效果的两个建议:

  • 为将在一般内容(段落、列表、粗体、斜体…)中使用的元素定义基本规则。这样,您将覆盖它们的默认浏览器CSS规则
  • 如果不是每个
  • 都有通用的规则,例如特定于模块的规则,则使用模块父类来定义这些规则将避免浏览器对整个HTML进行爬网,并且当您对不同的设计项使用相同的标记时,您不必在以后重写规则
  • 如果存在多个级别的子节点,则需要为每个子节点使用需要自定义的类,而不是添加更多级别的父类,否则在需要异常时,将以大量层次类链结束
  • 尝试创建CSS模块,您可以应用定义该模块元素的单个类在所有设计中循环使用
  • 尽可能避免单独使用*。现在的问题不像20年前那么严重,但越具体,速度就越好
  • 不要滥用:before和:after,负责任地使用它们。这是动态修改DOM的伪元素,有时,某些浏览器无法正确呈现它们
  • 尝试使用CSS速记作为一般规则
  • 如果使用圆形图案,请平衡图像大小和重复频率。创建一个40px png或gif的图案,而不是使用4px的最小大小,例如,因为浏览器必须将图像渲染的次数减少10倍,这值得额外的小文件大小
  • 将精灵用于具有类似元素但不太大的图标。你可以每种颜色做一个雪碧。我还建议垂直进行,全部在一列中。这样,您可以使用
    background-position-y:calc(-8*$module)
    之类的工具轻松找到图标。此方法将为您节省大量css规则来定义位置和HTML元素,因为您不必在两个轴(x,y)上聚集bg图像
  • 如果使用标记,请始终添加
    高度
    内联属性。如果这些图像是.jpg,则使用大约60的压缩并保存为渐进式jpg
  • 我认为有了这些基本规则,在大多数情况下,您不会有任何渲染问题

    h1{
    利润率:16px 8px;
    字体大小:24px;
    颜色:#999666;
    }
    p{
    保证金:8px 8px 16px;
    }
    图姆内尔先生{
    浮动:左;
    边际:0.8px;
    }
    .把内容放在一边{
    显示:表格单元格;
    }
    .内容{
    宽度:75%;
    }
    .内容ul{
    利润率:8px;
    填充:8px 16px;
    }
    李先生{
    利润率:8px0;
    }
    .标签{
    保证金:0;
    填充:0;
    背景:ddd;
    }
    .标签{
    列表样式:无;
    填充:8px;
    }
    .标签+.标签{
    边框顶部:实心2px#fff;
    }
    
    我的头衔
    知识是一种美德,是一种美德,是一种美德,是一种美德

    但是,在最低限度上,我们需要一个实验室来进行日常工作

    两人或两人在一个无教区的房间里互相指责

    • 圣奥卡塔例外情况
    • 过失中的不轻率
    • 这是我的工作
      表1
      #h1-container h1 {
          /*Your rules*/
      }