选择另一个元素之后的第一个元素

Rob*_*Rob 99 html css css-selectors

我在页面上有以下HTML代码:

<h4>Some text</h4>
<p>
Some more text!
</p>
Run Code Online (Sandbox Code Playgroud)

在我的.css我有以下选择器来设置h4元素的样式.上面的HTML代码只是整个代码的一小部分; 还有几个div属于一个影子箱的东西:

#sb-wrapper #sb-wrapper-inner #sb-body #myDiv h4
{
    color               : #614E43;
    margin-top          : 5px;
    margin-left         : 6px;
}
Run Code Online (Sandbox Code Playgroud)

所以,我的h4元素有正确的样式,但我也希望p在HTML中设置样式.

CSS选择器有可能吗?如果是,我该怎么做?

Phr*_*ogz 183

#many .more.selectors h4 + p { ... }
Run Code Online (Sandbox Code Playgroud)

这称为相邻的兄弟选择器.

  • 但要注意一些IE漏洞,请参阅http://www.quirksmode.org/css/contents.html (2认同)
  • 请注意,这仅适用于第一个跟随IMMEDIATELY的元素.如果你想拥有第二个下一个html元素,你可以像这样链接它:#selector .original + h4 + p来获取跟随.original元素之后的h4的p.非常有用 (2认同)

Joe*_*lon 28

对于您的文字示例,您需要使用相邻的选择器(+).

h4 + p {color:red}//any <p> that is immediately preceded by an <h4>

<h4>Some text</h4>
<p>I'm red</p>
<p>I'm not</p>
Run Code Online (Sandbox Code Playgroud)

但是,如果要选择所有连续段落,则需要使用通用兄弟选择器(〜).

h4 ~ p {color:red}//any <p> that has the same parent as, and comes after an <h4>

<h4>Some text</h4>
<p>I'm red</p>
<p>I am too</p>
Run Code Online (Sandbox Code Playgroud)

不幸的是,它已知在IE 7+中有错误.


小智 14

试图解决这种类型的事情时,只需点击这个.

我做了一个选择器来处理除了p之外的其他元素.

.here .is.the #selector h4 + * {...}
Run Code Online (Sandbox Code Playgroud)

希望这有助于找到它的人:)

  • 使用`*`匹配标题中描述的任何元素.对我来说是一个有用的提醒. (8认同)
  • 这是唯一符合问题的答案。其他答案需要关于先前元素类型的先验知识。 (2认同)

Tro*_*ler 8

为初学者简化:

如果您想选择紧随另一个元素之后的元素,请使用+选择器。

例如:

div + p+元素选择紧邻元素<p>之后放置的所有元素<div>


如果您想了解有关选择器的更多信息,请使用此