首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >CSS选择后面的下一个元素

CSS选择后面的下一个元素
EN

Stack Overflow用户
提问于 2021-03-09 09:26:12
回答 2查看 38关注 0票数 2

我尝试在下面的代码中针对下一个p块。虽然FOO以黄色突出显示,但Foo 2没有以红色突出显示,即使我的CSS使用相邻的同级语法(+)。这里会出什么问题呢?

代码语言:javascript
运行
复制
<style>
p span.test { background-color: yellow; }
p span.test + p { background-color: red !important; }
</style>


<p>
    <span class="test">Foo</span>
</p>

<p>Foo 2</p>
EN

回答 2

Stack Overflow用户

发布于 2021-03-09 09:34:22

同级选择器实际上在那里工作正常。问题是,第一条规则p span.test { background-color: yellow; }的目标是“在test p**"**.内具有p span.test { background-color: yellow; }test的任何是span变黄了,而不是p

第二个p不是跨度的同级-- p只是另一个跨度的同级。因此,该规则不适用于它。

不幸的是,there is no CSS "parent" selector,所以你不能轻易地逆转这一点。相反,您必须在至少一个p上放置一个类,如下所示:

代码语言:javascript
运行
复制
p span.test { background-color: yellow; }
p.first + p { background-color: red; }
代码语言:javascript
运行
复制
<p class="first">
    <span class="test">Foo</span>
</p>

<p>Foo 2</p>

票数 3
EN

Stack Overflow用户

发布于 2021-03-09 09:44:16

相邻的同级组合符(+)分隔两个选择器,仅当第二个元素紧跟在第一个元素之后,并且这两个元素都是同一父元素的子元素时,才匹配第二个元素。

在您的代码中,两个<p>标签是同一父标签的子标签。但是<span><p>标签的子标签。因此,如果我们考虑“<p>”类和下一个测试标记,它们不是同一父元素的子元素。这就是你的代码不能工作的原因。

正确的语法是:

代码语言:javascript
运行
复制
former_element + target_element { style properties }

因此,您的代码应按如下方式更改:

代码语言:javascript
运行
复制
    <style>
        p span.test { background-color: yellow; }
        p + p { background-color: red; }
    </style>

这可以很好地工作。

票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/66539504

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档