浅谈Normalize.css

转载自简书:https://www.jianshu.com/p/3d21d1932aa0

Normalize.css只是一个很小的css文件,但它在默认的HTML元素样式上提供了跨浏览器的高度一致性。相比于传统的css reset,Normalize.css是一种现代的,为HTML5准备的优质替代方案。Normalize.css现在已经被用于Twitter Bootstrap,HTML5 Boilerplate,GOV.UK,Rdio,CSS Tricks以及许许多多其他的框架,工具和网站上。

 

通俗理解:不同的浏览器在对于CSS没有定义的一些样式属性是不一样的,比如没有在自己的CSS里面规定超链接有没有下划线的时候,有些浏览器有,有些浏览器没有;再比如有一些浏览器规定的超链接默认颜色是蓝色,有一些又是黑色。而这个CSS的功能就是对几乎所有的默认样式进行重置,让所有的浏览器上对于未定义的样式浏览效果达到一致(虽然说无法完全一致,但至少可以消除掉大部分差距)。

 

 

综述

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信息中,这些都是有迹可循的。

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/553983.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

傲游浏览器怎么创建笔记 傲游浏览器笔记创建方法分享

和某些浏览器不同,傲游浏览器中的笔记功能拥有极清爽、极简约、极免费等三大特性,并因此获得了不少用户的青睐。那么,在傲游浏览器中该怎么创建笔记呢?下面小编就来分享一下傲游浏览器笔记创建的方法,有需要的朋友可以稍作参考。…

固定布局(fixed layout)、流体布局(fluid layout)、弹性布局(elastic layout)、响应布局(responsive layout)理解和技巧归纳

关于web页面布局,首先简单了解一下固定布局(fixed layout)、流体布局(fluid layout)、弹性布局(elastic layout)、响应布局(responsive layout)和相应的使用技巧? 固定布局(fixed layout) 固定布局,例如豆瓣网,无论如何change浏览…

win7电脑0x000007b蓝屏怎么办

win7电脑0x000007b蓝屏怎么办?0x000007b蓝屏是什么意思?当电脑出现蓝屏,其蓝屏代码是0x000007b,通常是由于bios设置中的硬盘模式与当前系统不符合所造成。大家可以参考小编给出的本篇教程将模式调为“AHCI”,尝试解决。 1、重启…

整理软件行业职位介绍(PM,RD,FE,UE,UI,QA,OP,DBA,BRD,MRD, PRD,FSD等)、组织结构、职责

职位概览缩写 GM(General Manager)总经理 VP(Vice President)副总裁 FVP(First Vice President)第一副总裁 AVP(Assistant Vice President)副总裁助理 CEO(Chief Executive Officer)首席执行官,类似总经理、总裁,是企业的法人代表。 COO(Chief Ope…

谷歌浏览器怎么查看网页源代码 Chrome浏览器网页源代码查看技巧分享

凭借简单、高效的使用体验,谷歌开发的网页浏览器“Chrome”在国内也不乏粉丝,甚至一度被视为装机必备的软件之一。但其操作方式和界面设计,与国产浏览器略有不同!那么,谷歌浏览器要怎么查看网页源代码?让我们一起来了解一下。 方…

windows下mysql8.0-64的安装、完全卸载及注意事项(亲测),MySQL和SQL Server的简单区别

Windows 上安装 MySQL 1、现在zip安装包: 点击链接 https://cdn.mysql.com//Downloads/MySQL-8.0/mysql-8.0.11-winx64.zip 下载 zip 包。最新版本可以在 MySQL 下载 中下载中查看。 点击 Download 按钮进入下载页面,点击下图中的 No thanks, just star…

vue中使用highCharts的drilldown钻取图、3D等图

<!-- 可以使用highcharts的CDN资源 --> <!-- 钻取图依赖jquery.js和highcharts.js ,有顺序要求 --> <script src"http://cdn.highcharts.com.cn/highcharts/highcharts.js"></script> <script src"http://cdn.highcharts.com.cn/…

vue-router进阶:路由使用归纳、路由导航守卫、导航守卫解析流程、

一、定义和理解 导航守卫的作用&#xff1a;vue-router 提供的导航守卫主要用来通过跳转或取消的方式守卫导航。 》》项目中应用场景举例&#xff1a;路由页面跳转时候进行登陆验证&#xff1b;路由跳转判断&#xff1b; 有多种机会植入路由导航过程中&#xff1a;全局路由, 单…

谷歌浏览器内存不足 Chrome浏览器内存释放技巧分享

谷歌Chrome浏览器内存占用过高的问题一直困扰着不少使用者&#xff0c;除了少用占用内存的扩展插件及控制打开的标签页数量外&#xff0c;还有不少方法可以解决这一问题!下面小编就来分享一个快速释放Chrome浏览器内存的小技巧&#xff0c;小伙伴们可不要错过了。 方法步骤 在…

ChatGPT/GPT4+AI绘图+论文写作+编程结合到底有多强大?带你详细了解

ChatGPT在论文写作与编程方面具备强大的能力。无论是进行代码生成、错误调试还是解决编程难题&#xff0c;ChatGPT都能为您提供实用且高质量的建议和指导&#xff0c;提高编程效率和准确性。此外&#xff0c;ChatGPT是一位出色的合作伙伴&#xff0c;可以为您提供论文写作的支持…

月亮的传说故事

古时候&#xff0c;有个地方夜晚总是漆黑一片&#xff0c;天空就像笼罩着一块黑布。因为在这里&#xff0c;月亮从来没有升起过&#xff0c;星星也不闪烁。其实在上帝创造世界时&#xff0c;晚上还是很明亮的。 有一次&#xff0c;有四个年轻人离开了这片国土&#xff0c;来到…

mockjs语法规范、设置mockjs拦截响应时间、Mock.Random占位符生成随机数据

首先回顾vue-cli项目中使用mockjs步骤&#xff1a; 1、安装mockjs、axios&#xff08;http请求库&#xff09;&#xff1b; cnpm install mockjs axios --save 2、在项目中新建一个mock.js文件&#xff0c;用于定义接口返回的数据&#xff1b; const Mock require(mockjs) …

vue-cli项目布署问题解决:空白页、静态资源文件404错误、refrenceError:promise未定义(部分浏览器不支持ES6语法)

&#xff08;前言&#xff1a;文章记录vue-cli项目打包使用IIS布署遇到的几个错误及解决方式&#xff09; 首先简单理解webpack打包&#xff1a; 个人理解&#xff1a;项目开发中我们构建 "低耦合高内聚" 的组件/模块来代码重用、降低项目复杂性&#xff0c;提升开发…

优酷视频APP的缓存视频在哪里

针对喜爱刷剧的网民&#xff0c;要是有空余就爱播放视频&#xff0c;但是视频会应用很多的总流量&#xff0c;这应该怎么办呢?我们可以在有Wifi的地区把视频缓存到手机里&#xff0c;随后在沒有wifi的地区看缓存文件的含有就可以了。下边就一起来看一下怎样缓存文件优酷吧。 …

转:javascript方法--bind()

javascript方法--bind() bind方法&#xff0c;顾名思义&#xff0c;就是绑定的意思&#xff0c;到底是怎么绑定然后怎么用呢&#xff0c;下面就来说说我对这个方法的理解。 语法 fun.bind(this,arg1,arg2,...) bind()方法会创建一个新的函数&#xff0c;称为绑定函数,fun方法…

win7系统每次开机都需要疑难解答的原因与解决方法

最近有些win7旗舰版的用户发现自己的电脑每次开机都无法正常连接网络&#xff0c;需要自己手动点击一下疑难解答才可以恢复正常连接&#xff0c;非常麻烦&#xff0c;那么Win7旗舰版系统每次开机都需要疑难解答怎么办呢?下面小编就给大家带来了win7系统每次开机都需要疑难解答…

Win7旗舰版禁止修改文件属性的设置方法

大家都知道文件有只读、隐藏和存档三个属性&#xff0c;但是属性默认是可以修改的&#xff0c;如果一不小心修改错误的话&#xff0c;就可能导致文件丢失、损坏、被隐藏等等。为了避免这些问题的发生&#xff0c;我们可以禁止修改文件属性来保护文件的安全&#xff0c;下面介绍…

npm error enoent:no such file or directory...are-we-there-yet ; package.json文件和node_modules模相互转化

vue-cli项目一段时间没有变动&#xff0c;几个星期后继续编辑安装 npm install vue-skeleton-webpack-plugin 插件时报错 npm error enoent:no such file or directory...are-we-there-yet 错误 产生错误的原因&#xff1a;This is still an active issue on Modulus. Ive fo…

简单地使用webpack进行打包,一些常见打包错误

本质上&#xff0c;webpack 是一个现代 JavaScript 应用程序的静态模块打包器(module bundler)。当 webpack 处理应用程序时&#xff0c;它会递归地构建一个依赖关系图(dependency graph)&#xff0c;其中包含应用程序需要的每个模块&#xff0c;然后将所有这些模块打包成一个或…

win7空文件夹删不掉的原因及解决方法

大家在清理系统垃圾的时候&#xff0c;会发现有些文件夹明明已经空了但是就是删不掉&#xff0c;时间长了电脑就会积累很多空的文件夹&#xff0c;拖慢电脑的运行速度。Win7系统中空文件夹删不掉怎么解决?就此问题&#xff0c;下面跟大家分析一win7空文件夹删不掉的原因及解决…