我知道什么是CSS重置,但最近我听说过这个名为Normalize.css的新东西
Normalize.css和Reset CSS之间的区别是什么?
规范化CSS和重置CSS有什么区别?
它只是CSS重置的新热门词吗?
答案 0 :(得分:769)
我在normalize.css上工作。
主要区别是:
Normalize.css保留了有用的默认值,而不是“取消停顿”所有内容。例如,sup
或sub
之类的元素在包含规范化之后“正常工作”。 css(并且实际上变得更加健壮),但在包括reset.css之后,它们在视觉上与普通文本无法区分。因此,normalize.css不会对您施加视觉起点(同质性)。这可能不是每个人的口味。最好的办法是尝试两者并根据您的喜好查看哪些凝胶。
Normalize.css纠正了一些超出reset.css范围的常见错误。它的范围比reset.css更宽,并且还提供了常见问题的错误修复,例如:显示HTML5元素的设置,表单元素缺少font
继承,更正font-size
的{{1}}呈现,IE9中的SVG溢出以及iOS中的pre
样式错误。
Normalize.css不会破坏您的开发工具。使用reset.css时常见的烦恼是浏览器CSS调试工具中显示的大型继承链。由于目标样式,这不是normalize.css的问题。
Normalize.css更加模块化。项目分为相对独立的部分,如果您知道它们将会很容易删除部分(如表单规范化)您的网站永远不需要。
Normalize.css有更好的文档。 normalize.css代码在GitHub Wiki中内联,更全面地记录。这意味着您可以了解每行代码的作用,包含的原因,浏览器之间的差异以及更轻松地运行您自己的测试。该项目旨在帮助人们了解默认情况下浏览器如何呈现元素,并使他们更容易参与提交改进。
答案 1 :(得分:244)
主要区别在于:
CSS重置旨在删除所有内置浏览器样式。标准元素如H1-6,p,strong,em等等最终看起来完全相同,完全没有装饰。然后你应该自己添加所有装饰。
Normalize CSS旨在跨浏览器制作内置的浏览器样式一致。像H1-6这样的元素在浏览器中会以一致的方式显示为粗体,更大等等。然后,您应该只添加差异来满足您的设计需求。
如果您的设计 a)遵循排版等的常见约定,并且 b) Normalize.css适用于您的目标受众,则使用Normalize.CSS而不是CSS重置将使您自己的CSS更小,写得更快。
答案 2 :(得分:37)
Normalize.css主要是一组样式,基于作者认为看起来不错的样式,并使其在浏览器中看起来一致。重置基本上剥离了元素的样式,因此您可以更好地控制所有内容的样式。
我同时使用它们。
重置的一些样式,一些来自Normalize.css。例如,从Normalize.css开始,有一种样式可以确保所有输入元素都具有相同的字体,而不会出现(在文本输入和textareas之间)。重置没有这样的样式,因此输入有不同的字体,通常不需要。
所以基本上,使用两个CSS文件可以更好地“均衡”所有内容;)
问候!
答案 3 :(得分:5)
从它的描述看来,它似乎试图使用户代理的默认样式在所有浏览器中保持一致,而不是像复位一样剥离所有默认样式。
与许多CSS重置不同,保留有用的默认值。
答案 4 :(得分:5)
重置似乎是满足自定义设计规范的必要条件,尤其是在复杂的非样板式设计项目中。听起来好像规范化是一种很好的方式来进行纯粹的网络编程,但网站通常是网络编程和UI / UX设计规则之间的联姻。
答案 5 :(得分:5)
首先reset.css
是你可以使用的最差的库,因为它删除了HTML的标准结构,并在将{0.02}的边距填充和其他属性的值分配后,以文本形式显示所有内容。 。例如,您会发现0
与<H1>
相同。
另一方面,<H6>
使用标准结构,并且还修复了其中存在的几乎所有错误。例如,它解决了从一个浏览器到另一个浏览器显示表单的问题。 Normalize通过修改此功能来修复此问题,因此您的元素将在所有浏览器上显示相同。
答案 6 :(得分:0)
有时,最好的解决方案是同时使用两者。有时,它既不使用也不使用。有时,它是使用一个或另一个。如果您想要所有样式,包括在所有浏览器中重置边距和填充,请使用reset.css。然后自己应用所有装饰和样式。如果你只是喜欢内置的样式但想要更多的跨浏览器同步性,即规范化,那么使用normalize.css。但是,如果您选择同时使用reset.css和normalize.css,请先链接reset.css样式表,然后再连接normalize.css样式表(立即)。有时它并不总是一个更好的问题,但是什么时候使用哪一个与何时使用两者相比何时两者都不使用。 IMHO。
答案 7 :(得分:0)
这个问题已经回答了好几次了,我将为每个简短的摘要,一个示例和截至2019年9月的见解:
示例:默认情况下,<h1>
内的<section>
标签的尺寸小于<h1>
标签的“预期”尺寸。另一方面,Microsoft Edge正在使<h1>
标记的“预期”大小。 Normalize.css将使其一致。
当前状态:npm存储库显示normalize.css package当前每周有超过50万次下载。 project of the repository中的GitHub星标超过36,000。
示例:它将执行以下操作:
html, body, div, span, ..., audio, video {
margin: 0;
padding: 0;
border: 0;
font-size: 100%;
font: inherit;
vertical-align: baseline;
}
当前状态:它比Normalize.css受欢迎程度低得多,reset-css软件包显示每周大约有26,000次下载。从项目的repository可以看出,GitHub的星星只有200个。
答案 8 :(得分:0)
Normalize.css:每个浏览器都带有一些默认的CSS样式,例如,在段落或标题周围添加填充。如果您添加标准化样式表,则所有这些浏览器默认规则都会可以重置,以便此实例在标签上填充0px填充。这里有几个链接,提供了更多详细信息:https://necolas.github.io/normalize.css/ http://nicolasgallagher.com/about-normalize-css/
答案 9 :(得分:0)
Normalize.css
Normalize.css 是一个小的 CSS 文件,它在 HTML 元素的默认样式中提供跨浏览器的一致性。
这意味着,如果我们查看浏览器应用的样式的 W3C 标准,并且其中一个浏览器存在不一致,那么 normalize.css
样式将修复具有差异的浏览器样式.
但在某些情况下,我们无法按照标准修复有问题的浏览器,通常是因为 IE 或 EDGE。在这些情况下,Normalize 中的修复会将 IE 或 EDGE 样式应用于其余浏览器。
现实生活中的例子
Chrome、Safari 和 Firefox 渲染 <h1>
/ <article>
/ <aside>
/ <nav>
标签内的 <section>
标签,其字体大小为比独立标签小,并且具有不同的边距大小。在 <h1>
/ <article>
/ <aside>
/ <nav>
中包含 <section>
标签的情况下,这些是 Chrome、Safari 和 Firefox 中的用户代理样式>
标签
:-webkit-any(article,aside,nav,section) h1 {
font-size: 1.5em;
margin-block-start: 0.83em;
margin-block-end: 0.83em;
}
示例:
/*
Correct the font size and margin on `h1` elements within `section` and `article`
contexts in Chrome, Firefox, and Safari.
*/
h1 { font-size: 2em; margin: 0.67em 0;}
重置 CSS
重置 CSS 采取了不同的方法,并表示我们根本不需要浏览器的默认样式。无论我们需要什么样式,我们都会根据需要在项目中定义。因此,“CSS 重置”会重置浏览器用户代理附带的所有样式。
这种方法在上面的例子中效果很好,有那些 <h1>
到 <h6>
默认样式:大多数时候我们既不想要浏览器的默认 font-size
也不想要浏览器的默认 {{ 1}}。
以下是 CSS Reset 的一小部分的示例
margin
在 CSS 重置方式中,我们将所有 HTML 标签定义为没有填充、没有边距、没有边框、相同的字体大小和相同的对齐方式。
CSS 重置的问题在于它们很丑陋:它们有一个很大的选择器链,并且它们做了很多不必要的覆盖。更糟糕的是,它们在调试时不可读。
但仍然有一些我们更喜欢重置的样式,例如 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 {
margin: 0;
padding: 0;
border: 0;
font-size: 100%;
font: inherit;
vertical-align: baseline;
}
到 <h1>
、<h6>
、<ul>
等