什么是 CSS hack
由于不同厂商的流览器或某浏览器的不同版本(如IE6-IE11,Firefox/Safari/Opera/Chrome等),对CSS的支持、解析不一样,导致在不同浏览器的环境中呈现出不一致的页面展现效果。这时,我们为了获得统一的页面效果,就需要针对不同的浏览器或不同版本写特定的CSS样式,我们把这个针对不同的浏览器/不同版本写相应的CSS code的过程,叫做CSS hack!
谈一谈浏览器兼容的思路
- 要不要做
产品的角度(产品的受众、受众的浏览器比例、效果优先还是基本功能优先)
成本的角度 (有无必要做某件事) - 做到什么程度让
哪些浏览器支持哪些效果 - 如何做
根据兼容需求选择技术框架/库(jquery)
根据兼容需求选择兼容工具(html5shiv.js, respond.js, css reset, normalize.css, Modernizr)
postCSS
条件注释、CSS Hack、js 能力检测做一些修补
列举5种以上浏览器兼容的写法
- 条件注释
<!--[if IE 6]>
<p>You are using Internet Explorer 6.</p>
<![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; /* 仅对ie67有效 */
}
- 浏览器前缀
.boxshadow #MyContainer {
border: none;
-webkit-box-shadow: #666 1px 1px 1px;
-moz-box-shadow: #666 1px 1px 1px;
}
- 使用Modernizr
<script src="Scripts/Modernizr.js" type="text/javascript"></script>
以下工具/名词是做什么的
- 条件注释
于HTML源码中被IE有条件解释的语句。条件注释可被用来向IE提供及隐藏代码。 - IE Hack
为了兼容IE系列浏览器的CSS hack。 - js 能力检测
使用JS检测浏览器是否支持特定的功能来确定解决方案 - html5shiv.js
使用html5shiv.js,可以在IE9以下的浏览器中模拟HTML5分区元素的使用,并提供基本的样式。 - respond.js
Respond.js 是一个小脚本,用于为 IE6-8 以及其它不支持 CSS3 媒体查询功能的浏览器提供媒体查询的 min-width 和 max-width 特性,实现响应式网页设计。 - css reset
将浏览器的默认样式全部去掉。即通过重新定义标签样式,“覆盖”浏览器的CSS默认属性。 - normalize.css
normalize.css让不同的浏览器在渲染网页元素的时候形式更统一。normalize.css比CSS reset处理方式更温和,保留一些元素有用的默认样式,纠正错误和常见的浏览器的不一致性。 - Modernizr
Modernizr是一个JavaScript库,用来检测浏览器是否支持HTML5和CSS3特性,在根元素添加相应类名来实现浏览器兼容。 - postCSS
postCSS是一个后处理器,它提供了一个解析器,可以将CSS解析成抽象语法树,通过PostCSS这个平台,我们能够开发一些插件。
它能解决的问题有:
它能够为 CSS 提供额外的功能;
通过在 PostCSS 这个平台上,我们能够开发一些插件,来处理我们的CSS,比如热门的:autoprefixer
我们能够使用JavaScript来开发插件
比如热门插件如autoprefixer,它可以帮我们处理兼容问题,只需写标准语法的CSS,autoprefixer可以帮我的自动生成兼容性代码
网友评论