如何在 CSS 中引用带有空格的长类名?

Posted

技术标签:

【中文标题】如何在 CSS 中引用带有空格的长类名?【英文标题】:How to reference a long class name with spaces in CSS? 【发布时间】:2012-04-10 13:18:39 【问题描述】:

我正在尝试设置一些 Drupal 输出的样式。特别是,我试图引用一个具有超长名称(包括空格)的类。我不清楚这个的语法。原谅我,我是 CSS 新手。见:

<article id="node-38" class="node node-article node-teaser contextual-links-region node-even published with-comments node-teaser clearfix" about="/~actionin/node/38" typeof="sioc:Item foaf:Document">
    <header>
        <h2 property="dc:title" datatype=""><a href="/~actionin/node/38">National Nutrition Month: March 2012: “Get Your Plate in Shape”</a></h2> 

我最终想引用 H2 属性。我在想它会是这样的:

.node SOMETHING-HERE .header h2  declaration; 

我不能只引用节点,因为它在其他地方用于其他目的。我想具体一点,只选择这个类:

class="node node-article node-teaser contextual-links-region node-even published with-comments node-teaser clearfix"

【问题讨论】:

这实际上是 九个类,而不是一个中间有空格的类。 【参考方案1】:

使用点 (.) 可以将多个类组合为一个组

.node.node-article.node-teaser.contextual-links-region.node-even.published.with-comments.node-teaser.clearfix 
 ...

【讨论】:

这和在类之间使用逗号有什么区别? @LB-- 逗号表示 点表示 and 所以.node.node-article 表示一个元素需要同时具有两个类。其中.node, .node-article 表示它是否有至少其中之一。【参考方案2】:

也许我没有给你你需要的答案,但是类名不能包含空格

一个元素可以有多个类,这允许您将不同类的多个样式规则组合到一个元素上。

如果类属性中有空格,它会创建一个具有多个类的元素,并由空格分隔。

例如,如果你有这样的元素

<div class="big red outlined"></div>

你有这样的 CSS

.big 
  width: 1000px;
  height: 1000px;


.red 
  color: red;


.outlined 
  border: 1px solid black;

所有三种样式都将应用于单个 div 以使其变大、变红和带轮廓。

在您的情况下,您似乎正在尝试访问特定元素,这就是 id 属性的用途。请注意,该节点具有唯一的 id:

<article id="node-38">

您可以使用# 选择器在 CSS 中访问具有特定 id 的元素,如下所示

#node-38 
  //style goes here

在你的情况下,你可能想做这样的事情:

#node-38 .header h2  
  //style goes here 
 

【讨论】:

那么如何引用 H2 属性呢?有没有办法指定它属于具有 x、Y 和 Z 类的文章属性? @Doug 如果你想引用一个特定的元素,你应该使用id 属性,或者如果你想要一个可以应用于一组新元素的样式,你应该添加另一个类。 @Doug 你可以做article.x.Y.Z h2 这是一个类名覆盖...但是你说“类名不能包含空格”。 InDesign5+ 这样做,很多网页设计师...有一条 W3C 规则说“它是无效的”? @PeterKrauss According to the W3C html specification,“多个类名必须用空格字符分隔。”。如果类名可以包含空格,那么就没有办法消除单个类和多个类之间的歧义。因此,单个类名不能包含空格。【参考方案3】:

这些空间实际上是一个元素上的多个类,因此您的 &lt;article&gt; 标记具有“node”类和“node-article”类等等。

如果你有:

.node  background-color: black; 
.node-article  color: white; 

那么文章将有黑色背景和白色文本。两者都将被应用。

还请记住,您可以引用标签和 ID,因此要获得 H2,您可以这样做:

article header h2  .... 

#node-38 header h2  .... 

而且你也不一定需要其中的“标题”,这取决于你想要实现的目标。

如果你想用“node-article”类选择所有&lt;article&gt;标签的后代&lt;h2&gt;s,那么你可以这样做:

article.node-article h2

【讨论】:

【参考方案4】:
class="node node-article node-teaser contextual-links-region node-even published with-comments node-teaser clearfix"

上面一行总共包含 9 个类,因为它们之间有空格。所以,node 是一个类,node-article 是另一个类,依此类推。如果你想引用一个类,那么你应该像这样写

.nodebackground-color:red;

如果你想一次引用多个类并且想应用相同的样式,那么你可以这样写

.node, node-article, node-teaserbackground-color:red;

在这种情况下,三个单独的类 node node-article node-teaser 将具有相同的样式,背景颜色为红色。现在,如果您有多个具有相同类的元素,即article,那么所有具有相同类的文章都将具有相同的样式。要将样式应用于唯一元素,您可以 id 而不是 class 像 id="node-38" 并且您可以使用 CSS 将样式应用于此元素,例如

article#node-38background-color:red;

选择/引用带有 id="node-38" 的父元素文章的 h2 内部标题,您可以编写

article#node-38 header h2background-color:red;

【讨论】:

【参考方案5】:

当你定义一个带有类的元素时,包含空格实际上表示多个类。

那篇文章实际上应用了以下类:node、node-article、node-teaser、contextual-links-region、node-even、published、with-cmets、node-teaser 和 clearfix。

您可以在定位元素时使用这些类中的任何一个。如果我引用 H2 标签,我会做类似的事情

    article#node-38 header h2

这是一种比使用所有这些类更具体的定位方式。它的语法更短,更具体到您要设置样式的元素。

【讨论】:

以上是关于如何在 CSS 中引用带有空格的长类名?的主要内容,如果未能解决你的问题,请参考以下文章

处理带有空格的 CSS 类名

如何在php中包装没有空格的长文本[重复]

Less 不会应用带有点 (.) 的 Tailwind CSS 类名

CSS 显示模板类名中的额外空格

如何在 React 中运用 CSS

如何在角度2中动态更改css类名