0

可能重复:
为什么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 文件大小一定有很好的理由

4

2 回答 2

2

我实际上不同意大多数 Web 开发人员制作一长串这样的元素选择器。事实上,对于什么是重置 CSS 的最佳方式,Web 开发人员都有不同的看法。

例如,“Tripoli Reset”使用通用选择器 *.

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

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

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

于 2012-03-05T18:30:34.800 回答
-1

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

这与在 SQL 查询中执行 SELECT * 与执行 SELECT id 非常相似。如果您执行 SELECT *,则在数据库查找列名时会产生额外的开销。与此相同。

有关 Steve Souders 在此方面工作的示例,请阅读

于 2012-03-05T18:27:32.827 回答