CSS忍者:安全的CSS hacks秘籍
创始人
2024-08-02 14:10:56
0

通过条件判断引入样式表

使我们能很容易在 IE 浏览器中通过条件注释语句加载指定样式表,而其他非 IE 内核浏览器则自动忽略这段蹩脚的 HTML注释。下面是一个例子:

  1.  
  2.  
  3.  

这段代码会导致 IE8、IE7、IE6 各自加载对应的样式文件。这事实上是非常牛逼的,条件注释给按浏览器加载各自不同的样式表提供了可能,但同时需要维护多个样式文件。

CSS hacks

这事实上是个龌龊的做法,能解决问题又不符合规范,看着也很头大。大部分人看着它只能束手无策而又逼不得已。现在可以来简单回顾一下IE 的 CSS hacks 常用的几个方法:

  1. _selector{property:value;} //IE6  
  2. *selector{property:value;} //IE6 & IE7  
  3. selector{property:value\9;} //IE6 & IE7 & IE8 

这个一般人都知道,就不多说了。但面临的一个现实问题是,\9 这个 hack 不只是针对 IE8 以及更老版本奏效,IE9 最终的发行版依旧会受到这个 hack 的影响。而 IE9 本身在 CSS 上的各种缺陷又是被修复的。如果将来 IE10、IE11 来了,那又怎么办?显然 \9 并不是一个严谨的安全的方案。

另外,采用不同的 X-UA-Compatible 模式也会影响不同版本的 IE 渲染差异。建议设置默认渲染模式如下:

  1. //标准 IE 模式 

那咋整呢?咋整咋整咋整?没事,下面还有更绝的。

通过条件判断插入指定类

既然可以用条件判断,那么直接为不同 IE 版本输出单独用于设定样式的钩子类好了。直接上代码:

  1.  // 非 IE 浏览器的情况,不添加任何作用类  
  2.  
  3.  
  4.  

如果要是 IE9、IE10 再想出现什么神奇的行为艺术的话,继续添加指定作用类就行咯。并且你的样式表也会变得异常干净、整洁、美观:

  1. .selector { color: black; }  
  2. .ie8 .selector { color: green; } /* IE8 */  
  3. .ie7 .selector { color: blue; } /* IE7 */  
  4. .ie6 .selector { color: red; } /* IE6 */ 

当然,标准模式的 X-UA-Compatible 声明还是必须的,以防页面被强制按照低版本的 IE 来渲染。

关于条件注释的参考资料:http://msdn.microsoft.com/en-us/library/ms537512.aspx

【编辑推荐】

  1. 44个惊人的超炫CSS3动画演示
  2. 六月最佳的HTML 5和CSS3教程强烈推荐
  3. HTML 5+CSS3携手实现Mobie App的瓶颈
  4. CSS的未来:一些试验性CSS属性
  5. 一个超棒的CSS小工具:最佳Web性能优化

相关内容

热门资讯

如何允许远程连接到MySQL数... [[277004]]【51CTO.com快译】默认情况下,MySQL服务器仅侦听来自localhos...
如何利用交换机和端口设置来管理... 在网络管理中,总是有些人让管理员头疼。下面我们就将介绍一下一个网管员利用交换机以及端口设置等来进行D...
施耐德电气数据中心整体解决方案... 近日,全球能效管理专家施耐德电气正式启动大型体验活动“能效中国行——2012卡车巡展”,作为该活动的...
Windows恶意软件20年“... 在Windows的早期年代,病毒游走于系统之间,偶尔删除文件(但被删除的文件几乎都是可恢复的),并弹...
20个非常棒的扁平设计免费资源 Apple设备的平面图标PSD免费平板UI 平板UI套件24平图标Freen平板UI套件PSD径向平...
德国电信门户网站可实时显示全球... 德国电信周三推出一个门户网站,直观地实时提供其安装在全球各地的传感器网络检测到的网络攻击状况。该网站...
着眼MAC地址,解救无法享受D... 在安装了DHCP服务器的局域网环境中,每一台工作站在上网之前,都要先从DHCP服务器那里享受到地址动...
为啥国人偏爱 Mybatis,... 关于 SQL 和 ORM 的争论,永远都不会终止,我也一直在思考这个问题。昨天又跟群里的小伙伴进行...