选择<p>标记后的所有<h2>

时间:2017-11-30 15:08:08

标签: html css css-selectors

有没有办法选择<h2>代码后面的所有标题(在我的示例<p>中)?

例如,我可以选择第二个和第三个h2,这样我可以放一些填充顶部吗?

<main>
  <h2>Sub heading 1</h2>
  <p>Body text</p>
  <p>More body text</p>
  <h2>Sub heading 2</h2>
  <p>Body text</p>
  <h2>Sub heading 3</h2>
  <p>Body text</p>
</main>

或者要转过来,选择<p>之前的<h2>标记?放一些填充底部?

谢谢

5 个答案:

答案 0 :(得分:1)

这只是将它变成黄色,但你可以根据需要设计它。

p + h2 { 
    background-color: yellow;
}
<h2>Sub heading 1</h2>
  <p>Body text</p>
  <p>More body text</p>
  <h2>Sub heading 2</h2>
  <p>Body text</p>

答案 1 :(得分:1)

使用CSS Sibling选择器之一:

相邻兄弟组合器(+)将两个选择器分开,并且仅当第二个元素立即跟在第一个元素后才匹配第二个元素,并且两者都是同一个父元素的子元素{ {1}}。

element

一般兄弟组合器(〜)将两个选择器分开并仅在第二个元素跟随第一个元素(但不一定立即)时匹配第二个元素,并且两者都是子元素同一个父p + h2

element
  

更新:我刚刚重新阅读你的问题。目前没有办法通过CSS选择器获得前一个兄弟或父母。但是我听到有传言说那些即将到来。

答案 2 :(得分:0)

好吧,如果您尝试选择第二个和第三个h2,请使用通用兄弟(或相邻)选择器,然后使用nth-of-type

p ~ h2:nth-of-type(n+2):nth-of-type(-n+3) {
  padding-bottom: 12px;
}
<main>
  <h2>Sub heading 1</h2>
  <p>Body text</p>
  <p>More body text</p>
  <h2>Sub heading 2</h2>
  <p>Body text</p>
  <h2>Sub heading 3</h2>
  <p>Body text</p>
</main>

答案 3 :(得分:0)

您可以在h2

中添加id tag
<h2 id="myId">Sub heading 1</h2>

并在CSS文件中

#myId {
    //code
}

或与班级:

<h2 class="myClass">Sub heading 1</h2>

并在css文件中:

.myClass {
//code
}

答案 4 :(得分:0)

你可以这样做。它选择h2之后的下一个元素,如果它是一个元素p,它将添加一些padding-top。

h2 + p {
  padding-top: 5px
}