全局css重置*{margin:0;padding:0;}的缺点是什么?

全局css重置*{margin:0;padding:0;}的缺点是什么?,css,xhtml,cross-browser,Css,Xhtml,Cross Browser,全局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, stri

全局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,
dl, dt, dd, ol, ul, li,
fieldset, form, label, legend,
table, caption, tbody, tfoot, thead, tr, th, td {
    margin: 0;
    padding: 0;
    border: 0;
    outline: 0;
    font-weight: inherit;
    font-style: inherit;
    font-size: 100%;
    font-family: inherit;
    vertical-align: baseline;
}
/* remember to define focus styles! */
:focus {
    outline: 0;
}
body {
    line-height: 1;
    color: black;
    background: white;
}
ol, ul {
    list-style: none;
}
/* tables still need 'cellspacing="0"' in the markup */
table {
    border-collapse: separate;
    border-spacing: 0;
}
caption, th, td {
    text-align: left;
    font-weight: normal;
}
blockquote:before, blockquote:after,
q:before, q:after {
    content: "";
}
blockquote, q {
    quotes: "" "";
}
这不是有点具体和沉重吗。我从来没有使用过很多元素,比如blockquote和caption

更新: eric重置了58个元素的9个属性。这难道不像人们谈论的全球重置一样慢吗

使用这个有什么缺点

* { margin: 0; padding: 0; }
select { min-width:1.5em; }

速度是一个缺点,尽管影响很小,但使用全局样式表(*)将属性应用于每个可能的元素,即使您没有为浏览器使用一个或多个

,也有一些默认的边距和填充,每个元素可能是另一个(例如,另一个用于li和输入),具体取决于浏览器。
重置此值将确保在每个浏览器中,所有元素的边距和填充都为0

我没有看到太多的缺点。我认为,如果你在多个浏览器中运行你的网站,那么现在使用一个非常健壮的CSS重置是必不可少的

有时问题是,不同的元素,如p、h1、h2等,都会受到行高、字体大小等的影响,因此仅执行padding:0和margin:0不能保证完全重置


希望这有帮助。

全局重置的缺点更多地基于您自己的个人设置。你也可以编辑其他人的重置,只要你信任他们

缺点: 我创建了我自己的复位方式,当我犯了错误,我必须回去,并删除。 因此,如果您使用其他人的重置,并且它包含一些您没有预料到的内容,您可能会在一些您曾经使用过的对象上“失去功能”。如果需要,可以通过删除有问题的重置来解决此问题

优点:
我已经和reset一起工作了将近一年,我非常喜欢它。我真的没有注意到任何性能问题,元素的显示方式也没有让我感到惊讶,我也不必做一些愚蠢的事情,比如每当我建立一个新网站时,将正文的边距/填充和html设置为0。

Eric Meyer的CSS重置不仅仅是删除填充和边距,但要使默认样式在浏览器之间保持一致。许多样式规则都反映了这一事实。我不知道默认情况下重置中没有包括哪些元素,但我可以说,您发布的特定重置确实包含许多修订,以确保跨浏览器的最大兼容性


至于速度,如果通过站点级联<100个样式的速度决定了您的性能,那么您可能面临着更深层次的问题。请确保缓存尽可能多的文件,不要浪费一些额外的CSS规则。

问题是有些元素需要边距和/或填充才能正确显示,而人们忘记了将它们设置回原来的位置。此外,对于许多元素,您将设置自己的样式,覆盖重置,因此重置是多余的;相反,您应该按照您想要的方式设置样式

我经常看到的一个问题是列表。如果盲目应用重置,列表的项目符号将出现在包含元素之外,这总是让我感到困扰:

+--------------------+ | Some paragraph, | | with text. | | | *| One | *| Two | *| Three | +--------------------+ +--------------------+ |某段,| |有文字| | | *|一个| *|两个| *|三| +--------------------+ 也许有些设计师故意这么做,但我想很多时候我看到这一点,这是因为有人盲目地应用了重置,而没有考虑它会对列表项的缩进产生什么影响。如果你寻找这个,你会看到它到处都是;而且几乎总是,你在上面看到它的站点使用CSS重置。有关如何正确设置列表格式的详细信息,请参阅

另一个问题是,在进行重置后,有时会出现一些模糊的元素,而人们不记得重新应用边距。例如,
元素;它的默认样式不是很好,但它至少可以让您区分其中的
元素。如果你应用了重置,你会失去它,结果所有的东西都被毫无区别地塞满了。堆栈溢出的重置就是这样做的,例如,使
元素变得非常无用:

学期 定义 学期 定义
堆栈溢出的重置在
元素上也没有任何顶部或底部边距,只有
的底部边距;因此,我不得不添加一个额外的

,以防止上面的
与本段冲突


如果确实使用重置,请非常小心地确保所有HTML元素都以合理的方式显示。并删除重置中被添加的后续规则覆盖的部分;没有真正的理由重置
,然后对它们应用
字体重量
字体样式
,如果您将边距重置为
0
,然后将其设置为
2em
,那么为什么不取消重置为
0

差异很小,但“星号规则”在处理每个元素时,应用(或在本例中删除)默认样式实际上需要更长的时间


特别是像Eric Meyer的目标元素那样重置,意味着处理时间稍微缩短。

不要使用重置。

重置对同事和未来的开发人员来说真的很烦人

当我添加一个h1标记时,我希望它有一个边距和填充。当我添加一个p标签时,我希望每个段落之间有空格


当人们删除所有这些内容时,这真的很烦人。我不得不回头看看他们的重置结果,找出这个开发人员决定使用的十亿个可怕的重置中的哪一个,然后更可能更改

从易读性的角度来看,按建议将行高设置为1完全是错误的。即使在