什么是 CSS hack
- 由于不同厂商的浏览器或同一厂家某些不同版本的浏览器对css的解析认识不一致,导致同一页面有不同的显示结果,为了能够统一或尽量显示同样的结果,我们需针对不同浏览器写不同的css,这样的过程就叫做css hack
谈一谈浏览器兼容的思路
- 1、要不要做
首先看看有没有必要实现浏览器兼容的,要根据你的产品的受众,还有成本和收益考虑,是否有必要做浏览器兼容。然后要考虑是否有其他方案可以代替浏览器兼容,用其他的方法来模拟同样的效果。
- 2、做到什么程度
做到兼容到哪一个程度。
- 3、怎么做
根据兼容需求选择技术库和框架比如
bootstrap(>=ie8)
jquery 1.~(>=ie6),jquery 2.~(>=ie9)
vue(>=ie9)
根据兼容需求选择兼容工具包括:比如html5shiv.js、respond.js、等。
- 逐渐增强:针对低版本浏览器进行构建页面,保证最基本的功能,然后再针对高级浏览器进行效果、交互等改进和追加功能达到更好的用户体验。
- 优雅降级:一开始就构建完整的功能,然后再针对低版本浏览器进行兼容。
区别:优雅降级是从复杂的现状开始,并试图减少用户体验的供给,而渐进增强则是从一个非常基础的,能够起作用的版本开始,并不断扩充,以适应未来环境的需要。降级(功能衰减)意味着往回看;而渐进增强则意味着朝前看,同时保证其根基处于安全地带。
列举5种以上浏览器兼容的写法
- *,ie6,ie7可以识别;
- _和- , ie6可以识别;
- !important ,表示高优先级,ie7及以上,firefox都支持,ie6认识带!important的样式属性,但不认识!important的优先级;
- -webkit- ,针对safari,chrome浏览器的内核CSS写法
- -moz-,针对firefox浏览器的内核CSS写法
- -ms-,针对ie内核的CSS写法
- -o-,针对Opera内核的CSS写法
以下工具/名词是做什么的
<!--[if IE]>用于 IE <![endif]-->
<!--[if IE 6]>用于 IE6 <![endif]-->
<!--[if IE 7]>用于 IE7 <![endif]-->
<!--[if IE 8]>用于 IE8 <![endif]-->
<!--[if IE 9]>用于 IE9 <![endif]-->
<!--[if gt IE 6]> 用于 IE6 以上版本<![endif]-->
<!--[if lte IE 7]> 用于 IE7或更低版本 <![endif]-->
<!--[if gte IE 8]>用于 IE8 或更高版本 <![endif]-->
<!--[if lt IE 9]>用于 IE9 以下版本<![endif]-->
<!--[if !IE]> -->用于非 IE <!-- <![endif]-->
- IE Hack
针对IE浏览器编写不同的CSS的让IE能够正常渲染的过程
- js 能力检测
浏览器的能力检测目标不是检测特定的浏览器,而是检测浏览器的能力。这样,只需要检测浏览器是否支持特定的能力,就可以给出特定的解决方案。这一部分检测是解决浏览器兼容问题的主要检测。
- html5shiv.js
用于解决IE9以下版本浏览器对HTML5新增标签不识别,并导致CSS不起作用的问题。所以我们在使用过程中,想要让低版本的浏览器,即IE9以下的浏览器支持,那么这款html5shiv.js是一个非常好的选择!
- respond.js
Respond.js 是一个小脚本,用于为 IE6-8 以及其它不支持 CSS3 媒体查询功能的浏览器提供媒体查询的 min-width 和 max-width 特性,实现响应式网页设计。
- css reset
将浏览器的默认样式全部去掉,更准确说就是通过重新定义标签样式。“覆盖”浏览器的CSS默认属性。最最简单的说法就是把浏览器提供的默认样式覆盖掉!这就是CSS reset。
- normalize.css
Normalize.css 是一个可以定制的CSS文件,它让不同的浏览器在渲染网页元素的时候形式更统一。
它可以:
保留有用的默认值,不同于许多 CSS reset 的简单粗暴。
标准化的样式,适用范围广的元素。
纠正错误和常见的浏览器的不一致性。
一些细微的改进,提高了易用性。
使用详细的注释来解释代码。
- Modernizr
Modernizr 使你可以方便地为各种情况编写 JavaScript 和 CSS,无论浏览器是否支持这些特性。这是处理渐进增强的完美方案。
Modernizr 会在页面加载后立即检测特性;然后创建一个包含检测结果的 JavaScript 对象,同时在 html 元素加入方便你调整 CSS 的 class 名。
- postCSS
它可以被理解为一个平台,可以让一些插件在上面跑,它提供了一个解析器,可以将CSS解析成抽象语法树,通过PostCSS这个平台,我们能够开发一些插件,来处理CSS。
一般在哪个网站查询属性兼容性?