前一段时间在开发为派移动电源公司网站的过程中遇到了很多浏览器上的兼容性问题,最突出的是IE6和IE8的兼容问题,因为整个页面在IE6下正常,在IE8下出现一些错位现象纠结了很长时间,最后的解决办法就是分别为两个浏览器写两段不同的css代码,然后在header.php样式调用处加上IE浏览器版本判断语句即可。在这里,不得不感叹天朝下还在使用IE6的童鞋们,赶快升级成IE8吧,学习计算机的朋友们可以使用firefox或者chrome浏览器。普通浏览的可以使用搜狗、360等浏览器,但一定要把IE内核升级为IE8,升级下载链接(http://xiazai.zol.com.cn/detail/6/51973.shtml)。
在IE浏览器判断IE版本的语句中,主要有以下几条:
- <!–[if lte IE 6]>
- <![endif]–>
- IE6及其以下版本可见
- <!–[if lte IE 7]>
- <![endif]–>
- IE7及其以下版本可见
- <!–[if IE 6]>
- <![endif]–>
- 只有IE6版本可见
- <![if !IE]>
- <![endif]>
- 除了IE以外的版本
- <!–[if lt IE 8]>
- <![endif]–>
- IE8及其以下的版本可见
- <!–[if gte IE 7]>
- <![endif]–>
- IE7及其以下的版本可见
使用方法及其注意事项:
(1)可使用如下代码检测当前IE浏览器的版本(注意:在非IE浏览器中是看不到效果的)
- <!––[if IE]>
- <h1>您正在使用IE浏览器</h1>
- <!––[if IE 5]>
- <h2>版本 5</h2>
- <![endif]––>
- <!––[if IE 5.0]>
- <h2>版本 5.0</h2>
- <![endif]––>
- <!––[if IE 5.5]>
- <h2>版本 5.5</h2>
- <![endif]––>
- <!––[if IE 6]>
- <h2>版本 6</h2>
- <![endif]––>
- <!––[if IE 7]>
- <h2>版本 7</h2>
- <![endif]––>
- ![endif]––>
那如果当前的浏览器是IE,但版本比IE5还低,该怎么办呢,可以使用<!–[if ls IE 5]>,当然,根据条件注释只能在IE5+的环境之下,所以<!–[if ls IE 5]>根本不会被执行。
lte:就是Less than or equal to的简写,也就是小于或等于的意思。 - lt :就是Less than的简写,也就是小于的意思。
- gte:就是Greater than or equal to的简写,也就是大于或等于的意思。
- gt :就是Greater than的简写,也就是大于的意思。
- ! : 就是不等于的意思,跟javascript里的不等于判断符相同
(2)应该如何应用条件注释
本文一开始就说明了,因为IE各版本的浏览器对我们制作的WEB标准的页面解释不一样,具体就是对CSS的解释不同,我们为了兼容这些,可运用条件注释来各自定义,最终达到兼容的目的。比如:
- <!–- 默认先调用css.css样式表 –->
- <link rel=“stylesheet” type=“text/css” href=“css.css” />
- <!-–[if IE 7]>
- <!–- 如果IE浏览器版是7,调用ie7.css样式表- –>
- <link rel=“stylesheet” type=“text/css” href=“ie7.css” />
- <![endif]–->
- <!–-[if lte IE 6]>
- <!–- 如果IE浏览器版本小于等于6,调用ie.css样式表 -–>
- <link rel=“stylesheet” type=“text/css” href=“ie.css” />
- <![endif]–>
这其中就区分了IE7和IE6向下的浏览器对CSS的执行,达到兼容的目的。同时,首行默认的css.css还能与其他非IE浏览器实现兼容。
注意:默认的CSS样式应该位于HTML文档的首行,进行条件注释判断的所有内容必须位于该默认样式之后。
- <style type=“text/css”>
- body{
- background-color: #000;
- }
- </style>
- <!-–[if IE]>
- <style type=”text/css”>
- body{
- background-color: #F00;
- }
- </style>
- <![endif]–->