IE浏览器单独写CSS样式的几种方法


Posted in HTML / CSS onOctober 14, 2014

因为万恶的 IE 存在各种的不标准,因此,在进行页面开发时不免要为 IE 单独写一些 CSS 。熟悉的方法有 IE hacks 和条件注释 CSS(Conditional Stylesheets),下面,不妨讨论一下这两种方法的优缺点。

IE hacks

举个例子,一个元素在其他浏览中的左边距是 30px ,而在 IE6 中则设置为 20px ,可以如下编写:

复制代码
代码如下:

.demo {margin-left: 30px; _margin-left: 20px; }

对我个人而言,喜欢条件注释 CSS 是胜于 IE hacks ,光是 IE hacks 里面带有“hacks”这个单词已经让人很不舒服,总觉得这是偏方,而且是很偏的解决方案。但是,IE hacks 也有它的优点——

1.CSS hacks 内嵌在普通的 CSS 里面,不会产生更多 HTTP 请求。
2.CSS hacks 内嵌在普通的 CSS 里面,编写时比较方便。

当然,它的缺点也很明显——

1.它是不标准的产物。
2.内嵌在其他 CSS 中,不便维护。尤其是当 hacks 的数量比较多的时候维护简直是个恶梦。
3.内嵌在其他 CSS 中,即使在非 IE 浏览器中也会被加载,浪费资源。

条件注释 CSS

同样是上面的例子,如果使用条件注释 CSS ,可以如下编写:

HTML:

复制代码
代码如下:

<!--[if IE 6 ]>
<link rel="stylesheet" type="text/css" media="all" href="./ie6.css" />
<![endif]-->

ie6.css

复制代码
代码如下:

.demo {margin-left: 20px; }

这里说明一下:条件注释是一种 IE 专有的、对常规(X)HTML 注释的 Miscrosoft 扩展。从 W3C 标准来说,它也是不标准的产物,但它是微软官方推出的针对 IE 进行开发的方式,并且条件注释对于其他所有浏览器作为常规注释出现,因此对其他浏览器无害。

条件注释 CSS 的好处是在独立的 CSS 文件中编写,能准确控制在特定的 IE 中加载,不会造成资源浪费,并且便于维护。缺点就是会产生多余的 HTTP 请求,尤其是当你需要兼容的 IE 版本很多的时候,你就需要产生多个 HTTP 请求,这对于本来通道数目就少的低版本 IE 来说无疑会影响页面加载速度。

显然,以上两种方法都不是很好的方法,因此,接下来介绍一种相对来说更好的解决方案。

条件注释 html 标签

这种方案也是利用条件注释,但并不是对 CSS 使用条件注释,而是对 html 标签使用条件注释,引入不同的 class ,从而区分不同的 IE 以及其他浏览器。例如:

复制代码
代码如下:

<!DOCTYPE html>
<!--[if IE 6 ]> <html class="ie6 lte_ie6 lte_ie7 lte_ie8" lang="zh-CN"> <![endif]-->
<!--[if lte IE 6 ]> <html class="lte_ie6 lte_ie7 lte_ie8" lang="zh-CN"> <![endif]-->
<!--[if lte IE 7 ]> <html class="lte_ie7 lte_ie8" lang="zh-CN"> <![endif]-->
<!--[if lte IE 8 ]> <html class="lte_ie8" lang="zh-CN"> <![endif]-->
<!--[if (gte IE 9)|!(IE)]><!--><html lang="zh-CN"><!--<![endif]-->

然后把针对特定 IE 的 CSS 加上相应的 class 并写在普通 CSS 文件里即可。例如上面的例子则可以在 CSS 文件里编写:

复制代码
代码如下:

.ie6 .demo {margin-left: 20px; }

这种方法吸收了条件注释表达式的好处同时又不会产生多余的 HTTP 请求,只是由于这些针对特定 IE 的 CSS 与普通的 CSS 放在一起,即不是相应的 IE 也会被加载,因此如果 CSS 数目比较多的话就会像使用 hacks 那样,造成浪费,开发者需要根据具体情况选择方法。
HTML / CSS 相关文章推荐
利用SVG和CSS3来实现一个炫酷的边框动画
Jul 22 HTML / CSS
CSS3 @keyframes简单动画实现
Feb 24 HTML / CSS
利用CSS3 动画 绘画 圆形动态时钟
Mar 20 HTML / CSS
HTML+CSS3+JS 实现的下拉菜单
Nov 25 HTML / CSS
web页面录屏实现
Feb 12 HTML / CSS
html5的websockets全双工通信详解学习示例
Feb 26 HTML / CSS
html5 更新图片颜色示例代码
Jul 29 HTML / CSS
使用canvas绘制贝塞尔曲线
Dec 17 HTML / CSS
HTML5利用约束验证API来检查表单的输入数据的代码实例
Dec 20 HTML / CSS
HTML5 Canvas实现360度全景图的示例代码
Jan 29 HTML / CSS
canvas绘制图片drawImage使用方法
Sep 15 HTML / CSS
HTML5在微信内置浏览器下右上角菜单的调整字体导致页面显示错乱的问题
Jan 19 HTML / CSS
CSS3 重置iphone浏览器按钮input,select等表单元素的默认样式
Oct 11 #HTML / CSS
css3 图片圆形显示 如何CSS将正方形图片显示为圆形图片布局
Oct 10 #HTML / CSS
css3弹性盒模型(Flexbox)详细介绍
Oct 08 #HTML / CSS
一款纯css3实现的动画加载导航
Oct 08 #HTML / CSS
css3 transform属性详解
Sep 30 #HTML / CSS
让IE支持CSS3的不完全兼容方案
Sep 19 #HTML / CSS
一款css实现的鼠标经过按钮的特效
Sep 11 #HTML / CSS
You might like
一个不易被发现的PHP后门代码解析
2014/07/05 PHP
PHP使用memcache缓存技术提高响应速度的方法
2014/12/26 PHP
PHP针对字符串开头和结尾的判断方法
2016/07/11 PHP
Yii使用DeleteAll连表删除出现报错问题的解决方法
2016/07/14 PHP
php 使用ActiveMQ发送消息,与处理消息操作示例
2020/02/23 PHP
javascript 动态添加事件代码
2008/11/30 Javascript
javascript 清除输入框中的数据
2009/04/13 Javascript
javascript dom 基本操作小结
2010/04/11 Javascript
浅谈Javascript如何实现匀速运动
2014/12/19 Javascript
js实现继承的5种方式
2015/12/01 Javascript
jQuery打字效果实现方法(附demo源码下载)
2015/12/18 Javascript
基于javascript实现checkbox复选框实例代码
2016/01/28 Javascript
ES6新特性之字符串的扩展实例分析
2017/04/01 Javascript
十个免费的web前端开发工具详细整理
2017/09/18 Javascript
php 解压zip压缩包内容到指定目录的实例
2018/01/23 Javascript
详解Vue开发微信H5微信分享签名失败问题解决方案
2018/08/09 Javascript
在VUE中实现文件下载并判断状态的方法
2019/11/08 Javascript
基于JS正则表达式实现模板数据动态渲染(实现思路详解)
2020/03/07 Javascript
vue实现两个组件之间数据共享和修改操作
2020/11/12 Javascript
Vue中引入svg图标的两种方式
2021/01/14 Vue.js
[00:55]2015国际邀请赛中国区预选赛5月23日——28日约战上海
2015/05/25 DOTA
python数据结构之二叉树的统计与转换实例
2014/04/29 Python
python之django母板页面的使用
2018/07/03 Python
Python3模拟curl发送post请求操作示例
2019/05/03 Python
Python读取stdin方法实例
2019/05/24 Python
python selenium登录豆瓣网过程解析
2019/08/10 Python
python实现的爬取电影下载链接功能示例
2019/08/26 Python
Python Numpy 控制台完全输出ndarray的实现
2020/02/19 Python
LINUX下线程,GDI类的解释
2016/12/14 面试题
女大学生毕业找工作的自我评价
2013/10/03 职场文书
机关门卫制度
2014/02/01 职场文书
校园安全广播稿
2014/02/08 职场文书
五五普法心得体会
2014/09/04 职场文书
个人作风建设剖析材料
2014/10/11 职场文书
党员廉政准则心得体会
2016/01/20 职场文书
2016优秀毕业生个人事迹材料
2016/02/29 职场文书