【问题标题】:What exactly does normalization in CSS do?CSS 中的规范化到底是做什么的?
【发布时间】:2012-07-20 11:19:13
【问题描述】:

我在 JSFiddle 上尝试了一些带有 HTML 中无序列表的代码,我很生气地发现 <ul> 中的项目符号不会无缘无故地显示。在我的代码上尝试不同的东西时,我终于意识到我需要取消选中 jsfiddle 页面上的“规范化 css”选项。

之后,我在 Google 上搜索了它的实际含义,并阅读了 W3C.org 的 this 页面。这个页面只讨论变音符号和口音,我明白了。但是为什么没有在检查规范化 css 选项的情况下显示项目符号?如果您选择该选项,还会影响哪些其他事项?

感谢您的关注。

【问题讨论】:

    标签: html css normalization jsfiddle normalize-css


    【解决方案1】:

    在渲染 html 元素时,规范化 css 会尝试消除浏览器之间的差异。许多浏览器都有“预设置”:ph-元素有垂直边距,列表也有一些边距和填充。 emstrong 标签具有粗体字重。

    所有这些预先设置都被重置,以便您在所有浏览器中拥有一致的工作基础。

    JSFiddles normalize.css 看起来像这样:

    body,div,dl,dt,dd,ul,ol,li,h1,h2,h3,h4,h5,h6,pre,form,fieldset,input,textarea,p,blockquote,th,td { 
        margin:0;
        padding:0;
    }
    table {
        border-collapse:collapse;
        border-spacing:0;
    }
    fieldset,img { 
        border:0;
    }
    address,caption,cite,code,dfn,em,strong,th,var {
        font-style:normal;
        font-weight:normal;
    }
    ol,ul {
        list-style:none;
    }
    caption,th {
        text-align:left;
    }
    h1,h2,h3,h4,h5,h6 {
        font-size:100%;
        font-weight:normal;
    }
    q:before,q:after {
        content:'';
    }
    abbr,acronym { border:0;}
    

    规范化 css 的意义值得商榷,因为您必须在样式表中手动重新声明每种样式(即使是那些有意义的预设,例如在 emstrong 处理的标签上的简单 font-weight浏览器同样如此)。

    我使用Eric Meyer's reset 有一段时间,但停止使用它,因为它重置了太多需要再次重新声明的样式。 IMO 不值得。

    要获得真正好的style-normalizer,请查看http://html5boilerplate.com/ 的 style.css。

    【讨论】:

    • this normalize.css 的细节值得商榷,但可以执行的规范化较少,但仍能保持一致的渲染
    • @Gareth True。 “第一代”规范化 css 确实是一团糟,但新的规范化器更加简洁。我只是想指出,这需要小心完成。
    • 另请参阅提到 Eric Meyer 的重置 css 的答案。我觉得那个最有用。
    • @Stephan 我发现 html5boilerplates 样式规范化器更具吸引力。我将其添加到我的答案中。
    • 嗯,这也不错,但有时对我的口味来说有点过分热心。我花在修改重置上的时间比 Meyer 的要多。
    【解决方案2】:

    在 jsfiddle 中使用的意义上的“规范化”意味着应用一组旨在清理事物的 CSS 规则。它通常被称为“CSS 重置”,这是一种有争议的技术。重要的是要意识到,当覆盖浏览器默认值时,它也可能会覆盖从 Web 诞生之初就一直存在的默认呈现,例如默认的顶部和底部边距以及 ul 元素的一些缩进 - 以及默认的列表标记(子弹)。这取决于特定的“规范化”样式表的使用,以及它的侵略性。

    提到的 W3C 页面上描述的规范化与此无关。它处理字符的 Unicode 规范化,在字符级别发生(当它发生时)的事情,这是一个相对理论的问题。

    【讨论】:

      【解决方案3】:

      Normalize.css 是一个众所周知的reset stylesheet,它用于跨浏览器对齐一些基本样式,以作为开发的共同基础。

      一些开发人员发现它是多余的,或者可能更喜欢使用他们自己的重置样式表。许多现成的重置脚本可用,其中有著名的Eric Mayer's reset.css(被BluePrint使用)和YUI2's stylesheet

      另请参阅 a post here on SO on the best CSS reset 和重置样式表的 best-of-collection

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2015-08-06
        • 2013-09-02
        • 2014-01-02
        • 2013-10-10
        • 2017-05-08
        • 2022-01-20
        • 2012-10-17
        相关资源
        最近更新 更多