IE对于大家来说一定很熟悉了,作为一名Web前端开发人员或者是说前端攻程师来说,浏览器的兼容问题一定处理过不少了,特别是IE6的兼容问题,如果你的用户是针对中国市场来说,IE6下的效果是必须得处理了,一个让人头痛而又不得不去面对的一件事情,特别是对于刚接触CSS的童子们,更让无从下手,那么今天我重新开始针对浏览器的兼容问题,说说一些我自己的经验,以及尽可能多的搜集相关经典问题的处理方法。希望能对有需要的朋友有所帮助。
中国古语——万物都是相生相克的。这句话用到我们写CSS的人身上也是一样的,不管在哪个浏览器下,出现了问题,首先要追究的问题是我们自己怕HTML结构和CSS样式有没有出问题,然后在看看是不是因为浏览器各自的解析不同而造成的。千万不要一看到IE出问题,就骂上了IE,其实人家并不是那么差劲,另外有一点也需要注意的就是,不要动不动就使用你知道的HACK手段来解决各浏览器的兼容问题。小生有自己的一个原则——“处理各浏览器的兼容问题,未到情非得以的情况下才使用HACK”。
开头来了一大段的开场白,下面我们就开始我们的旅行——浏览器兼容之旅的第一站:如何创建条件样式。
大家都知道<!-- -- >是HTML语言中的注释。它是一种添加到代码中的笔记,让自己或你的团队成员明白你写的是什么,写到什么时候等等信息,这种注释并不会在浏览器中显示出来,但大家在查看页面的源代码时可以看到这一部分,如下面的一个简单实例
复制代码代码如下:
<div id="header" >Header Section </div>
<!-- End Header Section Content -- >
那么我们在上面的基础是增加一个条件语句,我们就可以使用条件注释,我们在平时用到的就是IE的有条件注释。IE的有条件注释是一种专有的(非标准的)、对常规(X)HTML注释的Miscrosoft扩展。换句话说,有条件注释使你能够根据条件(比如说浏览器的版本)显示代码块。尽管是非标准的,但是有条件注释对于其他所有浏览器作为常规注释出现,因此本质上是无害的。有条件注释在 Windows 上的 IE5 中首次出现,并且得到了 Widnows 浏览器所有后续版本的支持。
那么为什么要创建条件样式呢?言外之意我们创建条件样式有什么好处呢?创建条件样式优点在于:可以将部分兼容代码识让符合条件的浏览器识别;其二让你的主要样式表整洁,清爽。不过大家要记住,虽然我们这里说的是创建有条件样式,但这种条件注释标签的使用不仅仅只能用于CSS,你可以应用在javaScript中,他们甚至可以在您的网站内容显示特殊的IE浏览器特定的消息。下面我们一起来看看其具体的应用,和使用方法。
调用条件样式的方法
我们调用条件样式方法和<link>标签一样,常常放置在<head>标签中。和前面所见识的普通注释不一样的是,这里需要加上条件判断,具体格式如下所示:
复制代码代码如下:
<!--[if IE] >
...
<![endif]-->
在具体使用条件注释语句之前,有几种条件注释属性含义我们必须要理解:
gt(greate than): 选择条件版本以上版本,不包含条件版本本身;
lt(less than): 这个刚好与gt相反,表示的是选择条件版本以下的版本,不包含条件版本自身;
gte(greate than or equal): 选择条件版本以上版本,并包含条件版本自身;
lte(less than or equal): 选择条件版本以下的版本,并包含条件版本自身;
!:选择条件版本以外所有版本,无论高低。
条件样式的使用方法
下面我们一起来看针对不同版本如何使用条件样式
1、支持所有IE浏览器
复制代码代码如下:
<!--[if IE] >
<link rel="stylesheet" href="all-ie-only.css" type="text/css"/ >
<![endif]-->
2、支持除IE外的所有浏览器
复制代码代码如下:
<!--[if !IE] >
<link rel="stylesheet" href="not-ie.css" type="text/css"/ >
<![endif]-->
上面是除了IE浏览器外所有浏览器都识别这个样式,另外CSS-TRICKS的《How To Create an IE-Only Stylesheet 》一文中提供了另一种写法:
复制代码代码如下:
<!--[if !IE] ><!-->
<link rel="stylesheet" type="text/css" href="not-ie.css" / >
<!--<![endif]-->
3、仅仅支持IE10
复制代码代码如下:
<!--[if IE 10] >
<link rel="stylesheet" type="text/css" href="ie10.css" >
<![endif]-->
4、仅仅支持IE9
复制代码代码如下:
<!--[if IE 9] >
<link rel="stylesheet" type="text/css" href="ie9.css" >
<![endif]-->
5、仅仅支持IE8
复制代码代码如下:
<!--[if IE 8] >
<link rel="stylesheet" type="text/css" href="ie8.css" >
<![endif]-->
6、仅仅支持IE7
复制代码代码如下:
<!--[if IE 7] >
<link rel="stylesheet" type="text/css" href="ie7.css" >
<![endif]-->
7、仅仅支持IE6
复制代码代码如下:
<!--[if IE 6] >
<link rel="stylesheet" type="text/css" href="ie6.css" >
<![endif]-->
8、支持IE10以下版本(IE9以及IE9以下版本)
这种方法是样式表使用在低于IE10的浏览器,换句话说除了IE10以外的所有IE版本都将被支持。
复制代码代码如下:
<!--[if lt IE 10] >
<link rel="stylesheet" type="text/css" href="ie9-and-down.css" >
<![endif]-->
也可以写成
复制代码代码如下:
<!--[if lte IE 9] >
<link rel="stylesheet" type="text/css" href="ie9-and-down.css" >
<![endif]-->
前面我们也说过了lt和lte的区别,lt表示小于版本号,不包括条件版本号本身;而lte是小于或等于版本号,包括了版本号自身。
9、支持IE9以下版本(IE8以及IE8以下版本)
复制代码代码如下:
<!--[if lt IE 9] >
<link rel="stylesheet" type="text/css" href="ie8-and-down.css" >
<![endif]-->
或:
复制代码代码如下:
<!--[if lte IE 8] >
<link rel="stylesheet" type="text/css" href="ie8-and-down.css" >
<![endif]-->
10、支持IE8以下版本(IE7以及IE7以下版本)
复制代码代码如下:
<!--[if lt IE 8] >
<link rel="stylesheet" type="text/css" href="ie7-and-down.css" >
<![endif]-->
或:
复制代码代码如下:
<!--[if lte IE 7] >
<link rel="stylesheet" type="text/css" href="ie7-and-down.css" >
<![endif]-->
11、支持IE7以下版本(IE6以及IE6以下版本)
复制代码代码如下:
<!--[if lt IE 7] >
<link rel="stylesheet" type="text/css" href="ie6-and-down.css" >
<![endif]-->
或:
复制代码代码如下:
<!--[if lte IE 6] >
<link rel="stylesheet" type="text/css" href="ie6-and-down.css" >
<![endif]-->
上面8——11这几种方法,使用的是低于(lt)和低于或等于(lte)的方法来判断,我们也可以使用大于(gt)和大于或等于(gte)达到上面的效果:
12、高于IE9的版本(IE10以及IE10以上版本)
复制代码代码如下:
<!--[if gt IE 9] >
<link rel="stylesheet" type="text/css" href="ie10-and-up.css" >
<![endif]-->
或:
复制代码代码如下:
<!--[if gte IE 10] >
<link rel="stylesheet" type="text/css" href="ie10-and-up.css" >
<![endif]-->
13、高于IE8的版本(IE9以及IE9以上版本)
复制代码代码如下:
<!--[if gt IE 8] >
<link rel="stylesheet" type="text/css" href="ie9-and-up.css" >
<![endif]-->
或:
复制代码代码如下:
<!--[if gte IE 9] >
<link rel="stylesheet" type="text/css" href="ie9-and-up.css" >
<![endif]-->
14、高于IE7的版本(IE8以及IE8以上版本)
复制代码代码如下:
<!--[if gt IE 7] >
<link rel="stylesheet" type="text/css" href="ie8-and-up.css" >
<![endif]-->
或:
复制代码代码如下:
<!--[if gte IE 8] >
<link rel="stylesheet" type="text/css" href="ie8-and-up.css" >
<![endif]-->
15、高于IE6的版本(IE7以及IE7以上版本)
复制代码代码如下:
<!--[if gt IE 6] >
<link rel="stylesheet" type="text/css" href="ie7-and-up.css" >
<![endif]-->
或:
复制代码代码如下:
<!--[if gte IE 7] >
<link rel="stylesheet" type="text/css" href="ie7-and-up.css" >
<![endif]-->
16、高于IE5.5的版本(IE6以及IE6以上版本)
复制代码代码如下:
<!--[if gt IE 5.5] >
<link rel="stylesheet" type="text/css" href="ie6-and-up.css" >
<![endif]-->
或:
复制代码代码如下:
<!--[if gte IE 6] >
<link rel="stylesheet" type="text/css" href="ie6-and-up.css" >
<![endif]-->
12-16几种方式刚好和8-11几方式相反,我们此处使用的是“gt”和“gte”,“gt”刚好和“lt”相反,表示的是大于条件版本号,不包括版本号本身;而“gte”则和"lte"相反,表示的是大于或等于条件版本号,包括了条件版本自身。一共罗列了16种条件注释所表达的含义,大家要呵以根据平时的应用对比参照一下,如果从未接触的朋友,可以动手尝试一下,动手能丰衣足食嘛。
上面就是展示了如何创建条件注释样式,大家可以根据自己的需求使用其中的一种或是多种,最后总结一下条件注释主要针对的是IE浏览器,所以我们也把他称作IE条件注释。另外IE条件注释只有IE5以上的版本才开始支持IE条件注释,所以“只有IE”才能识别,换句话说,只有IE5版本以上才能识别IE条件注释。如此一来,我们管理给IE兼容写的单独样式,就带来了极大的方便与好处。最后有一点需要提出的是:“IE的条件注释不单单针对样式,我们也可以针对于javascrit或者其字的注释说明”。最后我们在来看一个IE条件注释应用在javaScript的实例:
复制代码代码如下:
<!--[if IE 6] >
<script type="text/javascript" src="/UploadFiles/2021-03-30/pngfix.js"><script type="text/javascript" src="/UploadFiles/2021-03-30/ie6.js"><![endif]-->
这一节主要了解了如何在页面中创建IE条件注释,以及其带来的好处,和所起的作用。那么下一节将进入浏览器兼容之旅第二站:各浏览器的Hack写法让浏览器达到一致的渲染效果。感兴趣的朋友请观注本站的相关更新。
浏览器兼容,条件注释
《魔兽世界》大逃杀!60人新游玩模式《强袭风暴》3月21日上线
暴雪近日发布了《魔兽世界》10.2.6 更新内容,新游玩模式《强袭风暴》即将于3月21 日在亚服上线,届时玩家将前往阿拉希高地展开一场 60 人大逃杀对战。
艾泽拉斯的冒险者已经征服了艾泽拉斯的大地及遥远的彼岸。他们在对抗世界上最致命的敌人时展现出过人的手腕,并且成功阻止终结宇宙等级的威胁。当他们在为即将于《魔兽世界》资料片《地心之战》中来袭的萨拉塔斯势力做战斗准备时,他们还需要在熟悉的阿拉希高地面对一个全新的敌人──那就是彼此。在《巨龙崛起》10.2.6 更新的《强袭风暴》中,玩家将会进入一个全新的海盗主题大逃杀式限时活动,其中包含极高的风险和史诗级的奖励。
《强袭风暴》不是普通的战场,作为一个独立于主游戏之外的活动,玩家可以用大逃杀的风格来体验《魔兽世界》,不分职业、不分装备(除了你在赛局中捡到的),光是技巧和战略的强弱之分就能决定出谁才是能坚持到最后的赢家。本次活动将会开放单人和双人模式,玩家在加入海盗主题的预赛大厅区域前,可以从强袭风暴角色画面新增好友。游玩游戏将可以累计名望轨迹,《巨龙崛起》和《魔兽世界:巫妖王之怒 经典版》的玩家都可以获得奖励。
更新动态
- 凤飞飞《我们的主题曲》飞跃制作[正版原抓WAV+CUE]
- 刘嘉亮《亮情歌2》[WAV+CUE][1G]
- 红馆40·谭咏麟《歌者恋歌浓情30年演唱会》3CD[低速原抓WAV+CUE][1.8G]
- 刘纬武《睡眠宝宝竖琴童谣 吉卜力工作室 白噪音安抚》[320K/MP3][193.25MB]
- 【轻音乐】曼托凡尼乐团《精选辑》2CD.1998[FLAC+CUE整轨]
- 邝美云《心中有爱》1989年香港DMIJP版1MTO东芝首版[WAV+CUE]
- 群星《情叹-发烧女声DSD》天籁女声发烧碟[WAV+CUE]
- 刘纬武《睡眠宝宝竖琴童谣 吉卜力工作室 白噪音安抚》[FLAC/分轨][748.03MB]
- 理想混蛋《Origin Sessions》[320K/MP3][37.47MB]
- 公馆青少年《我其实一点都不酷》[320K/MP3][78.78MB]
- 群星《情叹-发烧男声DSD》最值得珍藏的完美男声[WAV+CUE]
- 群星《国韵飘香·贵妃醉酒HQCD黑胶王》2CD[WAV]
- 卫兰《DAUGHTER》【低速原抓WAV+CUE】
- 公馆青少年《我其实一点都不酷》[FLAC/分轨][398.22MB]
- ZWEI《迟暮的花 (Explicit)》[320K/MP3][57.16MB]