4

在现代 HTML 编码中,向一个元素添加几个类名是很流行的,例如

<div class="class1 class2 class3 class4 ..."
</div>

这为我们提供了很大的灵活性,可以混合 CSS 属性,而无需为不同的类重复它们。

从逻辑上讲,浏览器会消耗更多的资源来收集不同类的 CSS 属性以应用于相应的元素。

由于很难对此进行可靠的基准测试,因此我从理论的角度提出了这个问题。想象一下,一个页面的大部分 HTML 元素都有几个类(例如 10 个类)。这是否会使页面呈现更困难和更慢?这种放缓是否合理且可观?

一般来说,浏览器从不同类中读取属性的常见流程是什么?

4

2 回答 2

1

添加许多类的兴趣在于为单独的样式设置单独的类,而不是重复/创建用于相同用途的新类。

例如,如果我有一个按钮,我可以有 3 个类,比如.btn .big .grey. 如果我想创建另一个按钮,我只需要重复 .btn 类,并添加我的其他自定义类,如.medium.green。它被称为 OOCSS(面向对象 CSS)。

关于性能,我推荐你看这个小例子http://www.css-101.org/descendant-selector/go_fetch_yourself.php , http://csswizardry.com/2011/09/writing-efficient-css-选择器,你可以找到很多关于 ids 和 classes 性能的文章。

于 2013-04-24T07:31:14.630 回答
1

多个类可以更轻松地为元素添加特殊效果,而无需为该元素创建全新的样式。例如,您可能希望能够快速向左或向右浮动元素。你可以用“float:left;”写两个类“left”和“right”。和“浮动:对;” 在他们中。然后,每当您有一个需要向左浮动的元素时,您只需将类“left”添加到其类列表中。

我喜欢将多个类用于我想在整个站点中保持标准的东西。例如,如果我总是希望具有下边距的元素的下边距为 10px。通过创建一个只包含bottom-margin:10px的类;我可以在需要的地方添加它。

多类的缺点

虽然它们在主要浏览器中受支持,但真正的旧浏览器不支持它们。因此,您应该确保您列出的第一个类是具有该元素最具体信息的类。

当您对一个元素应用越来越多的类时,多个类也会变得非常混乱。

更多的...

概括:

  • 减少选择器的总数(包括 IE 相关的样式:.ie7 .foo .bar)
  • 避免通用选择器(包括不合格的属性选择器:[type="url"])
  • 页面缩放会影响某些浏览器(例如 Opera)中的 CSS 性能
  • 窗口大小会影响某些浏览器(例如 Chrome)中的 CSS 性能
  • 页面重新加载会对某些浏览器(例如 Opera)中的 CSS 性能产生负面影响
  • “border-radius”和“transform”是最昂贵的属性(至少在 WebKit 和 Opera 中)
  • 基于 WebKit 的浏览器中的“时间线”选项卡可以揭示总的重新计算/重排/重绘时间
  • 选择器匹配在 WebKit 中要快得多

http://perfectkills.com/

于 2013-04-24T11:10:38.770 回答