What does + mean in CSS?

前端 未结 4 1502
暖寄归人
暖寄归人 2020-11-27 07:02

What does the + in this CSS rule mean?

h2 + p { 
  font-size: 1.4em; 
  font-weight: bold;
  color: #777         


        
相关标签:
4条回答
  • 2020-11-27 07:29

    Only affects first p which is directly following (comes directly after) the H2

    example 1:

    <h2></h2>
    <p></p> <!-- THIS ONE IS AFFECTED -->
    <p></p> <!-- THIS ONE IS NOT AFFECTED -->
    <p></p> <!-- NOR THIS ONE -->
    <p></p> <!-- NOR THIS ONE -->
    <p></p> <!-- ETC -->
    

    example 2:

    <h2></h2>
    <div></div>
    <p></p> <!-- THIS ONE IS NOT AFFECTED -->
    
    0 讨论(0)
  • 2020-11-27 07:30

    it selects all P tags that are directly beside an h2 tag. Then gives it the said attributes.

    0 讨论(0)
  • 2020-11-27 07:42

    + is the adjacent sibling combinator.

    That means the selector h2 + p only selects the p that comes immediately after an h2.

    An illustration:

    <h2>Headline!</h2>
    <p>The first paragraph.</p>  <!-- Selected [1] -->
    <p>The second paragraph.</p> <!-- Not selected [2] -->
    
    <h2>Another headline!</h2>
    <blockquote>
        <p>A quotation.</p>      <!-- Not selected [3] -->
    </blockquote>
    

    What's selected and what's not:

    1. Selected
      This p comes right after the first h2.

    2. Not selected
      This p occurs after the first p as opposed to the h2. Since it doesn't immediately follow the h2, it's not selected.

      However, since it still follows the h2 element, just not immediately, the selector h2 + p won't match this element, but h2 ~ p will, using the general sibling combinator instead.

    3. Not selected
      This p is located within a blockquote, and there's no h2 before it inside the quote to satisfy its selector.

    0 讨论(0)
  • 2020-11-27 07:44

    It selects all p elements that are directly after a h2 element in the DOM. Thus, the following p element would be styled:

    <h2>A heading</h2>
    <p>This paragraph will be styled.</p>
    

    But this wouldn't:

    <h2>A heading</h2>
    <hr>
    <p>This paragraph will NOT be styled.</p>
    

    And neither would this:

    <p>This paragraph will NOT be styled.</p>
    <h2>A heading</h2>
    

    ...or this:

    <h2>A heading</h2>
    <section>
        <p>This paragraph will NOT be styled.</p>
    </section>
    
    0 讨论(0)
提交回复
热议问题