<!--[if !IE]><!--> 除IE外都可识别 <!--<![endif]--><!--[if IE]> 所有的IE可识别 <![endif]--><!--[if IE 6]> 仅IE6可识别 <![endif]--><!--[if lt IE 6]> IE6以下版本可识别 <![endif]-->
<!--[if lte IE 6]> IE6以及IE6以下版本可识别 <![endif]-->
<!--[if gte IE 6]> IE6以及IE6以上版本可识别 <![endif]--><!--[if IE 7]> 仅IE7可识别 <![endif]--><!--[if lt IE 7]> IE7以下版本可识别 <![endif]--><!--[if gte IE 7]> IE7以及IE7以上版本可识别 <![endif]--><!--[if IE 8]> 仅IE8可识别 <![endif]--><!--[if IE 9]> 仅IE9可识别 <![endif]-->
如:
<!--[if IE 9]>
        <link rel="stylesheet" type="text/css" href="ie9.css"/>
<![endif]-->
<!--[if IE 9]>
        <style>
            .header-menu>li{
                color:#fff;
            }
        </style>
<![endif]-->

IE10/11不支持条件性注释后的

替代方法


专门针对IE的条件性注释(Conditional comments)是个很奇葩的东西,它是专门给IE浏览器准备的,因为其它浏览器根本不能识别这种标记。之所以需要这种东西,是因为IE实现的网页渲染效果和其它浏览器又很多出入,使用条件性注释可以区别对待的针对浏览器编写CSS等代码。
<!--[if IE]>
<link href="ie.css" rel="stylesheet">
<![endif]-->
<!--[if IE6]>
<style type="text/css">
/* styles for IE6 goes here */
</style>
<![endif]-->
<!--[if lt IE7]>
<style type="text/css">
/* styles for IE7 goes here */
</style>
<![endif]-->
<!--[if lte IE8]>
<style type="text/css">
/* styles for IE8 goes here */
</style>
<![endif]-->
<!--[if gt IE9]>
<style type="text/css">
/* styles for IE9 goes here */
</style>
<![endif]-->
<!--[if gte IE9]>
<style type="text/css">
/* styles for IE9 goes here */
</style>
<![endif]-->
<!--[if !IE]> -->
<style type="text/css">
/* styles goes here but should not appear in IE5-9 */
</style>
<!-- <![endif]-->
但当IE的版本到到达10/11后,开始不支持这种条件性注释(MSDN上的说明)。说来也合情合理,从IE9开始,IE开始被WEB开发人员接受,很多人将IE9后的浏览器和火狐、谷歌浏览器统称为现代浏览器,因为它们开始实现新的HTML5和CSS3统一标准。但愿望是美好的,现实却是残酷的,很多WEB开发人员在开发实践中发现,同一个CSS在IE9/10/11上显示的效果和其它浏览器渲染的效果还是不一样。也就是说,我们还是需要条件性注释。那么,在不支持条件性注释的IE10/11上,如何实现条件性注释的效果呢?

方法一:使用IE=EmulateIE9属性指示浏览器采用IE9渲染技术

IE9是支持条件性注释的。
<meta http-equiv="X-UA-Compatible" content="IE=EmulateIE9">
在html网页的head里加入上面的元标记,这样IE10/11就能识别条件性注释了,我们也就可以像IE6/7/8那样编写针对性的CSS代码了。但这样做有个弊端,很显然,浏览器这样就会才能IE9的渲染模式,而不是最新的IE10/11技术。

方法二:使用媒体查询语句+-ms-high-contrast属性

CSS的媒体查询语句(media query)是一种高级的CSS条件语句,它能根据一些属性和属性值计算判断CSS是否可以生效。在这里,我们要使用一个IE10/11独有的属性,它就是-ms-high-contrast,只有IE10/11实现了这个属性,它可以有两个值activenone,使用下面的媒体查询语句:
@media all and (-ms-high-contrast: none), (-ms-high-contrast: active) {/* IE10+ CSS styles go here */
}
火狐浏览器、谷歌浏览器不能识别这个属性,所以不会执行这个查询语句里的CSS,从而实现了条件性执行的效果。

方法三:使用Javascript判断浏览器的类型

先用JavaSCript判断是否是IE浏览器,如果是,就在页面的<html>标记上添加一个“ie”的类名:
var ms_ie = false;
var ua = window.navigator.userAgent;
var old_ie = ua.indexOf('MSIE ');
var new_ie = ua.indexOf('Trident/');if ((old_ie > -1) || (new_ie > -1)) {ms_ie = true;
}if ( ms_ie ) {document.documentElement.className += " ie";
}
有了这个标志性css class后,我们就可以在CSS里区别性的编写css代码了。
.testClass{/*这里写通用的css*/
}.ie .testClass{/*这里写专门针对IE的css*/
}
这三种方法都能实现在IE10/11里条件性注释的替代效果,各有各的使用场景,我们根据软件的运行环境来选择使用哪一种。

延伸阅读:        “浏览器内核”主要指渲染引擎(Rendering Engine),负责解析网页语法(如HTML、JavaScript)并渲染、展示网页。因此,所谓的浏览器内核通常也就是指浏览器所采用的渲染引擎,渲染引擎决定了浏览器如何显示网页的内容以及页面的格式信息。不同的浏览器内核对网页编写语法的解析也有所不同,因此同一网页在不同的内核浏览器里的渲染、展示效果也可能不同。  浏览器内核种类繁多,商用的加上非商业的免费内核,大约会超过10款,我们今天重点看一下目前主流的四大浏览器内核Trident、Gecko、WebKit以及Presto。  一、Trident内核(代表:Internet Explorer)  说起Trident,很多人都会感到陌生,但提起IE(Internet Explorer)则无人不知无人不晓,由于其被包含在全世界使用率最高的操作系统Windows中,得到了极高的市场占有率,所以我们又经常称其为IE内核。  Trident(又称为MSHTML),是微软开发的一种排版引擎。它在1997年10月与IE4一起诞生,一直在被不断地更新和完善。而且除IE外,许多产品都在使用Trident核心,比如Windows的Help程序、RealPlayer、Windows Media Player、Windows Live Messenger、Outlook Express等等都使用了Trident技术。  Trident实际上是一款开放的内核,Trident引擎被设计成一个软件模块,使得其他软件开发人员很容易将网页浏览功能加到他们自行开发的应用程序里,其接口内核设计相当成熟,因此涌现出许多采用IE内核而非IE的浏览器,但是Trident只能用于Windows平台。使用Trident渲染引擎的浏览器包括:IE、傲游、世界之窗浏览器、Avant、腾讯TT、Sleipnir、GOSURF、GreenBrowser和KKman等。  二、Gecko内核(代表:Mozilla Firefox)  Gecko是开放源代码、以C++编写的网页排版引擎,目前被Mozilla家族网页浏览器以及Netscape 6以后版本浏览器所使用。这款软件原本是由网景通讯公司开发的,现在则由Mozilla基金会维护。由于Gecko的特点是代码完全公开,因此,其可开发程度很高,全世界的程序员都可以为其编写代码,增加功能。因为这是个开源内核,因此受到许多人的青睐,采用Gecko内核的浏览器也很多,这也是Gecko内核虽然年轻但市场占有率能够迅速提高的重要原因。  Gecko排版引擎提供了一个丰富的程序界面以供与互联网相关的应用程序使用,例如网页浏览器、HTML编辑器、客户端/服务器等。虽然最初的主要对象是Mozilla的衍生产品,如Netscape和Mozilla Firefox,但是现在已有很多其他软件利用这个排版引擎。此外Gecko也是一个跨平台内核,可以在Windows、BSD、Linux和Mac OS X中使用。  正在和曾经使用Gecko引擎的浏览器有Firefox、网景6~9、SeaMonkey、Camino、Mozilla、Flock、Galeon、K-Meleon、Minimo、Sleipni、Songbird、XeroBank。Google Gadget引擎采用的就是Gecko浏览器引擎。  三、WebKit内核(代表:Safari、Chrome)  WebKit 是一个开放源代码的浏览器引擎(Web Browser Engine),WebKit最初的代码来自KDE的KHTML和KJS(它们均为开放源代码,都是自由软件,在GPL协议下授权)。所以WebKit也是自由软件,同时开放源代码。它的特点在于源码结构清晰、渲染速度极快。主要代表产品有Safari和Google的浏览器Chrome。  WebKit内核在手机上的应用也十分广泛,例如Google的Android平台浏览器、Apple的iPhone浏览器、Nokia S60浏览器等所使用的浏览器内核引擎,都是基于WebKit引擎的。 WebKit内核也广泛应用于Widget引擎产品,包括中国移动的BAE、Apple的Dashboard以及Nokia WRT在内采用的均为WebKit引擎。  四、Presto内核(代表:Opera)  Presto是由Opera Software开发的浏览器排版引擎,供Opera 7.0及以上使用。它取代了旧版Opera 4至6版本使用的Elektra排版引擎,包括加入动态功能,例如网页或其部分可随着DOM及Script语法的事件而重新排版。Presto的特点就是渲染速度的优化达到了极致,它是目前公认的网页浏览速度最快的浏览器内核,然而代价是牺牲了网页的兼容性。  Presto实际上是一个动态内核,与Trident、Gecko等内核的最大区别就在于脚本处理上,Presto有着天生的优势,页面的全部或者部分都能够在回应脚本事件时等情况下被重新解析。此外该内核在执行JavaScript时有着最快的速度,根据同等条件下的测试,Presto内核执行同等JavaScript所需的时间仅有Trident和Gecko内核的约1/3。Presto是商业引擎,了Opera以外较少浏览器使用Presto内核,这在一定程度上限制了Presto的发展。
(作者:天极软件责任编辑:杨玲)
参考网站:
http://www.webhek.com/post/conditional-comments-in-ie11-10.html
http://tools.yesky.com/19/34456519.shtml

css判断ie版本才引用样式或css文件相关推荐

  1. css中如何设置hr的样式?css hr标签多种样式(图文)

    在对html网页进行美化的时候,肯定少不了要用的hr标签进行修饰页面,但默认的hr标签样式对页面的修饰起不到什么好的作用,有经验的前端工作者就会通过使用css样式来对hr标签进行一些美化的操作.那么如 ...

  2. CSS中定义多个链接样式,在CSS中定义【导航栏】超链接样式

    1.案例css代码 .divcss5 a:link{ color:#F00}/* 链接默认为红色 */ .divcss5 a:hover{ color:#000}/* 鼠标悬停黑色 */ .divcs ...

  3. 提交按钮css加样式,用CSS美化按钮(button)

    ? 我们用 A 包含一个 SPAN 标签来实现此效果: HTML: 按钮文字? 设置按钮样式: CSS: ? 为按钮添加点击样式: CSS: ? 由于 IE 下点击后不能还原到默认状态,因此,我们需要 ...

  4. 转《针对不同版本的ie调用不同css样式》

    转<针对不同版本的ie调用不同css样式> 因为IE各版本的浏览器对我们制作的WEB标准的页面解释不一样,具体就是对CSS的解释不同,我们为了兼容这些,可运用条件注释来各自定义,最终达到兼 ...

  5. css 判断是iphone4s iphone5 加载不同样式

    css 判断是iphone4s iphone5 加载不同样式 @media (device-height:480px) and (-webkit-min-device-pixel-ratio:2){/ ...

  6. css判断iPhone样式

    css 判断是iphone4s iphone5 加载不同样式 1.@media (device-height:480px) and (-webkit-min-device-pixel-ratio:2) ...

  7. 解决:全局引用了低版本的avue,而有些功能却在后续版本才有的问题

    问题分析:全局引用了低版本的avue,而有些功能却在后续版本才有,我们直接用原生前端敲出来,似乎是可以的,但若遇到比较麻烦的效果,可能就得整个界面都得大调整.那么可能会直接想到直接升级全局版本不就行了 ...

  8. IE下判断IE版本的语句

    <!--[if lte IE 6]>  <![endif]-->  IE6及其以下版本可见  <!--[if lte IE 7]>  <![endif]--& ...

  9. HMTL判断ie版本

    html判断IE版本 1. <!--[if !IE]><!--> 除IE外都可识别 <!--<![endif]--> 2. <!--[if IE]> ...

最新文章

  1. NSException异常处理
  2. 数据库进阶系列之三:使用Logminer解析Oracle日志
  3. oracle rman 跨版本恢复 11.2.0.3- 11.2.0.4
  4. fwrite在任意位置写入文件,并可修改文件内容
  5. android camera2 采集,视频采集:Android平台基于Camera 2的实现
  6. 韩国韩亚航空数万份乘客身份信息被泄露
  7. linux佳入门教程,命令行基础工具的更佳替代品
  8. excel如何把顺序倒过来_在excel中怎么使文字颠倒顺序反过来显示呢?
  9. xctf攻防世界 MISC高手进阶区 MISCall
  10. SQL SERVER 窗口函数4 偏移函数:LAG、LEAD 、FIRST_VALUE、 LAST _VALUE、NTH_VALUE
  11. 文献阅读---多年生黑麦草种质中与耐热性相关的生理性状、分子标记和叶绿素分解代谢基因的自然变异
  12. 阿里P8、P9税后180W及以上到底是什么水平?
  13. Android存入mysql数据库中文乱码解决方法的超级坑
  14. MySQL优化之超大分页查询
  15. 电销企业外呼系统如何选最合适?
  16. A*寻路中第四种烘培寻路方法Recast Mesh方法:
  17. 巡云轻论坛系统 2.3 发布,新增话题收藏功能
  18. 博途中用的是c吗_S7-1500系列博途中使用SCL语言编程方法简介
  19. 微博登陆爬取用户影响力
  20. 互联网时代,政府如何应对网络舆情监测危机

热门文章

  1. 记一次关键字引起的数据库错误
  2. 虚拟机linux下扩充硬盘的方法
  3. Android 通过okhttp + jsoup 爬虫爬取网页小说
  4. shell 脚本阅读之一
  5. 使用xhshell 7 链接VMware虚拟机
  6. linux版drastic模拟器设置,NDS模拟器如何设置?怎样配置nds模拟器NO$GBA?
  7. vb与oracle数据库连接,vb.net 如何与oracle数据库连接
  8. 百威软件无法远程服务器地址,百威9000商业POS网络版如何安装
  9. 新浪看点自媒体运营技巧详解!
  10. 网络流——最大流EK算法讲解