浏览器
双核浏览器
游戏浏览器
高速浏览器
视频浏览器
IE浏览器
浏览器周边
手机浏览器
安卓游戏
音乐舞蹈
养成游戏
儿童游戏
仙侠手游
角色扮演
策略塔防
休闲益智
动作冒险
飞行射击
模拟经营
体育运动
赛车竞速
网络游戏
安卓软件
资讯阅读
生活服务
影音播放
购物理财
效率办公
趣味娱乐
交通出行
学习教育
摄影图像
在线音乐
系统工具
网络购物
聊天工具
安全杀毒
图片编辑
新闻资讯
软件资讯
游戏资讯
手机教程
手游攻略
游戏攻略
软件教程
IE专区
安卓专题
文章合集
电脑软件专题
安全软件
杀毒软件
系统安全
加密解密
防火墙
远程控制
木马查杀
影音软件
网络电视
视频播放
音乐播放
视频制作
音频编辑
录音录像
教育学习
外语学习
教育管理
早教启蒙
在线课堂
成人教育
资格考试
聊天社交
即时通讯
视频聊天
在线交友
变声器
表情包
办公软件
线上会议
文档管理
行业管理
考勤打卡
应用工具
输入法
下载工具
时钟日历
记事本
文件管理
计算器
编程开发
编程工具
JAVA相关
加壳脱壳
编程控件
数据库
网页源码
软件开发
补丁制作
系统美化
桌面制作
壁纸大全
系统主题
屏幕保护
桌面辅助
系统软件
系统优化
备份还原
系统检测
U盘工具
磁盘工具
驱动补丁
图文处理
图片素材
图像处理
图片制作
图片压缩
电子相册
抓图工具
其他软件
电子书籍
模拟器
辅助工具
交通出行
手机管理
其他工具
素材下载
字体素材
PPT素材
专区
文章合集
软件
游戏
浏览器
安卓专题
软件
游戏
浏览器
IEfans/ IE专区/ IE动态 /CSS优先级和!important与IE6的BUG讨论及解决方案

CSS优先级和!important与IE6的BUG讨论及解决方案

2023-06-26 19:00:02 编辑:匿名

一、css的优先级
今天有人跟我说csshack中用!important来区分ie6,因为ie6不支持!important,是的在很早以前我也是用过这种方法写hack,但是后来就基本不用了。本来我对他谁的ie6不支持!important也没什么异议,可是正好在前几天正好用个这个!important属性解决了一个样式优先级的问题,而且是支持ie6的,这是为什么呢?到底ie6支不支持!important呢?
首先我们来看看!important这个属性的作用:!important是用来提升样式优先级的,我们知道样式是有优先级的。
我们先看看css的优先级的几个基本的规则
ID选择器(形如#id{})类选择器(形如.class{})标签选择器(形如body{}或者*{}),也就是ID选择器,类选择器,标签选择器中,ID选择器的优先级最高,标签选择器最低;选择器越具体优先级就越高,也就是

复制代码代码如下:
.classA.classB.classC{font-size:25px;}
.classB.classC{font-size:18px}
.classC{font-size:12px;}

这里.classA.classB.classC的优先级最高,.classC的优先级最低;
在同一个级别的情况下,最后指定的规则优先级就越高,也就是我们通常说的就近原则;
html中标签的style的属性都高于css文件中的选择器样式;
标有!important的规则有最高优先级。
我们可以利用!important使该样式优先级最高,例如:

复制代码代码如下:
#idA{font-size:20px}
.classA{font-size:12px;}

HTML代码:我要20像素的字

复制代码代码如下:
#idA{font-size:20px}
.classA{font-size:12px!important;}

HTML代码:我要12像素的字
这样.classA{font-size:12px!important;}这个样式就被引用了。
这种方法在优先级低的样式被优先级高的样式覆盖,又想引用优先级低的样式时候非常有用!
二、!important在ie6下的一个BUG
还是看这一段代码,

复制代码代码如下:
#idA{font-size:20px}
.classA{font-size:12px!important;}

HTML代码:我要12像素的字
大家可以在IE6下测试一下,文字是12像素的,也就是.classA{font-size:12px!important;}被引用了,这证明IE6是支持!important的。但是csshack中用!important来区分ie6,说ie6不支持!important又是怎么回事呢?
原来ie6下,在同一个选择器样式(即同一个大括号里面)下!important是无效的,例如:

复制代码代码如下:
.classA{font-size:68px!important;font-size:12px}

HTML代码:我要12像素的字
这里在ie6下是12像素的字,而其他浏览器下是68px的字,当然我们把样式改一下,!important放在后面,即

复制代码代码如下:
.classA{font-size:12px;font-size:68px!important;}

,那么ie6下和其他浏览器一样也是68px的字。也就是在同一个选择器样式(即同一个大括号里面)下!important被ie6彻底的无视了。
==============以下2009年8月1日更新==============
昨天在紫鼠的博客上也看到了关于!important的文章,说IE8在同一个选择器样式(即同一个大括号里面)下对!important的解析也是和IE6一样的,可是我测试的情况是IE8和IE6是不一样的,并留了言,今天我们讨论了这个问题,确实他写的他写的代码IE8和IE6对!important的解析是一样的。经过比较发现,他代码上没有DTD的声明,就是html代码上面的这一句:,神啊,在没有DTD的声明的情况下,在同一个选择器样式(即同一个大括号里面)下,IE6,IE7,IE8对!important的解析都是无效的。还有只要有声明文档类型的不管是html4,xhtml1.o,还有html5(),除去ie6有上面说的BUG外其他都是正常的。

相关推荐

浏览器更新