Q1:什么是 CSS hack
由于不同厂商的流览器或某浏览器的不同版本(主流浏览器如IE6-IE11,Firefox/Safari/Opera/Chrome等),对CSS的支持、解析不一样,导致在不同浏览器的环境中呈现出不一致的页面展现效果。这时,我们为了获得统一的页面效果,就需要针对不同的浏览器或不同版本写特定的CSS样式,我们把这个针对不同的浏览器/不同版本写相应的CSS code的过程,叫做CSS hack!
Q2:谈一谈浏览器兼容的思路
确定要不要做
1.产品的角度(产品的受众、受众的浏览器比例、效果优先还是基本功能优先)
2.成本的角度 (有无必要做某件事)
做到什么程度
1.让哪些浏览器支持哪些效果
如何做
1.根据兼容需求选择技术框架/库(jquery)
2.根据兼容需求选择兼容工具(html5shiv.js、respond.js、css reset、normalize.css、Modernizr)
3.postCSS
4.条件注释、CSS Hack、js 能力检测做一些修补
渐进增强和优雅降级
渐进增强(progressive enhancement): 针对低版本浏览器进行构建页面,保证最基本的功能,然后再针对高级浏览器进行效果、交互等改进和追加功能达到更好的用户体验
优雅降级 (graceful degradation): 一开始就构建完整的功能,然后再针对低版本浏览器进行兼容。
Q3:列举5种以上浏览器兼容的写法
margin加倍
在IE6下,如果对元素设置了浮动,同时又设置了margin-left或margin-right,margin值会加倍。
如何解决:在div里面加上display:inline
最小行高
在ie67中,设置小于10px高度的标签,浏览器高度会超出自己设置的高度。
如何解决:
{
min-heith:10px;
height:auto !important;
height:200px;
overflow:visible;
}
IE6、IE7清除浮动
用*zoom1达到bfc效果
.clearfix:after{
content: ' ';
display: block;
clear: both;
}
.clearfix{
*zoom: 1;
}
对齐文本与文本输入框
不同浏览器会出现文本和文本输入框高度不一致的错误。
解决方法:vertical-align:middle
CSS透明问题
ie9以下opacity无效,用
fliter: alpha(opacity=50)
解决
Q4.以下工具/名词是做什么的
1.条件注释
条件注释 (conditional comment) 是于HTML源码中被 Microsoft Internet Explorer 有条件解释的语句。条件注释可被用来向 Internet Explorer 提供及隐藏代码
2.IE Hack
使用特殊的符号或者方式写出只有IE浏览器可以解析的代码,有CSS属性前缀法、选择器前缀法以及IE条件注释法
3.js 能力检测
使用JS的语法检测浏览器支持的属性,以便展示效果
4.html5shiv.js
用于解决IE9以下版本浏览器对HTML5新增标签不识别,并导致CSS不起作用的问题。
5.respond.js
让不支持css3 Media Query的浏览器包括IE6-IE8等其他浏览器支持查询。
6.normalize.css
Normalize.css 只是一个很小的CSS文件,但它在默认的HTML元素样式上提供了跨浏览器的高度一致性。相比于传统的CSS reset,Normalize.css是一种现代的、为HTML5准备的优质替代方案。
7.css reset
通过重新定义标签样式,“覆盖”浏览器的CSS默认属性
8.Modernizr
Modernizr是一个 JavaScript 库,用于检测用户浏览器的 HTML5 与 CSS3 特性。
9.PostCSS
PostCSS是一个JS插件转换样式表的工具。这些插件能够检验你的CSS、支持变量和混合,转化css3的新特性语法、行内图片等。
Q5:一般在哪个网站查询属性兼容性?
http://www.caniuse.com/