在一个元素和特异性中使用多个类

发布于 2024-12-20 14:40:16 字数 198 浏览 2 评论 0原文

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

.foo {
    margin-right: 10px;
}


.bar {
    margin-right: 0px;
}

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

Just wondering when you use multiple classes on the one element such as class="foo bar" and those classes are setup as below:

.foo {
    margin-right: 10px;
}


.bar {
    margin-right: 0px;
}

Which class will have specificity? Will the margin be 10px or 0px?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(4

懵少女 2024-12-27 14:40:16

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

在这种情况下, CASE 1

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

class = 'red blue' 将是blue

CASE 2

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

在本例中,class = 'blue red' 将是red

工作示例

It works based on precedence within the CSS. Therefore the item to occur most recently will override any previous styles.

CASE 1

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

class = 'red blue' would be blue in this instance.

CASE 2

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

class = 'blue red' would be red in this instance.

Working Example

纵情客 2024-12-27 14:40:16

另外,如果您希望定位两个类的元素,您可以使用以下语法:

<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
}

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
}
信仰 2024-12-27 14:40:16

此外,更“具体”的类将覆盖更通用的类:

HTML:

你好世界!

使用以下 CSS:

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

注意到内部 div 仍然有 25px 的左边距吗?

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

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

查看

In addition, more "specific" class will override a more generic one:

HTML:

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

With the following CSS:

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

Notice how the inner div still has 25px margin to the left?

Also, read up on "!important" argument after providing the value:

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

Check out

月依秋水 2024-12-27 14:40:16

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

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

A single class name carries the same weight. In such a scenario, the rule that is listed first will be overwritten by the second, and hence, the element will have margin-right: 0px;

Here is a simple example using color instead of margin, because it's easier to visualize. The value specified in bar will be chosen by the browser.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文