IE条件注释是一种特殊的HTML注释,这种注释只有IE5.0及以上版本才能理解。比如普通的HTML注释是:

<!--This is a comment-->

  而只有IE可读的IE条件注释是:

<!--[if IE]> <![endif]-->

  “非IE条件注释”:

<!--[if !IE]>--> non-IE HTML Code <!--<![endif]-->

  “非特定版本IE条件注释”(很少用到):

<!--[if ! lt IE 7]><![IGNORE[--><![IGNORE[]]>Code for browsers that match the if condition<!--<![endif]-->

  简而言之,除了“Windows上的IE”之外的所有浏览器都会认为条件注释只是一段普通的HTML注释。你不能在CSS代码中使用条件注释。IE条件注释是很有用的对IE隐藏或者展现特定代码的方法,比起在CSS中用诡异的_/制造bug,利用IE条件注释来写CSS “hacks”是更合理的方法。通俗点,条件注释就是一些if判断,但这些判断不是在脚本里执行的,而是直接在html代码里执行的。

  1. 条件注释的基本结构和HTML的注释(<!– –>)是一样的。因此IE以外的浏览器将会把它们看作是普通的注释而完全忽略它们。
  2. IE将会根据if条件来判断是否如解析普通的页面内容一样解析条件注释里的内容。
  3. 条件注释使用的是HTML的注释结构,因此他们只能使用在HTML文件里,而不能在CSS文件中使用。

  从语法上看这是相当合法的普通HTML注释。任何浏览器都会认为<!–和–>之间的部分是注释从而忽略它。但是IE也会看到其中[if IE]>,从而开始解释接下来的代码直到遇到<![endif]。所以,下面这些代码不会显示在任何其他浏览器中面。

  通过“比较操作符”可以更灵活地对IE版本进行控制,用法是在IE前面加上“比较操作符”。合法的操作符如下:

  • lte:就是Less than or equal to的简写,也就是小于或等于的意思。
  • lt :就是Less than的简写,也就是小于的意思。
  • gte:就是Greater than or equal to的简写,也就是大于或等于的意思。
  • gt :就是Greater than的简写,也就是大于的意思。
  • ! :就是不等于的意思,跟javascript里的不等于判断符相同

  示例:

  • <!–[if gt IE 5.5]> / 如果IE版本大于5.5 /
  • <!–[if lte IE 6]> / 如果IE版本小于等于6 /
  • <!–[if !IE]> / 如果浏览器不是IE /

  虽然看上去当你第一次使用条件注释的时候会更费时,但当你以后调试你的CSS的时候,就会发现非常方便。用条件注释你只需要写一遍HTML注释,而用bug你需要为每一条规则都写上又长又丑的代码,而且还经常是为了改变其他的hacks而写的hacks。除此之外条件注释对于不支持它的任何浏览器而言都是合法的HTML注释。以下为条件注释与CSS hacks的一些区别:

  1. Hacks是基于浏览器的bug,而这些bug最终可能会被修复。
  2. 条件注释是基于IE特定代码,这种识别机制任何时候都不会被移除。
  3. 每一个浏览器都能看见你的hacks,或许下一个版本或者一个新的浏览器会在你的hacks代码上出错。
  4. 只有IE才能看到条件注释,通过额外的“IE文件”来影响页面,其他浏览器根本就不会下载它。
  5. Hacks不能确保对哪些浏览器生效而对哪些不,用的hacks越多,代码越混乱。
  6. 条件注释利用版本匹配使得作者可以容易地对特定版本写代码。

  本文链接:http://www.cnblogs.com/oooweb/p/ie-conditional-comments.html

使用条件注释判断 IE 浏览器版本的更多相关文章

  1. 条件注释判断IE浏览器版本

    lt,lte,gt,gte分别表示什么 lt:小于当前版本 lte:小于或等于当前版本,包括本身 gt:大于当前版本 gte:大于或等于当前版本,包括本身 使用格式 // 如IE9以下(不包括IE9加 ...

  2. 条件注释判断IE浏览器

    最近在用jquery 2.0 才知道已不支持IE6/7/8 但又不想换回 jquery 1.X; 找了一资料发现条件注释可以解决这个问题 这个也像程序中的条件判断,先来介绍几个单词lt :Less t ...

  3. HTML条件注释判断浏览器版本命令

    <!--[if !IE]><!--> 除IE外都可识别 <!--<![endif]--> <!--[if IE]> 所有的IE可识别 <![ ...

  4. 条件注释判断IE版本

    在学习Bootstra的时候看到这么一句话, <!-- HTML5 shim and Respond.js for IE8 support of HTML5 elements and media ...

  5. 这是一个用于判断IE浏览器版本的紧凑脚本

    这是一个用于判断IE浏览器版本的紧凑脚本IE浏览器,不管它们是什么版本,总是与Web标准有些不兼容.对于编码人员来说,这很困难.为了考虑IE的兼容性,不管它是写CSS还是写JS,IE通常都会被特殊处理 ...

  6. 判断IE浏览器版本

    //判断IE浏览器版本 function IEVersion() { var userAgent = navigator.userAgent; //取得浏览器的userAgent字符串 var isI ...

  7. 通过HTML条件注释判断IE版本的HTML语句详解<!--[if IE]> <![endif]-->

    我们常常会在网页的HTML里面看到形如[if lte IE 9]……[endif]的代码,表示的是限定某些浏览器版本才能执行的语句,那么这些判断语句的规则是什么呢?请看下文: <!--[if ! ...

  8. 条件注释+JS实现各版本IE浏览器className

    最近又开始忙了,项目中又遇到了可恶的IE Hack问题,各种Hack的看着让自己都觉得恶心,于是决定改造一番. 首先请出条件注释语句: 之前用过的条件注释 <!--[if lt IE 7]> ...

  9. IE条件注释,嗅探低版本IE用户,并引导升级

    一.科普IE条件注释 IE条件注释功能是条件注释是IE特有的一种功能,能对IE系列产品进行单独的XHTML代码处理,注意,主要是针对XHTML,而非CSS.条件注释功能非常强大,可以进行true和fa ...

随机推荐

  1. haproxy入门 (作用: 高可用性,负载平衡和用于TCP和基于http的应用程序的代理)

    安装haproxy 1:RPM包安装 yum install -y haproxy   2:编译安装 http://www.haproxy.org/#down   例如安装1.7.9版本 http:/ ...

  2. jdbc 2.0

    1.Statement接口不能接受参数 2.PreparedStatement接口在运行时接受输入参数 3.CallableStatement接口也可以接受运行时输入参数,当想要访问数据库存储过程时使 ...

  3. Qt多线程-总结QThread-QThreadPool-QtConcurrent

    版权声明:若无来源注明,Techie亮博客文章均为原创. 转载请以链接形式标明本文标题和地址: 本文标题:Qt多线程-总结QThread-QThreadPool-QtConcurrent     本文 ...

  4. week1词频统计

    使用java完成对txt格式的英文短片进行字符提取及统计. package nenu.softWareProject; import java.io.*;import java.util.*; pub ...

  5. JarvisOJ平台Web题部分writeup

    PORT51 题目链接:http://web.jarvisoj.com:32770/ 这道题本来以为是访问服务器的51号端口,但是想想又不太对,应该是本地的51号端口访问服务器 想着用linux下的c ...

  6. vbs习题

    练习题: 1.输入3个数,输出其中最大的那个值. Option Explicit Dim intA,intB,intC intA=CInt(InputBox("请输入a:")) i ...

  7. 微信小程序 功能函数 touch触摸计时

    shiFN:function(e){ // touchstart // touchend let that=this; let n=0; // 判断是开始还是结束的参数 let textTure = ...

  8. jQuery数据表格控件boostrap-table

    表格初始化js代码 function TableInit() { $("#edit").attr({"disabled":"disabled" ...

  9. bootstrap练习制作网页

    导航条 <nav class="navbar navbar-default"> <div class="container-fluid"> ...

  10. action动作类的生命周期

    创建:Action动作类每次请求的时候都会创建一个实例对象 销毁:当前action动作类的请求响应完后就消失了 跟javaweb中的HttpServletRequest的生命周期是一样的,struts ...