美文网首页
浏览器兼容

浏览器兼容

作者: 羌生 | 来源:发表于2017-10-30 22:42 被阅读0次

一,什么是css hack?

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

二,谈一谈浏览器兼容的思路

  • 要不要做
    产品的角度:产品的受众、受众的浏览器比例、效果优先还是基本功能优先
    成本的角度 :有无必要做某件事

  • 做到什么程度
    让哪些浏览器支持哪些效果

  • 如何做
    根据兼容需求选择技术框架/库(jquery)
    根据兼容需求选择兼容工具(html5shiv.jsrespond.jscss resetnormalize.cssModernizr)
    postCSS
    条件注释、CSS Hack、js 能力检测做一些修补

三,列举5种以上浏览器兼容的写法

1.属性前缀法(即类内部Hack):

例如 IE6能识别下划线""和星号" * ",IE7能识别星号" * ",但不能识别下划线"",IE6~IE10都认识"\9",但firefox前述三个都不能认识

.top{
   _color:red;/*只被ie6所解析*/
   *color:blue;/*只被ie6、ie7所解析*/
    color:white/9;/*可被ie6~ie10所解析*/
}
2.条件注释法

是于HTML源码中被IE有条件解释的语句。条件注释可被用来向IE提供及隐藏代码。

<!--[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]-->
3.选择合适的框架和属性

框架如:

  • Bootstrap (>=ie8)
  • jQuery 1.~ (>=ie6), jQuery 2.~ (>=ie9)
  • Vue (>= ie9)

属性如:
inline-block: >=ie8
min-width/min-height: >=ie8
:before,:after: >=ie8
div:hover: >=ie7
inline-block: >=ie8
background-size: >=ie9
圆角: >= ie9
阴影: >= ie9
动画/渐变: >= ie10

4.浏览器私有前缀法
  • -moz代表firefox浏览器私有属性
  • -ms代表IE浏览器私有属性
  • -webkit代表chrome、safari私有属性
5.使用Modernizr等类似工具来帮助页面进行各新旧浏览器的兼容

四,以下工具/名词是做什么的?

  • 条件注释:一种安全的区分IE浏览器版本的语法,且被认为是取代针对IE css hack的首选办法,对IE的版本和非IE有优秀的区分能力。
  • IE Hack:针对IE浏览器各版本的漏洞或特性,来分别兼容IE各版本浏览的做法,常用的方法如条件注释。
  • js 能力检测:利用js进行浏览器的能力检测,能力检查的目标不是识别特定的浏览器,而是识别浏览器的能力,然后根据浏览器的能力,设定不同的兼容方案。
  • html5shiv.js:用于解决IE9以下版本浏览器对HTML5新增标签不识别,并导致CSS不起作用的问题。
  • respond.js:帮助ie6~ie8浏览器支持响应式布局。
  • css reset:默认样式重置
  • Normalize:在默认的HTML元素样式上提供了跨浏览器的高度一致性。它的主要目的是
    1.保护有用的浏览器默认样式而不是完全去掉它们
    2.一般化的样式:为大部分HTML元素提供
    3.修复浏览器自身的bug并保证各浏览器的一致性
    4.优化CSS可用性:用一些小技巧
    5.解释代码:用注释和详细的文档来
  • Modernizr:是一个用来检测浏览器功能支持情况的 JavaScript 库,它会在会在页面加载后立即检测特性;然后创建一个包含检测结果的 JavaScript 对象,同时在 html 元素加入方便你调整 CSS 的 class 名。
  • POSTCSS: 它可以被理解为一个平台,可以让一些插件在上面跑,它提供了一个解析器,可以将CSS解析成抽象语法树,通过PostCSS这个平台,我们能够开发一些插件,来处理CSS。

查询属性兼容性的常用网站:

http://caniuse.com

相关文章

  • 浏览器前缀 js输出

    浏览器前缀 -ms- 兼容IE浏览器-moz- 兼容firefox-o- 兼容opera-webkit- 兼容ch...

  • 浏览器前缀js输出

    浏览器前缀-ms- 兼容IE浏览器-moz- 兼容firefox-o- 兼容opera-webkit- 兼容chr...

  • 浏览器前缀 js输出

    浏览器前缀 -ms- 兼容IE浏览器-moz- 兼容firefox-o- 兼容opera-webkit- 兼容ch...

  • 浏览器前缀 js输出

    浏览器前缀 -ms- 兼容IE浏览器-moz- 兼容firefox-o- 兼容opera-webkit- 兼容ch...

  • ESModule 浏览器兼容性

    import 浏览器兼容性 export 浏览器兼容性

  • 浏览器前缀,js简介

    浏览器前缀用于兼容流里流气 -ms- 兼容IE浏览器 -moz- 兼容firefox -o- 兼容opera -w...

  • 2019-06-05

    css浏览器前缀: -ms- 兼容IE浏览器; -moz- 兼容firefox -o- 兼容opera, -web...

  • 常见浏览器兼容问题及解决

    一、什么是浏览器兼容问题所谓浏览器兼容问题就是指不同浏览器或同种浏览器不同版本对相同代码解析效果不同,浏览器兼容问...

  • 浏览器常见的兼容问题

    什么是浏览器的兼容问题 浏览器的兼容性问题也就是网页的兼容性或者网站兼容性问题, 指网页在各种浏览器上的cs...

  • CSS浏览器前缀

    浏览器样式前缀 为了让CSS3样式兼容,需要将某些样式加上浏览器前缀: -ms- 兼容IE浏览器 -moz- 兼容...

网友评论

      本文标题:浏览器兼容

      本文链接:https://www.haomeiwen.com/subject/lspmpxtx.html