我知道什么是CSS重置,但最近我听说了一个叫Normalize.css的新东西

CSS和Reset CSS的区别是什么?

规范化CSS和重置CSS之间的区别是什么?

这只是CSS重置的一个新流行语吗?


当前回答

Normalize.css

CSS是一个小的CSS文件,它在HTML元素的默认样式中提供跨浏览器的一致性。

这意味着,如果我们查看浏览器应用的样式的W3C标准,并且在其中一个浏览器中存在不一致,则normalize.css样式将修复存在差异的浏览器样式。

但在某些情况下,我们无法按照标准修复有问题的浏览器,通常是因为IE或EDGE。在这些情况下,Normalize中的修复程序将把IE或EDGE样式应用于其他浏览器。

现实生活中的例子

Chrome, Safari和Firefox在<article>/ <aside>/ <nav>/ <section>标签中呈现<h1>标签,其字体大小小于独立标签,并具有不同的边距大小。这些是Chrome, Safari和Firefox中<h1>标签在<article>/ <aside>/ <nav>/ <section>的情况下的用户代理样式

Tag

:-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重置

Reset CSS采用了一种不同的方法,它说我们根本不需要浏览器的默认样式。无论我们需要什么样式,我们将根据我们的需要在项目中定义。所以“CSS重置”重置浏览器的用户代理提供的所有样式。

这种方法在上面的例子中工作得很好,对于那些<h1>到<h6>的默认样式:大多数情况下,我们既不想使用浏览器的默认字体大小,也不想使用浏览器的默认边距。

下面是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; 
}

在CSS重置的方式中,我们定义所有的HTML标签没有填充,没有边距,没有边框,相同的字体大小和相同的对齐方式。

CSS重置的问题是它们很丑:它们有一个大的选择器链,并且它们做了很多不必要的重写。更糟糕的是,在调试时它们是不可读的。

但仍然有一些样式我们更喜欢重置,如<h1>到<h6>, <ul>,<li>等。

其他回答

Sometimes, the best solution is to use both. Sometimes, it is to use neither. And sometimes, it is to use one or the other. If you want all the styles, including margin and padding reset across all browsers, use reset.css. Then apply all decorations and stylings yourself. If you simply like the built-in stylings but want more cross-browser synchronicity i.e. normalizations then use normalize.css. But if you choose to use both reset.css and normalize.css, link the reset.css stylesheet first and then the normalize.css stylesheet (immediately) afterwards. Sometimes it's not always a matter of which is better, but when to use which one versus when to use both versus when to use neither. IMHO.

从它的描述来看,它似乎试图让用户代理的默认样式在所有浏览器中保持一致,而不是像重置那样去掉所有的默认样式。

保留有用的默认值,不像许多CSS重置。

我的工作是标准化。css。

主要的区别是:

Normalize.css preserves useful defaults rather than "unstyling" everything. For example, elements like sup or sub "just work" after including normalize.css (and are actually made more robust) whereas they are visually indistinguishable from normal text after including reset.css. So, normalize.css does not impose a visual starting point (homogeny) upon you. This may not be to everyone's taste. The best thing to do is experiment with both and see which gels with your preferences. Normalize.css corrects some common bugs that are out of scope for reset.css. It has a wider scope than reset.css, and also provides bug fixes for common problems like: display settings for HTML5 elements, the lack of font inheritance by form elements, correcting font-size rendering for pre, SVG overflow in IE9, and the button styling bug in iOS. Normalize.css doesn't clutter your dev tools. A common irritation when using reset.css is the large inheritance chain that is displayed in browser CSS debugging tools. This is not such an issue with normalize.css because of the targeted stylings. Normalize.css is more modular. The project is broken down into relatively independent sections, making it easy for you to potentially remove sections (like the form normalizations) if you know they will never be needed by your website. Normalize.css has better documentation. The normalize.css code is documented inline as well as more comprehensively in the GitHub Wiki. This means you can find out what each line of code is doing, why it was included, what the differences are between browsers, and more easily run your own tests. The project aims to help educate people on how browsers render elements by default, and make it easier for them to be involved in submitting improvements.

我在一篇关于normalization .css的文章中对此进行了更详细的描述

Normalize.css

CSS是一个小的CSS文件,它在HTML元素的默认样式中提供跨浏览器的一致性。

这意味着,如果我们查看浏览器应用的样式的W3C标准,并且在其中一个浏览器中存在不一致,则normalize.css样式将修复存在差异的浏览器样式。

但在某些情况下,我们无法按照标准修复有问题的浏览器,通常是因为IE或EDGE。在这些情况下,Normalize中的修复程序将把IE或EDGE样式应用于其他浏览器。

现实生活中的例子

Chrome, Safari和Firefox在<article>/ <aside>/ <nav>/ <section>标签中呈现<h1>标签,其字体大小小于独立标签,并具有不同的边距大小。这些是Chrome, Safari和Firefox中<h1>标签在<article>/ <aside>/ <nav>/ <section>的情况下的用户代理样式

Tag

:-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重置

Reset CSS采用了一种不同的方法,它说我们根本不需要浏览器的默认样式。无论我们需要什么样式,我们将根据我们的需要在项目中定义。所以“CSS重置”重置浏览器的用户代理提供的所有样式。

这种方法在上面的例子中工作得很好,对于那些<h1>到<h6>的默认样式:大多数情况下,我们既不想使用浏览器的默认字体大小,也不想使用浏览器的默认边距。

下面是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; 
}

在CSS重置的方式中,我们定义所有的HTML标签没有填充,没有边距,没有边框,相同的字体大小和相同的对齐方式。

CSS重置的问题是它们很丑:它们有一个大的选择器链,并且它们做了很多不必要的重写。更糟糕的是,在调试时它们是不可读的。

但仍然有一些样式我们更喜欢重置,如<h1>到<h6>, <ul>,<li>等。

主要的区别是:

CSS重置旨在删除所有内置的浏览器样式。标准元素,如H1-6、p、strong、em等等,最终看起来完全一样,没有任何装饰。然后你应该自己添加所有的装饰。 标准化CSS旨在使内置浏览器样式在不同浏览器之间保持一致。像H1-6这样的元素将以一致的方式在浏览器中显示粗体、较大等。然后你应该只添加不同的装饰你的设计需要。

如果你的设计a)遵循排版等常见惯例,b) Normalize.css适合你的目标受众,那么使用Normalize.css而不是CSS重置将使你自己的CSS更小,写得更快。