21

只是想知道您何时在一个元素上使用多个类,例如class="foo bar",这些类的设置如下:

.foo {
    margin-right: 10px;
}


.bar {
    margin-right: 0px;
}

哪个类将具有特异性?边距是 10px 还是 0px?

4

4 回答 4

30

它基于 CSS 中的优先级工作。因此,最近出现的项目将覆盖任何以前的样式。

情况1

.foo  { background : red; }
.bar  { background : blue; }

class = 'foo bar'在这种情况下会是蓝色的。

案例二

.bar  { background : blue; }
.foo  { background : red; } 

class = 'foo bar'在这种情况下会是红色的。

工作示例

于 2011-12-09T20:50:17.113 回答
6

Also, if you wish to target the element who has only both classes, you can use this syntax:

<ul>
  <li class="foo first">Something</li>
  <li class="foo">Somthing else</li>
  <li class="foo">Something more</li>
</ul>

.foo {
  color: red;
}
.foo.first {
  color: blue
}
于 2012-06-04T15:50:08.340 回答
4

单个类名具有相同的权重。在这种情况下,第一个列出的规则将被第二个覆盖,因此,该元素将具有margin-right: 0px;

这是一个使用而不是边距的简单示例color,因为它更容易可视化。中指定的值bar将由浏览器选择。

于 2011-12-09T20:50:23.523 回答
-2

此外,更“特定”的类将覆盖更通用的类:

HTML:

<div class="foo">
    <div class="bar">Hello World!</div>
</div>

使用以下 CSS:

.foo .bar { margin-left:25px }
.bar { margin-left:0px }

请注意内部 div 的左侧仍然有 25px 的边距?

此外,在提供值后阅读“!important”参数:

.bar { margin-left:0px!important }

查看

于 2011-12-09T20:59:51.963 回答