浏览器兼容问题

2017-03-25  本文已影响66人  路西法丶L

浏览器兼容性问题又被称为网页兼容性或网站兼容性问题,指网页在各种浏览器上的显示效果可能不一致而产生浏览器和网页间的兼容问题。在网站的设计和制作中,做好浏览器兼容,才能够让网站在不同的浏览器下都正常显示。而对于浏览器软件的开发和设计,浏览器对标准的更好兼容能够给用户更好的使用体验。

CSS hack

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

  1. 属性前缀法(即类内部 Hack):例如 IE6 能识别下划线_和星号*,IE7 能识别星号*,但不能识别下划线_,IE6~IE10 都认识\9,但 firefox 前述三个都不能认识。
  2. 选择器前缀法(即选择器 Hack)。
  3. IE 条件注释法(即 HTML 条件注释 Hack):针对所有 IE (注:IE10+ 已经不再支持条件注释): ,针对 IE6 及以下版本:
    。这类 Hack 不仅对 CSS 生效,对写在判断语句里面的所有代码都会生效。

浏览器兼容的思路

浏览器兼容示例

IE 条件注释

项目      范例               说明
!     [if !IE]            非IE
lt    [if lt IE 5.5]        小于IE 5.5
lte     [if lte IE 6]        小于等于IE6
gt   [if gt IE 5]         大于 IE5
gte     [if gte IE 7]        大于等于IE7
|       [if (IE 6)|(IE 7)]    IE6或者IE7
<!--[if lt IE 9]>
    <script src="https://oss.maxcdn.com/html5shiv/3.7.3/html5shiv.min.js"></script>
    <script src="https://oss.maxcdn.com/respond/1.4.2/respond.min.js"></script>
<![endif]-->
<!DOCTYPE html>
<!--[if IEMobile 7 ]> <html dir="ltr" lang="en-US"class="no-js iem7"> <![endif]-->
<!--[if lt IE 7 ]> <html dir="ltr" lang="en-US" class="no-js ie6 oldie"> <![endif]-->
<!--[if IE 7 ]> <html dir="ltr" lang="en-US" class="no-js ie7 oldie"> <![endif]-->
<!--[if IE 8 ]> <html dir="ltr" lang="en-US" class="no-js ie8 oldie"> <![endif]-->
<!--[if (gte IE 9)|(gt IEMobile 7)|!(IEMobile)|!(IE)]><!--><html dir="ltr" lang="en-US" class="no-js"><!--<![endif]-->
.boxshadow #MyContainer { 
  border: none;
  -webkit-box-shadow: #666 1px 1px 1px;
  -moz-box-shadow: #666 1px 1px 1px;
} 
.no-boxshadow #MyContainer {
  border: 2px solid black;
}
box{
 color: red; 
_color: blue; /*ie6*/
 *color: pink; /*ie67*/ 
color: yellow\9; /*ie/edge 6-8*/
}
*html *前缀只对IE6生效
*+html *+前缀只对IE7生效
@media screen\9{...}只对IE6/7生效
@media \0screen {body { background: red; }}只对IE8有效
@media \0screen\,screen\9{body { background: blue; }}只对IE6/7/8有效
@media screen\0 {body { background: green; }} 只对IE8/9/10有效
@media screen and (min-width:0\0) {body { background: gray; }} 只对IE9/10有效
@media screen and (-ms-high-contrast: active), (-ms-high-contrast: none) {body { background: orange; }} 只对IE10有效等等

浏览器兼容常用方法

属性兼容性查询网站

caniuse.com

【注】版权归 Lucifer 所有,转载请联系作者。

上一篇 下一篇

猜你喜欢

热点阅读