浏览器兼容

一、什么是 CSS hack?

CSS hack由于不同厂商的浏览器,比如Internet Explorer,Safari,Mozilla Firefox,Chrome等,或者是同一厂商的浏览器的不同版本,如IE6和IE7,对CSS的解析认识不完全一样,因此会导致生成的页面效果不一样,得不到我们所需要的页面效果。 这个时候我们就需要针对不同的浏览器去写不同的CSS,让它能够同时兼容不同的浏览器,能在不同的浏览器中也能得到我们想要的页面效果。
简单的说,CSS hack的目的就是使你的CSS代码兼容不同的浏览器。当然,我们也可以反过来利用CSS hack为不同版本的浏览器定制编写不同的CSS效果。

二、谈一谈浏览器兼容的思路
  • 首先考虑要不要做
  • 产品的角度(产品的受众、受众的浏览器比例、效果优先还是基本功能优先)
  • 成本的角度 (有无必要做某件事)
  • 做到什么程度 让哪些浏览器支持哪些效果
  • 如何做
    根据兼容需求选择技术框架/库、兼容工具。
    条件注释、CSS Hack、js 能力检测的运用。

两个概念,逐渐增强和优雅降级
逐渐增强:针对低版本浏览器进行构建页面,保证最基本的功能,然后再针对高级浏览器进行效果、交互等改进和追加功能达到更好的用户体验。
优雅降级:一开始就构建完整的功能,然后再针对低版本浏览器进行兼容。
区别:优雅降级是从复杂的现状开始,并试图减少用户体验的供给,而渐进增强则是从一个非常基础的,能够起作用的版本开始,并不断扩充,以适应未来环境的需要。降级(功能衰减)意味着往回看;而渐进增强则意味着朝前看,同时保证其根基处于安全地带。

三、列举5种以上浏览器兼容的写法
  • *,ie6,ie7可以识别;
  • _和- , ie6可以识别;
  • !important ,表示高优先级,ie7及以上,firefox都支持,ie6认识带!important的样式属性,但不认识!important的优先级;
  • -webkit- ,针对safari,chrome浏览器的内核CSS写法
  • -moz-,针对firefox浏览器的内核CSS写法
  • -ms-,针对ie内核的CSS写法
  • -o-,针对Opera内核的CSS写法
四、以下工具/名词是做什么的
  • 条件注释










用于非 IE

  • IE Hack
    针对IE浏览器编写不同的CSS的让IE能够正常渲染的过程
  • js 能力检测
    浏览器的能力检测目标不是检测特定的浏览器,而是检测浏览器的能力。这样,只需要检测浏览器是否支持特定的能力,就可以给出特定的解决方案。这一部分检测是解决浏览器兼容问题的主要检测。
  • html5shiv.js
    在使用html5的时候,有些浏览器不支持h5的一些新特性和标签,需要用这个html5shiv.js来模拟这些标签
  • respond.js
    在做响应式网页的时候一些浏览器器不支持媒体查询等css3新特性,使用respond.js来兼容
  • css reset
    将浏览器的默认样式全部去掉,更准确说就是通过重新定义标签样式。“覆盖”浏览器的CSS默认属性。更简单的说法就是把浏览器提供的默认样式覆盖掉!这就是CSS reset。
  • normalize.css
    Normalize.css 是一个可以定制的CSS文件,它让不同的浏览器在渲染网页元素的时候形式更统一。
    它可以:
    保留有用的默认值,不同于许多 CSS reset 的简单粗暴。
    标准化的样式,适用范围广的元素。
    纠正错误和常见的浏览器的不一致性。
    一些细微的改进,提高了易用性。
    使用详细的注释来解释代码。
  • Modernizr
    Modernizr 是一个 JavaScript 库,用于检测用户浏览器的 HTML5 与 CSS3 特性。
    Modernizr 使你可以方便地为各种情况编写 JavaScript 和 CSS,无论浏览器是否支持这些特性。这是处理渐进增强的完美方案。
    工作原理
    Modernizr 会在页面加载后立即检测特性;然后创建一个包含检测结果的 JavaScript 对象,同时在 html 元素加入方便你调整 CSS 的 class 名。
  • postCSS
    它可以被理解为一个平台,可以让一些插件在上面跑,它提供了一个解析器,可以将CSS解析成抽象语法树,通过PostCSS这个平台,我们能够开发一些插件,来处理CSS。热门插件如autoprefixer,它可以帮我们处理兼容问题,只需正常写CSS,autoprefixer可以帮我的自动生成兼容性代码
五、一般在哪个网站查询属性兼容性?

http://browserhacks.com
http://caniuse.com/

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 什么是 CSS hack 由于不同厂商的浏览器,比如Internet Explorer,Safari,Mozill...
    阿鲁提尔阅读 1,839评论 0 2
  • 本文版权归饥人谷和本人所有 1.什么是 CSS hackCSS hack由于不同厂商的浏览器,比如Internet...
    饥人谷_xxxxx阅读 2,444评论 0 0
  • CSS Hack 不同的浏览器对某些CSS代码解析会存在一定的差异,因此就会导致不同浏览器下给用户展示的页面效果不...
    zx9426阅读 3,068评论 0 0
  • 1、什么是 CSS hack 由于不同厂商的浏览器,比如Internet Explorer,Safari,Mozi...
    kumabearplus阅读 1,638评论 0 1
  • 什么是CSS hack CSS hack由于不同厂商的浏览器,比如Internet Explorer,Safari...
    尾巴尾巴尾巴阅读 4,191评论 0 0