浏览器兼容之旅第一站:如何在页面中创建IE条件注释

IE对于大家来说一定很熟悉了,作为一名Web前端开发人员或者是说前端攻程师来说,浏览器的兼容问题一定处理过不少了,特别是IE6的兼容问题,如果你的用户是针对中国市场来说,IE6下的效果是必须得处理了,一个让人头痛而又不得不去面对的一件事情,特别是对于刚接触CSS的童子们,更让无从下手,那么今天我重新开始针对浏览器的兼容问题,说说一些我自己的经验,以及尽可能多的搜集相关经典问题的处理方法。希望能对有需要的朋友有所帮助。
中国古语万物都是相生相克的。这句话用到我们写CSS的人身上也是一样的,不管在哪个浏览器下,出现了问题,首先要追究的问题是我们自己怕HTML结构和CSS样式有没有出问题,然后在看看是不是因为浏览器各自的解析不同而造成的。千万不要一看到IE出问题,就骂上了IE,其实人家并不是那么差劲,另外有一点也需要注意的就是,不要动不动就使用你知道的HACK手段来解决各浏览器的兼容问题。小生有自己的一个原则处理各浏览器的兼容问题,未到情非得以的情况下才使用HACK。
开头来了一大段的开场白,下面我们就开始我们的旅行浏览器兼容之旅的第一站:如何创建条件样式。
大家都知道!-- -- 是HTML语言中的注释。它是一种添加到代码中的笔记,让自己或你的团队成员明白你写的是什么,写到什么时候等等信息,这种注释并不会在浏览器中显示出来,但大家在查看页面的源代码时可以看到这一部分,如下面的一个简单实例
复制代码代码如下:
div id="header" Header Section /div
!-- End Header Section Content --
那么我们在上面的基础是增加一个条件语句,我们就可以使用条件注释,我们在平时用到的就是IE的有条件注释。IE的有条件注释是一种专有的(非标准的)、对常规(X)HTML注释的Miscrosoft扩展。换句话说,有条件注释使你能够根据条件(比如说浏览器的版本)显示代码块。尽管是非标准的,但是有条件注释对于其他所有浏览器作为常规注释出现,因此本质上是无害的。有条件注释在 Windows 上的 IE5 中首次出现,并且得到了 Widnows 浏览器所有后续版本的支持。
那么为什么要创建条件样式呢?言外之意我们创建条件样式有什么好处呢?创建条件样式优点在于:可以将部分兼容代码识让符合条件的浏览器识别;其二让你的主要样式表整洁,清爽。不过大家要记住,虽然我们这里说的是创建有条件样式,但这种条件注释标签的使用不仅仅只能用于CSS,你可以应用在javaScript中,他们甚至可以在您的网站内容显示特殊的IE浏览器特定的消息。下面我们一起来看看其具体的应用,和使用方法。
调用条件样式的方法
我们调用条件样式方法和link标签一样,常常放置在head标签中。和前面所见识的普通注释不一样的是,这里需要加上条件判断,具体格式如下所示:
复制代码代码如下:
!--[if IE]
...
![endif]--
在具体使用条件注释语句之前,有几种条件注释属性含义我们必须要理解:
gt(greate than): 选择条件版本以上版本,不包含条件版本本身;
lt(less than): 这个刚好与gt相反,表示的是选择条件版本以下的版本,不包含条件版本自身;
gte(greate than or equal): 选择条件版本以上版本,并包含条件版本自身;
lte(less than or equal): 选择条件版本以下的版本,并包含条件版本自身;
!:选择条件版本以外所有版本,无论高低。
条件样式的使用方法
下面我们一起来看针对不同版本如何使用条件样式
1、支持所有IE浏览器
复制代码代码如下:
!--[if IE]
link rel="stylesheet" href="all-ie-only.css" type="text/css"/
![endif]--
2、支持除IE外的所有浏览器
复制代码代码如下:
!--[if !IE]
link rel="stylesheet" href="not-ie.css" type="text/css"/
![endif]--
上面是除了IE浏览器外所有浏览器都识别这个样式,另外CSS-TRICKS的《How To Create an IE-Only Stylesheet 》一文中提供了另一种写法:
复制代码代码如下:
!--[if !IE] !--
link rel="stylesheet" type="text/css" href="not-ie.css" /
!--![endif]--
3、仅仅支持IE10
复制代码代码如下:
!--[if IE 10]
link rel="stylesheet" type="text/css" href="ie10.css"
![endif]--
4、仅仅支持IE9
复制代码代码如下:
!--[if IE 9]
link rel="stylesheet" type="text/css" href="ie9.css"
![endif]--
5、仅仅支持IE8
复制代码代码如下:
!--[if IE 8]
link rel="stylesheet" type="text/css" href="ie8.css"
![endif]--
6、仅仅支持IE7
复制代码代码如下:
!--[if IE 7]
link rel="stylesheet" type="text/css" href="ie7.css"
![endif]--
7、仅仅支持IE6
复制代码代码如下:
!--[if IE 6]
link rel="stylesheet" type="text/css" href="ie6.css"
![endif]--
8、支持IE10以下版本(IE9以及IE9以下版本)
这种方法是样式表使用在低于IE10的浏览器,换句话说除了IE10以外的所有IE版本都将被支持。
复制代码代码如下:
!--[if lt IE 10]
link rel="stylesheet" type="text/css" href="ie9-and-down.css"
![endif]--
也可以写成
复制代码代码如下:
!--[if lte IE 9]
link rel="stylesheet" type="text/css" href="ie9-and-down.css"
![endif]--
前面我们也说过了lt和lte的区别,lt表示小于版本号,不包括条件版本号本身;而lte是小于或等于版本号,包括了版本号自身。
9、支持IE9以下版本(IE8以及IE8以下版本)
复制代码代码如下:
!--[if lt IE 9]
link rel="stylesheet" type="text/css" href="ie8-and-down.css"
![endif]--
或:
复制代码代码如下:
!--[if lte IE 8]
link rel="stylesheet" type="text/css" href="ie8-and-down.css"
![endif]--
10、支持IE8以下版本(IE7以及IE7以下版本)
复制代码代码如下:
!--[if lt IE 8]
link rel="stylesheet" type="text/css" href="ie7-and-down.css"
![endif]--
或:
复制代码代码如下:
!--[if lte IE 7]
link rel="stylesheet" type="text/css" href="ie7-and-down.css"
![endif]--
11、支持IE7以下版本(IE6以及IE6以下版本)
复制代码代码如下:
!--[if lt IE 7]
link rel="stylesheet" type="text/css" href="ie6-and-down.css"
![endif]--
或:
复制代码代码如下:
!--[if lte IE 6]
link rel="stylesheet" type="text/css" href="ie6-and-down.css"
![endif]--
上面811这几种方法,使用的是低于(lt)和低于或等于(lte)的方法来判断,我们也可以使用大于(gt)和大于或等于(gte)达到上面的效果:
12、高于IE9的版本(IE10以及IE10以上版本)
复制代码代码如下:
!--[if gt IE 9]
link rel="stylesheet" type="text/css" href="ie10-and-up.css"
![endif]--
或:
复制代码代码如下:
!--[if gte IE 10]
link rel="stylesheet" type="text/css" href="ie10-and-up.css"
![endif]--
13、高于IE8的版本(IE9以及IE9以上版本)
复制代码代码如下:
!--[if gt IE 8]
link rel="stylesheet" type="text/css" href="ie9-and-up.css"
![endif]--
或:
复制代码代码如下:
!--[if gte IE 9]
link rel="stylesheet" type="text/css" href="ie9-and-up.css"
![endif]--
14、高于IE7的版本(IE8以及IE8以上版本)
复制代码代码如下:
!--[if gt IE 7]
link rel="stylesheet" type="text/css" href="ie8-and-up.css"
![endif]--
或:
复制代码代码如下:
!--[if gte IE 8]
link rel="stylesheet" type="text/css" href="ie8-and-up.css"
![endif]--
15、高于IE6的版本(IE7以及IE7以上版本)
复制代码代码如下:
!--[if gt IE 6]
link rel="stylesheet" type="text/css" href="ie7-and-up.css"
![endif]--
或:
复制代码代码如下:
!--[if gte IE 7]
link rel="stylesheet" type="text/css" href="ie7-and-up.css"
![endif]--
16、高于IE5.5的版本(IE6以及IE6以上版本)
复制代码代码如下:
!--[if gt IE 5.5]
link rel="stylesheet" type="text/css" href="ie6-and-up.css"
![endif]--
或:
复制代码代码如下:
!--[if gte IE 6]
link rel="stylesheet" type="text/css" href="ie6-and-up.css"
![endif]--
12-16几种方式刚好和8-11几方式相反,我们此处使用的是gt和gte,gt刚好和lt相反,表示的是大于条件版本号,不包括版本号本身;而gte则和lte相反,表示的是大于或等于条件版本号,包括了条件版本自身。一共罗列了16种条件注释所表达的含义,大家要呵以根据平时的应用对比参照一下,如果从未接触的朋友,可以动手尝试一下,动手能丰衣足食嘛。
上面就是展示了如何创建条件注释样式,大家可以根据自己的需求使用其中的一种或是多种,最后总结一下条件注释主要针对的是IE浏览器,所以我们也把他称作IE条件注释。另外IE条件注释只有IE5以上的版本才开始支持IE条件注释,所以只有IE才能识别,换句话说,只有IE5版本以上才能识别IE条件注释。如此一来,我们管理给IE兼容写的单独样式,就带来了极大的方便与好处。最后有一点需要提出的是:IE的条件注释不单单针对样式,我们也可以针对于javascrit或者其字的注释说明。最后我们在来看一个IE条件注释应用在javaScript的实例:
复制代码代码如下:
!--[if IE 6]
script type="text/javascript" src="js/pngfix.js" /script
script type="text/javascript" src="js/ie6.js" /script
![endif]--
这一节主要了解了如何在页面中创建IE条件注释,以及其带来的好处,和所起的作用。那么下一节将进入浏览器兼容之旅第二站:各浏览器的Hack写法让浏览器达到一致的渲染效果。感兴趣的朋友请观注本站的相关更新。
相关内容
IE9版本以下ajax 跨域问题可行解决方法
IE9版本以下ajax 跨域问题可行解决方法,跨域问题,解决方法,提...
ie10 css hack 条件注释等兼容方式整理
ie10 css hack 条件注释等兼容方式整理,注释,条件,支持,方法,...
IE7.0以下版本列表li中的元素错位一个上一个下
IE7.0以下版本列表li中的元素错位一个上一个下的解决方法,元...
padding ie 不兼容问题
padding ie 不兼容问题,不兼容,使用说明,识别,情况,都不,这种...
js判断ie版本号的简单实现代码
js判断ie版本号的简单实现代码,版本号,版本,方法,简单实现,浏...
css IE8 兼容问题的汇总
css IE8 兼容问题的汇总,兼容问题,支持,浏览器,css,red,br,Fi...
修复网页在IE8 下的显示兼容问题
修复网页在IE8 下的显示兼容问题,网页,显示,修复,重写,兼容问...
IE6,IE7,IE8 css bug搜集及浏览器兼容性问题解
IE6,IE7,IE8 css bug搜集及浏览器兼容性问题解决方法汇总,复...
CSS多浏览器兼容性(IE和Firefox)技巧大全推荐
CSS多浏览器兼容性(IE和Firefox)技巧大全推荐,复制,设置,元素...
让IE9以下版本的浏览器兼容HTML5的方法
让IE9以下版本的浏览器兼容HTML5的方法,文件,调用,元素,版本,...
css:fixed定位兼容不同系列不同版本的浏览器包
css:fixed定位兼容不同系列不同版本的浏览器包括IE6.0,浏览器...
关于IE7 z-index的浏览器兼容性问题完美解决方
关于IE7 z-index的浏览器兼容性问题完美解决方案,性问题,浏览...
剪映文字怎么复制粘贴(剪映文字版教程)
剪映文字怎么复制粘贴(剪映文字版教程),教程,文字,复制,粘贴,...
如何快速复制360图书馆中的文章?
如何快速复制360图书馆中的文章?,复制,快速,个人图书馆,教程,...
360图书馆中的文章怎么快速复制 快速复制360图
360图书馆中的文章怎么快速复制 快速复制360图书馆中的文章...