用条件注释判断浏览器版本解决页面兼容问题

所属分类: 网页制作 / CSS 阅读数: 1075
收藏 0 赞 0 分享
对于浏览器兼容问题,我们应该碰到很多了,在平时写一些页面时,在IE8、IE9上可能好好的,当我们在IE6、IE7或者是其他的浏览器上再浏览这些页面时,可能会发现我们的页面已经面目全非了,作为一名前端开发人员,这是最让人发疯的问题了,那么我们该怎么解决这些问题呢?

首先,我们写的页面在不同的浏览器上之所以会出现表现不同的问题,是因为不同的浏览器在解析页面时,他们所遵循的规则并不是完全相同的。比如IE,不同的版本解析都不同,何况是不同的浏览器厂商,不同的内核呢。但是我们在遇到兼容性问题时,应该首先检查我们自己写的代码,看看是不是自己的问题,然后再去追究浏览器的问题。还有,在遇到兼容性问题时,不要动不动就用CSS Hack技术,因为CSS Hack技术并不是W3C所推崇的,因此,不到万不得已,尽量不要用。

好了,说了一大堆,下面我们进入正题:

注释不同的浏览器版本

(1)、支持所有的IE浏览器(不包括IE10标准模式)

<!--[if IE]>只有IE6,7,8,9浏览器显示(IE10标准模式不支持)<![endif]-->

(2)、所有非IE浏览器(不包括IE10标准模式)

<!--[if !IE]><!-->只有非IE浏览器显示(不包括IE10)<!--><![endif]-->

(3)、IE10浏览器

目前还没有找到该版本浏览器的像<!--[if IE 9]>似的单独注释,但IE10做得很不错了,就单单布局而言,页面在IE10、FireFox、Chrome上的表现已经没有什么区别了。

(4)、IE9浏览器

<!--[if IE 9]>IE9浏览器显示<hr/><![endif]-->

(5)、IE8浏览器

<!--[if IE 8]>IE8浏览器显示<hr/><![endif]-->

(6)、IE7浏览器

<!--[if IE 7]>IE7浏览器显示<hr/><![endif]-->

(7)、IE6浏览器

<!--[if IE 6]>IE6浏览器显示<hr/><![endif]-->

(8)、IE10以下版本浏览器(不包括IE10)

<!--[if lt IE 10]>IE10以下版本浏览器显示(不包括IE10)<hr/><![endif]-->

(9)、IE9及IE9以下版本浏览器(包括IE9)

<!--[if lte IE 9]>IE9及IE9以下版本浏览器显示(包括IE9)<hr/><![endif]-->

(10)、IE6以上版本浏览器(不含IE6)

<!--[if gt IE 6]>IE6以上版本浏览器显示(不含IE6)<hr/><![endif]-->

(11)、IE7及IE7以上版本浏览器

<!--[if gte IE 7]>IE7及IE7以上版本浏览器显示(包含IE7)<hr/><![endif]-->

那么我们该怎么运用呢?我们不可能为了兼容像上面那么写,把整页的内容分别写在不同的注释块内。其实这里有两种方法:

方法1、根据不同的浏览器版本,载入不同的css

如我们需要分别兼容IE6、7、8,我们可以这样做

复制代码
代码如下:

<!--[if IE 8]>
<link rel="stylesheet" type="text/css" href="ie8.cdd">
<![endif]-->
<!--[if IE 7]>
<link rel="stylesheet" type="text/css" href="ie7.cdd">
<![endif]-->
<!--[if IE 6]>
<link rel="stylesheet" type="text/css" href="ie6.cdd">
<![endif]-->

方法2、根据不同的浏览器版本,给html或body挂载不同的类如

复制代码
代码如下:

<!--[if lt IE 7 ]><html class="ie6" lang="zh-cn"><![endif]-->
<!--[if IE 7 ]><html class="ie7" lang="zh-cn"><![endif]-->
<!--[if IE 8 ]><html class="ie8" lang="zh-cn"><![endif]-->
<!--[if IE 9 ]><html class="ie9" lang="zh-cn"><![endif]-->

最后我们看一下lt,lte,gt,gte分别表示什么

lt:小于当前版本

lte:小于或等于当前版本,包括本身

gt:大于当前版本

gte:大于或等于当前版本,包括本身

好了,我们今天就到这里,大家可能已经知道怎么简单的处理浏览器兼容了,那么下次我们接着介绍一些CSS Hack技术,更进一步的处理浏览器兼容

测试代码:

复制代码
代码如下:

<!DOCTYPE html>
<html>
<head>
<title> 用条件注释判断浏览器版本,解决兼容问题 </title>
<meta charset="utf-8"/>
</head>
<body>
<!--[if IE]>只有IE6,7,8,9浏览器显示(IE10标准模式不支持)<hr/><![endif]-->
<!--[if !IE]><!-->只有非IE浏览器显示(不包括IE10)<hr/><!--><![endif]-->
<!--[if IE 9]>IE9浏览器显示<hr/><![endif]-->
<!--[if IE 8]>IE8浏览器显示<hr/><![endif]-->
<!--[if IE 7]>IE7浏览器显示<hr/><![endif]-->
<!--[if IE 6]>IE6浏览器显示<hr/><![endif]-->
<!--[if lt IE 10]>IE10以下版本浏览器显示(不包括IE10)<hr/><![endif]-->
<!--[if lte IE 9]>IE9及IE9以下版本浏览器显示(包括IE9)<hr/><![endif]-->
<!--[if gt IE 6]>IE6以上版本浏览器显示(不含IE6)<hr/><![endif]-->
<!--[if gte IE 7]>IE7及IE7以上版本浏览器显示(包含IE7)<hr/><![endif]-->
</body>
</html>
更多精彩内容其他人还在看

Opera中国的WEB标准课程

网页制作Webjx文章简介:在这篇文章里,我要向大家介绍我和其他很多人花费数月时间开发的一个课程——Web标准课程,该课程旨在向大家提供Web设计和开发的坚实基础,无论读者是谁,此教程完全免费、可访问,并且不需要预备知识。当然,我主要还
收藏 0 赞 0 分享

CSS样式表渐进增强的基本概念

网页制作Webjx文章简介:如果你挠着头想弄清楚优雅降级和渐进增强的区别,我告诉你,这是视角问题。优雅降级和渐进增强都考虑网站在各种设备的各种浏览器上如何良好运转。两者区别的关键在于它们各自关注的焦点,以及这种关注对工作流程的影响
收藏 0 赞 0 分享

简单介绍Web Developer插件制作网页

网页制作Webjx文章简介:Firefox浏览器是一个良好支持W3C标准的开放源代码的浏览器,拥有Linux/Windows/Mac版本。因为Firefox浏览器良好支持W3C标准,所以使用Firefox来调试网页是非常好的。 Firefox浏览器是
收藏 0 赞 0 分享

CSS布局带来的巨大影响:CSS display属性值

网页制作Webjx文章简介:网页元素应用上那些与表格相关的display属性值后,能够模仿出与表格相同的特性。我将会在该文中给大家演示这种方法给CSS布局带来的巨大影响。 应原书编辑要求,先在文章顶部给出链接:《Everything You
收藏 0 赞 0 分享

用div css模拟表格对角线

这只是探讨一种CSS模拟表格对角线的用法,实际在工作中可能觉得这样做有点小题大作,这不是本主题讨论的重点。如果对此深以为然的朋友,请一笑过之 首先声明: 这只是探讨一种CSS模拟表格对角线的
收藏 0 赞 0 分享

IE Firefox在css中的差别 (部分)

1、单位问题 问题:任何距离的数值ie可以不加单位,ff必须要求写单位(0除外) 解决:写全单位如padding:0px; 2、水平居中 问题:div里的内容,ie默认为center,而ff默认left 解决:mairgin:0px auto; 3、高度问题
收藏 0 赞 0 分享

不用js可以实现信息提示效果

[code] <style> body { font:verdena; font-size:14px; color:#000 } h1{ font:verdena; font-size:22px; color:#000 } h2{ font:verdena;
收藏 0 赞 0 分享

CSS解决未知高度的垂直水平居中自适应问题

今天有人问起,晚上试着写出来,供参考; 以下代码兼容主流浏览器IE6、IE7、Firefox、Opera。 从最简单的开始………… 一、如何让一个DIV水平居中? 这个简单不作过多说明! [code] <st
收藏 0 赞 0 分享

CSS cursor 属性 -- 鼠标指针样式效果

取值: [ [<uri> ,]* [ auto | crosshair | default | pointer | move | e-resize | ne-resize | nw-resize | n-resize | se-resize | sw-resize |
收藏 0 赞 0 分享

css 简单区别ie6,ie7,firefox的写法

同一样式里可以这样 [code] margin:17px; FF +margin:17px; IE6 IE7 _margin:17px; IE6 [/code] 按这个顺序,刚好区分开三个浏览器
收藏 0 赞 0 分享
查看更多