Open HuangHongRui opened 7 years ago
CSS hack 谈一谈浏览器兼容的思路 列举5种以上浏览器兼容的写法 以下工具/名词是做什么的 条件注释 IE Hack js 能力检测 html5shiv.js respond.js css reset normalize.css Modernizr postCSS 一般在哪个网站查询属性兼容性?
由于不同厂商的流览器或某浏览器的不同版本(如IE6-IE11,Firefox/Safari/Opera/Chrome等),对CSS的支持、解析不一样,导致在不同浏览器的环境中呈现出不一致的页面展现效果。这时,开发者为了能在其他不同的浏览器或不同版本中获得统一的页面效果,就需要有针对性写特定的CSS样式,这个针对不同的浏览器/不同版本写相应的CSS code的过程,叫做CSS hack!
要不要做: 产品的角度(产品的受众、受众的浏览器比例、效果优先还是基本功能优先)
成本的角度 (有无必要做某件事) -产品的角度。用户是谁。用户主要用啥浏览器,我们的网站是哪中类型的产品... 如果客户是政府部门...那么就需要考虑都考虑到兼容都ie6,稳定性、功能使用实现比效果特效炫酷更重要,不用去考虑什么先进框架 如果受众是集中在很年轻的范围内。电商、直播平台、网站等,那么网站效果,体验很重要,这时需要考虑兼容到IE几?如果IE6,那么效果就很难实现,或成本大。
要做到什么程度: 让哪些浏览器支持哪些效果,根据浏览器的支持情况去做,再此基础上,后面再看能否在不动根本上尝试覆盖更僻的浏览器或版本(ie等)
如何做: 根据兼容需求选择技术框架/库(jquery) 根据兼容需求选择兼容工具(html5shiv.js、respond.js、css reset、normalize.css、Modernizr) postCSS 条件注释、CSS Hack、js 能力检测做一些修补
条件注释
<!--[if IE 6]> <p>You are using Internet Explorer 6.</p> <![endif]--> //在IE6下出现p标签 <!--[if !IE]><!--> //在IE下不显示,在非IE下弹出1; <script>alert(1);</script> <!--<![endif]--> <!--[if IE 8]> 在IE6下引入css文件 <link href="ie8only.css" rel="stylesheet"> <![endif]-->
属性前缀
.box{ color: red; _color: blue; /*ie6*/ *color: pink; /*ie67*/ color: yellow\9; /*ie/edge 6-8*/ }
清浮动
.clearfix:after{ content: ""; display: block; clear: both: } .clearfix{ *zoom: 1; 触发BFC,针对IE6,7 }
inline-block
.target{ display: inline-block; *display: inline; *zoom: 1; }
利用html5shiv、respond
<!--[if lt IE 9]> <script src="https://oss.maxcdn.com/html5shiv/3.7.3/html5shiv.min.js"></script> <script src="https://oss.maxcdn.com/respond/1.4.2/respond.min.js"></script> <![endif]-->
条件注释 条件注释是一种安全的区分IE浏览器版本的语法,且被认为是取代针对IE css hack的首选办法。 条件注释是于HTML源码中被IE有条件解释的语句。条件注释可被用来向IE提供及隐藏代码。 条件注释只能用于IE5以上,和IE10以下。 如果你安装了多个IE,条件注释将会以最高版本的IE为标准。 条件注释的基本结构和HTML的注释(<!– –>)是一样的。因此IE以外的浏 览器将会把它们看作是普通的注释而完全忽略它们。 IE将会根据if条件来判断是否如解析普通的页面内容一样解析条件注释里的内容。
IE Hack
js 能力检测
浏览器的能力检测目标不是检测特定的浏览器,而是检测浏览器的能力。这样,只需要检测浏览器是否支持特定的能力,就可以给出特定的解决方案。这一部分检测是解决浏览器兼容问题的主要检测。
用于解决IE9以下版本浏览器对HTML5新增标签不识别,并导致CSS不起作用的问题。
respond.js 提供一个小脚本,以便在不支持CSS3媒体查询的浏览器中启用响应式网页设计,特别是ie8及更低版本。
css reset
normalize.css
Modernizr
postCSS
传送门: Can I Use ???
诸多思考..
CSS hack
由于不同厂商的流览器或某浏览器的不同版本(如IE6-IE11,Firefox/Safari/Opera/Chrome等),对CSS的支持、解析不一样,导致在不同浏览器的环境中呈现出不一致的页面展现效果。这时,开发者为了能在其他不同的浏览器或不同版本中获得统一的页面效果,就需要有针对性写特定的CSS样式,这个针对不同的浏览器/不同版本写相应的CSS code的过程,叫做CSS hack!
谈一谈浏览器兼容的思路(老板要求除外)
要不要做: 产品的角度(产品的受众、受众的浏览器比例、效果优先还是基本功能优先)
成本的角度 (有无必要做某件事) -产品的角度。用户是谁。用户主要用啥浏览器,我们的网站是哪中类型的产品... 如果客户是政府部门...那么就需要考虑都考虑到兼容都ie6,稳定性、功能使用实现比效果特效炫酷更重要,不用去考虑什么先进框架 如果受众是集中在很年轻的范围内。电商、直播平台、网站等,那么网站效果,体验很重要,这时需要考虑兼容到IE几?如果IE6,那么效果就很难实现,或成本大。
要做到什么程度: 让哪些浏览器支持哪些效果,根据浏览器的支持情况去做,再此基础上,后面再看能否在不动根本上尝试覆盖更僻的浏览器或版本(ie等)
如何做: 根据兼容需求选择技术框架/库(jquery) 根据兼容需求选择兼容工具(html5shiv.js、respond.js、css reset、normalize.css、Modernizr) postCSS 条件注释、CSS Hack、js 能力检测做一些修补
浏览器兼容的写法
条件注释
属性前缀
清浮动
inline-block
利用html5shiv、respond
工具/名词
条件注释 条件注释是一种安全的区分IE浏览器版本的语法,且被认为是取代针对IE css hack的首选办法。 条件注释是于HTML源码中被IE有条件解释的语句。条件注释可被用来向IE提供及隐藏代码。 条件注释只能用于IE5以上,和IE10以下。 如果你安装了多个IE,条件注释将会以最高版本的IE为标准。 条件注释的基本结构和HTML的注释(<!– –>)是一样的。因此IE以外的浏 览器将会把它们看作是普通的注释而完全忽略它们。 IE将会根据if条件来判断是否如解析普通的页面内容一样解析条件注释里的内容。
IE Hack
js 能力检测
浏览器的能力检测目标不是检测特定的浏览器,而是检测浏览器的能力。这样,只需要检测浏览器是否支持特定的能力,就可以给出特定的解决方案。这一部分检测是解决浏览器兼容问题的主要检测。
用于解决IE9以下版本浏览器对HTML5新增标签不识别,并导致CSS不起作用的问题。
respond.js 提供一个小脚本,以便在不支持CSS3媒体查询的浏览器中启用响应式网页设计,特别是ie8及更低版本。
css reset
normalize.css
Modernizr
postCSS
一般在哪个网站查询属性兼容性?
传送门: Can I Use ???