浏览器兼容 -- 初步了解

2017-02-16  本文已影响0人  VirtualX

同一份代码,有的浏览器效果正常,但有的浏览器效果无法达到预期,这时就是出现了浏览器不兼容的问题。
这种问题常常是因为不同产品的标准、实现方式不同,或是不同的时间出现的浏览器版本存在的bug、实现的功能都不同而产生的。

1. CSS hack

在遇到兼容问题时,针对不同浏览器去写不容的CSS,让它能在不同浏览器中获得相同的效果。
CSS Hack 大致有三种表现形式:CSS属性前缀法、选择器前缀法、IE条件注释法。
例如:

.box{
  color: red;
  _color: blue; /*ie6*/
  *color: pink; /*ie6 7*/
  color: yellow\9; /*ie/edge 6-8*/
}

2. 浏览器兼容的思路

1). 一般考虑浏览器兼容问题的流程
2).两种常见的浏览器兼容思路:

** 渐进增强和优雅降级:**

3. 常见的5种浏览器兼容的写法

  1. 条件注释:
<!–-[if IE 7]><link rel="stylesheet" href="ie7.css" type="text/css" /><![endif]–->
  1. 属性选择器
.box{
  color: red;
  _color: blue; /*ie6*/
  *color: pink; /*ie6 7*/
  color: yellow\9; /*ie/edge 6-8*/
}
  1. 选择器前缀法
*html //只对IE6生效
*+html //只对IE7生效
@media screen\9{...} //只对IE6 7生效
  1. 条件注释结合类选择器
<!--[if IEMobile 7 ]> <html dir="ltr" lang="en-US"class="no-js iem7"> <![endif]-->
<!--[if (gte IE 9)|(gt IEMobile 7)|!(IEMobile)|!(IE)]><!--><html dir="ltr" lang="en-US" class="no-js"><!--<![endif]-->
  1. 利用Modernizr工具

4. 浏览器兼容相关常见工具/名词:

项目 范例 说明
! [if !IE] 非IE
il [if lt IE 5] 小于IE5
lte [if lte IE6] 小于等于IE6
gt [if gt IE5] 大于IE5
gte [if gte IE 7] 大于等于IE7
| [if (IE6)l(IE7)] IE6或者IE7

5. 一般在哪个网站查询属性兼容性?

可以使用 caniuse.com来查询CSS属性兼容情况,使用browserhacks.com来查询浏览器兼容的写法。

上一篇 下一篇

猜你喜欢

热点阅读