Normalize.css 女爷i 2021-07-05 00:46 376阅读 0赞 ## 简介 ## `Normalize.css`只是一个很小的`css`文件,但它在默认的`HTML`元素样式上提供了跨浏览器的高度一致性。相比于传统的`css reset`,`Normalize.css`是一种现代的,为`HTML5`准备的优质替代方案。`Normalize.css`现在已经被用于`Twitter Bootstrap`,`HTML5 Boilerplate`,`GOV.UK,Rdio,CSS Tricks`以及许许多多其他的框架,工具和网站上。 ## 综述 ## `Normalize.css`是一种`CSS reset`的替代方案。经过@necolas和@jon neal花了几百个小时来努力研究不同浏览器的默认样式的差异,这个项目终于变成了现在这样。 我们创造`normalize.css`有下几个目的: * 保护有用的浏览器默认样式而不是完全去掉它们 * 一般化的样式:为大部分`HTML`元素提供 * 修复浏览器自身的`bug`并保证各浏览器的一致性 * 优化`CSS`可用性:用一些小技巧 * 解释代码:用注释和详细的文档来 `Normalize.css`支持包括手机浏览器在内的超多浏览器,同时对`HTML`元素,排版,列表,嵌入的内容,表单和表格都进行了一般化。尽管这个项目进行了一般化的原则,但我们还是在合适的地方使用了更实用的默认值。 ## Normalize vs Reset ## 知道`Normalize.css`和传统的区别是非常有价值的。 ### 1.`Normalize.css`保护了有价值的默认值 ### `Reset`通过为几乎所有的元素施加默认样式,强行使得元素有相同的视觉效果。相比之下,`Normalize.css`保持了许多默认的浏览器样式。这就意味着你不用再为所有的公共排版元素重新设置样式。当一个元素在不同的浏览器中有不同的默认值时,`Normalize.css`会力求让这些样式保持一致并可能与现代标准相符合。 ### 2.`Normalize.css`修复了浏览器的`bug` ### 它修复了常见的桌面段和移动端浏览器的`bug`。这往往超出了`Reset`所能做到的范畴。关于这一点,`Normalize.css`修复的问题包含了`HTML5`元素的显示设置,与格式化文字的`font-size`问题,在`IE9`中`SVG`的溢出,许多出现在各浏览器和操作系统中的与表单相关的bug。 可以看看以下的这个例子,看看对于HTML5中新出现的`input`类型`search`,`Normalize.css`是如何保证跨浏览器的一致性的。 /** *1.Addresses appearance set to searchfield in ss,Chrome *2Addresses box-size set to border-box in ss,Chrome(include -moz to future-proof)*/ input[type="search"] { -weblit-appearance: textfield; /* 1 */ -moz-box-sizing: content-box; -webkit-box-sizing: content-box; /* 2 */ box-sizing: content-box; } /***Removes inner padding and search candle button in ss,Chrome on OS X*/input[type="search"]::-webkit-search-decoration,input[type="search"]::-webkit-search-candle-button { -webkit-apprance: none; } ### 3.`Normalize.css`不会让你的调试工具变得杂乱 ### 使用`Reset`最让人困扰的地方莫过于在浏览器调试工具中使用大段的继承链。在`Normalize.css`中就不会有这样的问题,因为在我们的准则中对多选择器的使用是非常谨慎的,我们仅会有目的地对元素设置样式。 ### 4.`Normalize.css`是模块化的 ### 这个项目已经被拆分为多个相关却又独立的部分,这使得你能够很容易也很清楚地知道哪些元素被设置了特定的值。因此这能让你自己选择性地移除掉某些永远不会用到部分(比如表单的一般化)。 ### 5.`Normalize.css`拥有详细的文档 ### `Normalize.css的`代码基于详细而全面的跨浏览器研究与测试。这个文件中拥有详细的代码说明并在`Github Wiki`中有进一步的说明。这意味着你可以知道到每一行代码具体实现了什么工作,为什么要写这句代码,浏览器之间的差异,并且你可以更容易地实现地进行自己的测试。 这个项目的目标是帮助人们了解浏览器默认是如何渲染元素的,同时也让人们很容易地明白如何改进浏览器渲染。 ## 如何使用`Normalize.css` ## 首先,安装或从`Github`下载`Normalize.css`,接下来有两种主要途径去使用它。 * 策略一:将`Normalize.css作`为你自己项目的基础`CSS`,自定义样式值以满足设计师的需求。 * 策略二:引入`Normalize.css`源码并在从基础上构建,在必要的时候用到你自己写的`CSS`覆盖默认值。 ## 结语 ## 无论是从适用范畴还是实施上,`Normalize.css`与`Reset`都有着极大的不同。尝试一下这两种方法并看看到底哪一种更适合你的开发偏好是非常值得的。这个项目在`Github`上以开源的形式开发。任何人都能够提交问题报告或者是提交补丁。整个项目发展的过程对所有人都是可见的,而每一次改动的原因也都卸载`commit`信息中,这些都是有迹可循的。 -------------------- ## 定义浏览器统一的默认样式:`Normalize.css` ## 如果你从事网页前端工作,肯定会发现不同浏览器的默认样式有细微的差异,这个让你在使用 `CSS` 进行布局工作的时候相当烦人,况且有些差异还不是那么细微,比如不同浏览器之间的默认表单样式差异以及 `<html>` 和 `<body>` 元素的`margin` 和 `padding` 的差异等。 ### `Normalize.css`介绍 ### 一般前端工程师都会使用 `reset.css` 去处理不同浏览器的默认样式,这里推荐使用`Normalize.css`,它是一个定制的 `reset.css` 文件,可以让所有元素在所有的现代浏览器上渲染一致。 相比其它的 `reset.css`,`Normalize.css` 保留有用的默认样式,不像其它 `reset.css` 那么彻底,移除了每个默认样式,然后又得费神把需要的样式再加回来。`Normalize.css` 定义绝大多数元素的默认样式,并且还提高了一些元素的可用性,并且代码都有详细的注释。 ### `Normalize.css`支持的浏览器 ### Google Chrome (latest) Mozilla Firefox (latest) Mozilla Firefox 4 Opera (latest) Apple Safari 6+ Internet Explorer 8+ ### 使用`Normalize.css` ### `Normalize.css` 使用非常简单,并且七牛的 `StaticFile.org` 已经包含了该库,所以无需下载,只要在网页的头部加入以下代码即可: <link rel="stylesheet" href="http://cdn.staticfile.org/normalize/3.0.1/normalize.min.css" type="text/css" />
还没有评论,来说两句吧...