1、什么是 CSS hack
由于不同厂商的浏览器,如Internet Explorer,Safari,Mozilla firefox,chrome等;或者是同一厂商不同版本,如IE6和IE7,对CSS的解析认识不完全一致,因此会导致生成的页面不完全一样,得不到我们所需要的页面效果;这个时候我们就需要去针对不同的浏览器写不同的CSS,让它能在不同的浏览器里也能得到我们想要的页面效果;
CSS hack大概有3种表现形式:a:CSS属性前缀法;b:选择器前缀法;c:IE条件注释法(html头部引用 if IE)hack,实际项目中CSS hack大部分是针对IE浏览器不同版本的差异而引起的;
a:CSS属性前缀法(即内部hack),即IE6能识别下划线"- “和星号”",IE7能识别星号"",但不能识别下划线"-",IE6~IE10都能识别"\9",但是firefox前述三个都不能识别;
b:选择器前缀法(即选择器hack);
c:IE条件注释法(即html条件注释hack):针对所以IE(注:IE10已经不再支持条件注释);针对IE6及以下的版本:;这类hack不仅对CSS生效,对写在判断句里所以的代码都生效。
2、谈一谈浏览器兼容的思路
①要不要做 a:产品的角度(产品的受众,受众的浏览器比例,效果优先还是基本功能优先);b:成本的角度(有没有必要做,为了做一个简单的效果而花费巨大的成本是否必要)。
②做到什么程度(让那些浏览器支持哪些效果)。
③如何做a:根据兼容要求选择技术框架、库(Jquery); b:根据兼容需求选择兼容工具(html5shiv.js、respond.js、css.reset、normalize.css、modernizr);c:postCSS;d:条件注释、CSShack、js能力检测做一些修补。
3、列举5种以上浏览器兼容的写法
IE条件注释法(到IE9都可以正常使用,但是在IE10或以上无法使用,IE10不在支持条件注释)
常见的hack写法:
常见的属性兼容情况:
4、以下工具/名词是做什么的
条件注释:是于html源码中被IE有条件解释的词句,条件注释可用来被用来向IE 提供及隐藏代码。
IE Hack:处理各个浏览器兼容问题;
js能力检测:浏览器的能力检测目标不是检测特定的浏览器,而是检测浏览器的能力。这样,只需要检测浏览器是否支持特定的能力,就可以给出特定的解决方案。这一部分检测是解决浏览器兼容问题的主要检测;
html5shiv.js:对不兼容html5标签的浏览器,创建并模拟html5标签的效果并使相应css生效;
respond.js:写页面做响应式,则用CSS的媒体查询,IE6、7、8没有媒体查询,则此文件则可以模拟媒体查询;
css reset:去除一些默认样式,根据自己的需求,裁剪之后再进行使用;
normalize.css:①保护有用的浏览器默认样式而不是完全否认它们;
②一般化的样式:为大部分html元素提供修复浏览器自身的bug并且保证各浏览器的一致性;
③优化CSS的可用性:用一些小技巧;
④解释代码:用注释和详细的文档;
Modernizr:测试当前浏览器的CSS3和HTML5功能,并通过两种方式使结果可用:作为全局Modernizr对象上以及元素上的类。可以帮助我们更加简单的解决浏览器的兼容性问题;
postCSS:将标准的CSS转化为带有前缀的各个浏览器都能识别的属性;
5、一般在哪个网站查询属性兼容性?
https://caniuse.com/#feat=webgl