* 什么是 CSS hack
css hack由于不同浏览器厂商或者不同浏览器的不同版本,如IE6.IE7,对css解析完成不同,因此会导致页面的效果不一样,得不到我们想要的页面效果,这个时候就需要针对不同的浏览器写不同的CSS Hack来达到我们想要的效果。总之,Css Hack的目的就是是你的Css代码兼容不同的浏览器。反之,也就是利用了不同浏览器的Css Hack来写对应css效果。
* 谈一谈浏览器兼容的思路
1.可以从网站面向的群体来考虑:
* 如果面向的是银行 政府 传统企业 这类就需要考虑兼容方面的问题。
* 如果面型是电子商务,青少年社交网站等年轻群体就一开始构建完整的功能,然后再针对低版本浏览器优雅降级
2.浏览器所占的市场比重:
* 如果一个浏览器市场份额很少,就不太需要关心兼容方面的问题.
3.页面是以效果优先还是以基本功能优先
* 如果是以效果优先就一开始构建完成的功能,然后再针对低版本浏览器优雅降低
* 如果是以基本功能优先: 那就针对低版本浏览器进行页面构建,保证基本功能,然后在对新版本浏览器进行效果 交互 等改进和追加功能以达到更好的用户体验.
做到什么程度:
让浏览器支持哪些功能和效果
如何做
- 根据兼容需求选择技术框架和库(jQuery)
- 根据兼容需求选择兼容工具(html5shiv.js .respond.js .css reset.normalze.css.Modernizr)
- 条件注释. css Hack .js能力检测 做进一步修补.
* 浏览器兼容的写法
- html{}会被IE6识别
+htmlP{}会被IE7识别
html{color:red\9}IE6~8识别
-webkit-text-shadow{}浏览器私有前缀
* 条件注释
不会被浏览器解析的。添加注释添加可读性
* IE Hack
IE不同版本对css解析不同,针对不同版本写不同的Css Hack来达到想要的页面效果
* js 能力检测
* html5shiv.js
IE9之前的版本几乎不支持HTML5与Css3新特性。html5shiv.js可以允许IE9之前的版本识别HTML5标记,使用Css样式.
* respond.js
主要针对低版本浏览器对媒体查询的实现.
* css reset
主要就是早期的浏览器对css的理解不同,造成渲染效果不同。css reset修改了css的默认样式来尽量达到渲染效果一致
* normalize.css
基于css reset. 觉得css reset 太简单粗暴了,不应该把css的所有默认样式都清除。
推崇的思想每个元素都有其存在的意义,简单粗暴的一视同仁并不好。尽少的修改.
优点:
* 保护有用的浏览器默认样式
* 一般化的格式
* 修复浏览器自身的Bug
* 优化css可用性
* 代码解释
* Modernizr
主要来检测 浏览器对一些新的属性是否支持
* postCSS.
胜于less和sass的Postcss,还支持模块化,以及灵活的构建进程。
PostCss提供一个css解析器和创建可以分析 测试 处理资源 优化 创建回调。和传输给其他解析css
框架的插件的宽框架。具体详解->PostCss