Che cosa significa il selettore CSS "+" (segno più)?


750

Per esempio:

p + p {
  /* Some declarations */
}

Non so che cosa +significhi. Qual è la differenza tra questo e la definizione di uno stile psenza + p?


In pratica, ciò è utile soprattutto per applicare un margine o un'imbottitura tra elementi di elenco dello stesso tipo, quindi non è richiesto alcun caso speciale per il primo o l'ultimo elemento.
Christophe Roussy,

Risposte:


750

Vedi selettori adiacenti su W3.org.

In questo caso, il selettore indica che lo stile si applica solo ai paragrafi che seguono direttamente un altro paragrafo.

Un semplice pselettore applicherebbe lo stile a ogni paragrafo della pagina.


Funzionerà solo su IE7 o versioni successive. In IE6, lo stile non verrà applicato a nessun elemento. Questo vale anche per il >combinatore, tra l'altro.

Vedi anche la panoramica di Microsoft per la compatibilità CSS in Internet Explorer .


Ho trovato utile non comprimere l'elemento nascosto. Quindi un modo più appropriato per nasconderlo è usando visibility : hidden/visibleinvece di display : none/block. Vedi questo riferimento .
KFL,

6
quale sarà la differenza tra p + p e p> p
Muhammad Rizwan,

7
@MuhammadRizwan p > psignifica un nidificato p, e qualsiasi pche sia direttamente sotto un altro p, come ad esempio <p><p>This paragraph</p></p>.
Banana,

203

È il selettore di fratelli adiacenti.

Dal blog di Splash of Style.

Per definire un selettore CSS adiacente, viene utilizzato il segno più.

h1+p {color:blue;}

Il codice CSS sopra formatterà il primo paragrafo dopo (non all'interno) le intestazioni h1 come blu.

h1>pseleziona qualsiasi pelemento che sia un figlio diretto (di prima generazione) (interno) di un h1elemento.

  • h1>ppartite <h1> <p></p> </h1>( <p>dentro <h1>)

h1+pselezionerà il primo pelemento che è un fratello (allo stesso livello del dom) come h1elemento.

  • h1+ppartite <h1></h1> <p><p/>( <p>vicino a / dopo <h1>)

3
Sono confuso tra plus signe greater sign. Se uso h1>pinvece di h1+p, mi dà lo stesso risultato? Potresti spiegare un po 'quanto sono diversi tra loro?
lvarayut,

91
Nei tuoi esempi, h1>pseleziona qualsiasi pelemento che sia figlio diretto (di prima generazione) di un h1elemento. h1+pselezionerà il primo pelemento che è un fratello (allo stesso livello del dom) come h1elemento. h1>ppartite <h1><p><p></h1>, h1+ppartite<h1></h1><p><p/>
Matthew Vines

1
@MatthewVines dovresti aggiungere che h1> p e h1 + p alla tua risposta
MonsterMMORPG

Quindi essenzialmente nel tuo esempio corrisponderà al primo <p> dopo <h1>, ma corrisponderebbe anche allo stesso <p> se arrivasse prima di <h1>? O è solo dopo?
Vincent

53

Il +segno significa selezionare un "fratello adiacente"

Ad esempio, questo stile verrà applicato dal secondo <p>:

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


Esempio

Guarda questo JSFiddle e lo capirai: http://jsfiddle.net/7c05m7tv/ (Un altro JSFiddle: http://jsfiddle.net/7c05m7tv/70/ )


Supporto per il browser

I selettori di fratelli adiacenti sono supportati in tutti i browser moderni.


Per saperne di più


42

"+" è il selettore fratello adiacente. Selezionerà qualsiasi p DIRETTAMENTE DOPO ap (ma non un figlio o un genitore, un fratello).


23

+viene chiamato il selettore Adjacent Sibling Selector.

Ad esempio, il selettore p + pseleziona gli pelementi immediatamente successivi agli pelementi

Può essere pensato come un looking outsideselettore che controlla l'elemento immediatamente successivo.

Ecco un frammento di esempio per rendere le cose più chiare:

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>

Dato che siamo uno stesso argomento, vale la pena menzionare un altro selettore, ~selettore, che èGeneral Sibling Selector

Ad esempio, p ~ pseleziona tutto ciò pche segue pnon importa dove si trova, ma entrambi pdovrebbero avere lo stesso genitore.

Ecco come appare con lo stesso markup:

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>

Si noti che anche l'ultimo pè abbinato in questo esempio.



8

+presenta uno dei relativi selettori. Elenco di tutti i relativi selettori:

div p- Tutti gli <p>elementi all'interno degli <div>elementi sono selezionati.

div > p- Tutti gli <p>elementi il ​​cui genitore diretto è <div>selezionato. Funziona anche al contrario ( p < div)

div + p- Tutti gli <p>elementi vengono posizionati immediatamente dopo la <div>selezione dell'elemento.

div ~ p- Sono selezionati tutti gli <p>elementi che sono preceduti da un <div>elemento.

Maggiori informazioni sui selettori sono disponibili qui .


L'ultimo selettore è sbagliato. Secondo MDN : il combinatore generale di pari livello (~) separa due selettori e abbina il secondo elemento solo se segue il primo elemento (anche se non necessariamente immediatamente), ed entrambi sono figli dello stesso elemento padre
Carles Alcolea

2

Seleziona il paragrafo successivo e fa rientrare l'inizio del paragrafo da sinistra, proprio come si farebbe in 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.

l'output finale è simile al seguente

inserisci qui la descrizione dell'immagine


1

Il Plus (+) selezionerà il primo elemento immediato. Quando usi + selettore devi dare due parametri. Questo sarà più chiaro con l'esempio: qui div e span sono parametri, quindi in questo caso solo il primo span dopo il div sarà disegnato.

 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>

Lo stile sopra si applica solo al primo intervallo dopo il div. È importante notare che il secondo intervallo non verrà selezionato.


Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.