* vs html, body, div, span, applet, object, iframe...etc



可能重复:
为什么不';t css重置使用'*';覆盖所有元素?

目前我使用:

*{
    margin:0;
    padding:0;
}

但我不确定为什么人们一直在使用:

html, body, div, span, applet, object, iframe, h1, h2, h3, h4, h5, h6, p, blockquote, pre, a, abbr, acronym, address, big, cite, code, del, dfn, em, font, img, ins, kbd, q, s, samp, small, strike, strong, sub, sup, tt, var, b, u, i, center, dl, dt, dd, ol, ul, li, fieldset, form, label, legend, table, caption, tbody, tfoot, thead, tr, th, td {
    margin:0;
    padding:0;
}

为什么大多数网站(包括这个网站)都使用第二种方法,有什么特别的原因吗?。必须有一个很好的理由来增加CSS文件的大小,比如

事实上,我不同意大多数web开发人员都会这样列出一长串元素选择器。事实上,对于重置CSS的最佳方式,web开发人员都有不同的看法。

例如,"的黎波里重置"使用通用选择器*。

本文只详细介绍了几种重置CSS的方法。

http://sixrevisions.com/css/a-comprehensive-guide-to-css-resets/

我认为更具体的一个原因是上面提到的性能(尽管现在的现代浏览器在解析CSS方面相当快)。此外,如果需要,开发人员也可以更具体。例如,一些CSS属性,如border-collapse,只适用于特定类型的元素。

这是一个性能问题。我强烈建议您阅读Steve Souders的工作,他在高性能前端方面进行了广泛的基准测试和分析。本质上,当您使用*运算符时,浏览器必须对DOM进行大量挖掘和分析,而如果您明确指定运算符,则不必这样做。

这与在SQL查询中执行SELECT*与执行SELECT id非常相似。如果执行SELECT*,则在数据库查找列名时会有额外的开销。这也是一样的。

关于Steve Souders在这方面的工作,请阅读以下内容。

最新更新