为什么CSS重置不使用'*'来覆盖所有元素?

时间:2011-07-29 23:24:22

标签: css css-reset

例如,the Meyer reset有一长串元素 1 我相信可以用*代替?

我见过一些使用:

* {
   margin: 0;
   padding: 0;
 }

但更多“高级”重置似乎与明确说明标签有关。

我在标签列表中看不到的唯一元素 涵盖(我推测)* inputbutton,而且select - 事实上,Eric Meyer重置似乎并没有真正处理这些元素。如果避免重置这些元素就是问题......为什么不呢?显然的浏览器都显示相同的表单元素。


1 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, 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, article, aside, canvas, details, embed,
figure, figcaption, footer, header, hgroup,
menu, nav, output, ruby, section, summary, time, mark, audio, video
如果你很好奇。

3 个答案:

答案 0 :(得分:15)

你猜对了 - 原因是form元素。

如果您将border: 0设置为input,则会失去原生样式。

例如:http://jsfiddle.net/nrB6N/

并且,没有办法恢复默认样式。

答案 1 :(得分:8)

*对于性能真的非常糟糕(在小型网站上并不重要,但请考虑对5000多个HTML元素的影响)。定位特定元素总是更快,更有效。选择使用ID或CLASS时,请记住这一点。算上今天不仅仅是常见的JavaScript,你会发现具有ID或精确CSS语句的目标元素可以提高性能。

http://code.google.com/speed/page-speed/docs/rendering.html#UseEfficientCSSSelectors

PS。除了速度之外,它还会影响input元素,在* border,padding和margin 0之后变得非常难以设置样式,以便它们在浏览器中看起来相同,尤其是在IE中。阅读更多:http://www.christianmontoya.com/2007/02/01/css-techniques-i-use-all-the-time/

答案 2 :(得分:2)

主要是因为它的性能受到了打击。此外,由于您不希望始终对所有元素应用重置,但是已知会导致问题(在盒子模型周围)。

此外,重置selectinput的样式可能会导致不良体验。