CSS多个类属性覆盖

时间:2011-11-14 20:02:50

标签: css

如果我有一个定义的样式类:

.myclass{
    //bunch of other stuff
    float:left;
}

我定义了另一个类:

.myclass-right{
    float:right;
}

我以这种方式定义div:

<div class="myclass myclass-right"></div>

div会继承myclass中的所有内容,但会将float属性覆盖为float:对吗?这就是我期望发生的事情。还有点想知道是否有任何跨浏览器的含义(良好的浏览器与IE 7或更高版本,f *** IE6)。

5 个答案:

答案 0 :(得分:32)

只要选择器具有相同的特异性(在这种情况下它们就是这样)并且.myclass-right样式块在.myclass之后定义,是的。

编辑扩展:类在html元素中出现的顺序无效,唯一重要的是选择器的特殊性以及选择器在样式表中的显示顺序。

答案 1 :(得分:14)

使用!important是一种方法。

.myclass-right{
    float:right !important;
}

此外,如果您对选择器更具体,它也应该覆盖

div.myclass-right{
    float:right;
}

答案 2 :(得分:12)

除了!important以及样式定义顺序之外,只想抛出另一个选项:你也可以把两者连在一起:

.myclass.myclass-right{float:right;}
.myclass{float:left;}

答案 3 :(得分:7)

只要在您的css文件中的其他类之后声明 {em},它就会起作用。

答案 4 :(得分:1)

在CSS属性发生冲突的情况下,样式表中另一个之后的CSS标记将优先。

换句话说 - 如果你想让某些类覆盖其他类 - 只需将它放在你的css文件的末尾。