“ +”(加号)CSS选择器是什么意思?


750

例如:

p + p {
  /* Some declarations */
}

我不知道是什么+意思 这和只为p没有定义样式之间有什么区别+ p


实际上,这对于在相同类型的列表元素之间应用边距或填充最有用,因此第一个或最后一个元素不需要特殊情况。
Christophe Roussy

Answers:


749

请参阅W3.org上的相邻选择器

在这种情况下,选择器意味着样式仅适用于直接在另一个段落之后的段落。

一个简单的p选择器会将样式应用于页面中的每个段落。


这仅适用于IE7或更高版本。在IE6中,样式不会应用于任何元素。>顺便说一下,这也适用于组合器。

另请参阅Microsoft 在Internet Explorer中的CSS兼容性概述。


我发现隐藏时不折叠元素很有用。因此,一种更合适的隐藏方法是使用visibility : hidden/visible而不是display : none/block。请参阅此参考
KFL 2014年

6
p + p和p> p之间的区别是什么
穆罕默德·里兹万

7
@MuhammadRizwan的p > p意思是嵌套的pei p,也就是直接位于另一个嵌套下方的任何东西p,例如<p><p>This paragraph</p></p>
香蕉

203

这是相邻的兄弟选择器。

风格飞溅博客。

要定义CSS相邻选择器,请使用加号。

h1+p {color:blue;}

上面的CSS代码会将任何h1标题之后(而不是内部)的第一段格式设置为蓝色。

h1>p选择作为p元素的直接(第一代)子h1元素(内部)的任何元素。

  • h1>p匹配<h1> <p></p> </h1><p>内部<h1>

h1+p将选择p作为同级(与dom处于同一级别)的同级的第一个h1元素。

  • h1+p匹配<h1></h1> <p><p/><p>旁边/之后<h1>

3
我对plus sign和之间感到困惑greater sign。如果我使用h1>p而不是h1+p,是否会得到相同的结果?您能解释一下两者之间的区别吗?
lvarayut 2014年

91
在您的示例中,h1>p选择任何作为p元素的直接(第一代)子h1元素的元素。 h1+p将选择p作为同级(与dom处于同一级别)的同级的第一个h1元素。 h1>p比赛<h1><p><p></h1>h1+p比赛<h1></h1><p><p/>
Matthew Vines,2014年

1
@MatthewVines您应该在答案中加上h1> p和h1 + p
MonsterMMORPG,2016年

因此,从本质上讲,该示例将与<h1>之后的第一个<p>匹配,但是如果它在<h1>之前也与该相同的<p>匹配?还是只是在之后?
文森特

53

+标志意味着选择一个“相邻的兄弟”

例如,此样式将从第二个开始应用<p>

p + p {
   font-weight: bold;
} 
<div>
   <p>Paragraph 1</p>
   <p>Paragraph 2</p>
</div>


看到这个JSFiddle,您将理解它:http : //jsfiddle.net/7c05m7tv/ (另一个JSFiddle:http : //jsfiddle.net/7c05m7tv/70/


浏览器支持

所有现代浏览器均支持相邻的兄弟选择器。


学到更多


42

“ +”是相邻的兄弟选择器。它将直接选择ap之后的任何p(尽管不是孩子或父母,而是同级)。


23

+选择器称为Adjacent Sibling Selector

例如,选择器p + p,选择p紧随元素之后的p元素

可以将其视为looking outside检查紧随其后的元素的选择器。

这是一个示例片段,使事情变得更加清晰:

body {
  font-family: Tahoma;
  font-size: 12px;
}
p + p {
  margin-left: 10px;
}
<div>
  <p>Header paragraph</p>
  <p>This is a paragraph</p>
  <p>This is another paragraph</p>
  <p>This is yet another paragraph</p>
  <hr>
  <p>Footer paragraph</p>
</div>

由于我们是同一主题,因此值得一提的是另一个选择~General Sibling Selector

例如,p ~ p选择所有p紧随其后的内容p都无关紧要,但是两者p都应具有相同的父对象。

这是带有相同标记的外观:

body {
  font-family: Tahoma;
  font-size: 12px;
}
p ~ p {
  margin-left: 10px;
}
<div>
  <p>Header paragraph</p>
  <p>This is a paragraph</p>
  <p>This is another paragraph</p>
  <p>This is yet another paragraph</p>
  <hr>
  <p>Footer paragraph</p>
</div>

请注意,p此示例中的最后一个也是匹配的。



8

+显示相对选择器之一。所有相关选择器的列表:

div p- 选择了<p>元素内部的所有元素<div>

div > p- 选择了<p>直接父级的所有元素<div>。它也向后工作(p < div

div + p-所有<p>元素都紧接在<div>元素之后。

div ~ p-选择所有在<p>元素之前的<div>元素。

有关选择器的更多信息,请参见此处


最后一个选择器错误。根据MDN的说法:通用同级组合器(〜)分隔两个选择器并仅在第二个元素跟在第一个元素之后(尽管不一定立即)匹配,并且两者都是同一父元素的孩子
Carles Alcolea,

2

就像您在Microsoft Word中一样,它选择下一个段落并从左开始缩进该段落的开头。


2
p+p{
//styling the code
}

p+p{
} simply mean find all the adjacent/sibling paragraphs with respect to first paragraph in DOM body.

    <div>
    <input type="text" placeholder="something">
    <p>This is first paragraph</p>
    <button>Button </button>
    <p> This is second paragraph</p>
    <p>This is third paragraph</p>
    </div>

    Styling part 
    <style type="text/css">
        p+p{
            color: red;
            font-weight: bolder;
        }
    </style>

   It will style all sibling paragraph with red color.

最终输出看起来像这样

在此处输入图片说明


1

加号(+)将选择第一个立即元素。使用+选择器时,必须提供两个参数。通过示例将更加清楚:此处div和span是参数,因此在这种情况下,仅将对div之后的第一个span进行样式设置。

 div+ span{
   color: green;
   padding :100px;
}

     <div>The top or first element  </div>
       <span >this is span immediately after div, this will be selected</span>
       <span>This will not be selected</span>

以上样式仅适用于div之后的第一个跨度。重要的是要注意,不会选择第二个跨度。


By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.