IE6下CSS多类选择符优先级不起作用的bug分析及解决方法
发布时间:2013-01-23 14:28:54 作者:佚名
我要评论
IE6,这个前端开发的梦魇总是在你不经意的时候给你捅一刀,在ie6环境下CSS多类选择符优先级不起作用,多么的令人气愤啊,经过测试:IE6下这种类组合的优先级不如单个类, 感兴趣的朋友可以了解下啊
IE6,这个前端开发的梦魇总是在你不经意的时候给你捅一刀。这次碰到的问题是CSS多类选择符的问题。IE6不支持,我们来看一段这样简单的代码:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>IE6多类选择符优先级不起作用的bug</title>
<style type="text/css">
div{display:block;width:400px;height:200px;}
#id1.c1{background:#ccc;}
.c2.c3{border:1px solid red; /* 边框红色 */}
.c3{border:1px dashed #00F; /* 边框蓝色 */}
</style>
</head>
<body>
<div id="id1" class="c1">a</div>
<div id="id2" class="c2 c3">b</div> <!--IE6下,边框为蓝色,其他浏览器都为红色-->
</body>
</html>
形如 #id1.c1 的选择符,支持性很好,IE6及以上,Firefox,opera,safari等浏览器都支持。形如 .c2.c3 的选择符,在IE6下不支持,后一个类名会覆盖前一个类名,即直接识别为 .c3 ,也就是说,IE6下这种类组合的优先级不如单个类。
所以开发中用多类来组合实现css效果的时候,注意IE6的这个问题。最好的方法就是,不要用这种类组合的形式。
实例二:
提示:您可以先修改部分代码再运行
形如#first.son的选择符,支持性很好,ie6及以上,ff,opera,safari等浏览器都支持。
形如.second.son的选择符,在ie6下不支持,后一个类名会覆盖前一个类名,即直接识别为.son
其实可以利用第二条情况,作为一个针对ie6的hack来使用:
.xxx.son{} 只要.xxx部分是一个不存在的类名。就可以屏蔽ie6之外的浏览器。只对ie6下的.son有效。
这个hack的效果同 selector{ _property:value; } 大体一致。
复制代码
代码如下:<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>IE6多类选择符优先级不起作用的bug</title>
<style type="text/css">
div{display:block;width:400px;height:200px;}
#id1.c1{background:#ccc;}
.c2.c3{border:1px solid red; /* 边框红色 */}
.c3{border:1px dashed #00F; /* 边框蓝色 */}
</style>
</head>
<body>
<div id="id1" class="c1">a</div>
<div id="id2" class="c2 c3">b</div> <!--IE6下,边框为蓝色,其他浏览器都为红色-->
</body>
</html>
形如 #id1.c1 的选择符,支持性很好,IE6及以上,Firefox,opera,safari等浏览器都支持。形如 .c2.c3 的选择符,在IE6下不支持,后一个类名会覆盖前一个类名,即直接识别为 .c3 ,也就是说,IE6下这种类组合的优先级不如单个类。
所以开发中用多类来组合实现css效果的时候,注意IE6的这个问题。最好的方法就是,不要用这种类组合的形式。
实例二:
提示:您可以先修改部分代码再运行
形如#first.son的选择符,支持性很好,ie6及以上,ff,opera,safari等浏览器都支持。
形如.second.son的选择符,在ie6下不支持,后一个类名会覆盖前一个类名,即直接识别为.son
其实可以利用第二条情况,作为一个针对ie6的hack来使用:
.xxx.son{} 只要.xxx部分是一个不存在的类名。就可以屏蔽ie6之外的浏览器。只对ie6下的.son有效。
这个hack的效果同 selector{ _property:value; } 大体一致。
相关文章
- 作为一个Web开发者,掌握必要的前台技术也是很重要的特别是CSS选择器的优先级问题,为了广大web爱好者可以更好的解决问题,这里就CSS选择器的优先级问题做了一些总结2013-08-01
- 大家都知道,CSS的中文名叫做层叠样式表,而CSS在控制样式的时候,有三种引入方式,这里简单介绍下CSS控制样式的三种方式2013-07-22
- 所谓CSS优先级,即是指CSS样式在浏览器中被解析的先后顺序,既然样式有优先级,那么就会有一个规则来约定这个优先级,而这个“规则”就是本次所需要讲的重点2013-04-22
- 所谓CSS优先级,即是指CSS样式在浏览器中被解析的先后顺序,CSS是层叠样式表(Cascading Style Sheets)的简称,我们能通过CSS为文档设置丰富且易于修改的外观2013-04-19
- css样式优先级是按照样式表中出现顺序还是按照元素中class或者id值的声明顺序呢,这个问题貌似一直存在我们身边却一直无从选择,接下来用实例为大家说明下,到底哪个高点,2013-03-14
- 多重样式(Multiple Styles): 如果外部样式、内部样式和内联样式同时应用于同一个元素,就是使多重样式的情况.有个例外的情况,就是如果外部样式放在内部样式的后面,则2013-02-01
CSS优先级和!important与IE6的BUG讨论及解决方案
本来我对他谁的ie6不支持!important也没什么异议,可是正好在前几天正好用个这个!important属性解决了一个样式优先级的问题,而且是支持ie6的,这是为什么呢?到底ie6支不2013-01-23- css样式的优先级是一个庞杂的知识点,我甚至觉得它的庞杂可以与“浮动”以及“框模型”相提并论,今天就利用点时间把我所了解的写下来,大家共同进步2013-01-11
- css基础选择器有标签选择器、类选择器、id选择器、通用选择器,本文将深入介绍css选择器优先级,这会给正在解决优先级问题的朋友,带来些许帮助2012-12-04
- CSS的调用方式一共有4种,分别是:行内样式,内嵌式,link链接式,@import导入式,在同级的前提下,我们可以按样就近原则来理解他们的优先级,则越前定义的样式,会被后面2010-07-23


最新评论