乐闻世界logo
搜索文章和话题

CSS 如何匹配 class 类名以特定字符串开头的所有元素?

7 个月前提问
3 个月前修改
浏览次数88

5个答案

1
2
3
4
5

在CSS中,如果您想匹配所有class类名以特定字符串开头的元素,您可以使用属性选择器和一个特定的匹配模式。这个模式是^=,它用于选择属性值以指定内容开头的元素。

例如,假如您想匹配所有class名以intro开头的元素,您的CSS规则将如下所示:

css
[class^="intro"] { /* CSS样式 */ }

在这个例子中,任何class属性值以intro开头的元素都会被选中,并应用这里定义的CSS样式。

需要注意的是,class属性可能包含多个值,比如class="intro-text left-align"。在这种情况下,上面的选择器就不会匹配到该元素,因为它期望intro是属性值的开头部分。

如果我们想确保即使在含有多个class值的情况下也能匹配,我们应该在属性选择器中加上空格,以匹配任何包含以特定字符串开头的class的元素。下面的CSS规则展示了如何这样做:

css
[class^="intro"], [class*=" intro"] { /* CSS样式 */ }

在这里,第一个选择器 [class^="intro"] 是匹配任何以intro作为第一个class名的元素(例如class="intro-text")。第二个选择器 [class*=" intro"](注意class值前的空格)是为了匹配任何class属性中有一个以空格开头紧接intro的值的元素(例如class="someclass intro-text")。

这种方法确保了无论intro出现在class属性值的哪个位置,只要它是一个独立的单词且以intro开始,该元素都会被选中并应用样式。

举个例子,如果我们想为所有以intro开头的class名的元素应用一个特定的背景颜色和字体样式,可以这样写:

css
[class^="intro"], [class*=" intro"] { background-color: #f0f0f0; font-style: italic; }

这段CSS会选择所有class名以intro开头的元素并给它们设置浅灰色背景和斜体字。

2024年6月29日 12:07 回复

以下应该可以解决问题:

shell
div[class^='myclass'], div[class*=' myclass']{ color: #F00; }

编辑:*按照 David 的建议添加通配符 ( )

2024年6月29日 12:07 回复

这不是问题的直接答案,但我建议在大多数情况下简单地为每个元素设置多个类:

shell
<div class="myclass one"></div> <div class="myclass two"></div> <div class="myclass three"></div>

通过这种方式,您可以为所有myclass元素设置规则,然后为onetwo和设置更具体的规则three

shell
.myclass { color: #f00; } .two { font-weight: bold; } etc.
2024年6月29日 12:07 回复

您可以轻松地向 div 添加多个类...所以:

shell
<div class="myclass myclass-one"></div> <div class="myclass myclass-two"></div> <div class="myclass myclass-three"></div>

然后在 CSS 中调用共享类来应用相同的样式:

shell
.myclass {...}

你仍然可以像这样使用其他类:

shell
.myclass-three {...}

或者如果你想在 CSS 中更具体,如下所示:

shell
.myclass.myclass-three {...}
2024年6月29日 12:07 回复

在CSS中,如果您想匹配所有class类名以特定字符串开头的元素,您可以使用属性选择器和一个特定的匹配模式。这个模式是 ^=,它用于选择属性值以指定内容开头的元素。

例如,假如您想匹配所有class名以 intro开头的元素,您的CSS规则将如下所示:

css
[class^="intro"] { /* CSS样式 */ }

在这个例子中,任何class属性值以 intro开头的元素都会被选中,并应用这里定义的CSS样式。

需要注意的是,class属性可能包含多个值,比如 class="intro-text left-align"。在这种情况下,上面的选择器就不会匹配到该元素,因为它期望 intro是属性值的开头部分。

如果我们想确保即使在含有多个class值的情况下也能匹配,我们应该在属性选择器中加上空格,以匹配任何包含以特定字符串开头的class的元素。下面的CSS规则展示了如何这样做:

css
[class^="intro"], [class*=" intro"] { /* CSS样式 */ }

在这里,第一个选择器 [class^="intro"] 是匹配任何以 intro作为第一个class名的元素(例如 class="intro-text")。第二个选择器 [class*=" intro"](注意class值前的空格)是为了匹配任何class属性中有一个以空格开头紧接 intro的值的元素(例如 class="someclass intro-text")。

这种方法确保了无论 intro出现在class属性值的哪个位置,只要它是一个独立的单词且以 intro开始,该元素都会被选中并应用样式。

举个例子,如果我们想为所有以 intro开头的class名的元素应用一个特定的背景颜色和字体样式,可以这样写:

css
[class^="intro"], [class*=" intro"] { background-color: #f0f0f0; font-style: italic; }

这段CSS会选择所有class名以 intro开头的元素并给它们设置浅灰色背景和斜体字。

2024年6月29日 12:07 回复

你的答案