Ricerca…


introduzione

I selettori CSS identificano specifici elementi HTML come target per gli stili CSS. Questo argomento spiega in che modo i selettori CSS hanno come target elementi HTML. I selezionatori usano una vasta gamma di oltre 50 metodi di selezione offerti dal linguaggio CSS, inclusi elementi, classi, ID, pseudo-elementi e pseudo-classi e modelli.

Sintassi

  • # id
  • . nome della classe
  • : pseudo-classname
  • :: pseudo-elementname
  • [ attr ] / * ha l'attributo attr . * /
  • [ attr = " valore "] / * ha l'attributo attr , e il suo valore è esattamente " valore ". * /
  • [ attr ~ = " valore "] / * ha l'attributo attr , e il suo valore, quando diviso su spazi , contiene " valore ". * /
  • [ attr | = " valore "] / * ha l'attributo attr , e il suo valore è esattamente " valore ", o il suo valore inizia con " valore - ". * /
  • [ attr ^ = " valore "] / * ha l'attributo attr , e il suo valore inizia con " valore ". * /
  • [ attr $ = " valore "] / * ha l'attributo attr e il suo valore termina con " valore ". * /
  • [ attr * = " valore "] / * ha l'attributo attr , e il suo valore contiene " valore ". * /
  • Elemento-name
  • *

Osservazioni

  • A volte vedrai i doppi due punti ( :: :) invece di uno solo ( : . Questo è un modo per separare le pseudo-classi dagli pseudo-elementi .
  • Vecchi browser, come Internet Explorer 8, supportano solo un singolo due punti ( : ) per la definizione di pseudo-elementi.
  • A differenza delle pseudo-classi, può essere usato un solo pseudo-elemento per selettore, se presente deve apparire dopo la sequenza di selettori semplici che rappresentano i soggetti del selettore (una versione futura della specifica W3C può consentire più pseudo-elementi per selettore ).

Selettori di attributi

Panoramica

I selettori di attributi possono essere utilizzati con vari tipi di operatori che modificano di conseguenza i criteri di selezione. Selezionano un elemento utilizzando la presenza di un determinato attributo o valore di attributo.

Selettore (1) Elemento abbinato Seleziona elementi ... Versione CSS
[attr] <div attr> Con attributo attr 2
[attr='val'] <div attr="val"> Dove l'attributo attr ha valore val 2
[attr~='val'] <div attr="val val2 val3"> Dove val appare nel
lista separata da spazi di attr
2
[attr^='val'] <div attr="val1 val2"> Dove il valore di attr inizia con val 3
[attr$='val'] <div attr="sth aval"> Dove il valore di attr termina con val 3
[attr*='val'] <div attr="somevalhere"> Dove attr contiene val ovunque 3
[attr|='val'] <div attr="val-sth etc"> Dove il valore di attr è esattamente val ,
o inizia con val e immediatamente
seguito da - (U + 002D)
2
[attr='val' i] <div attr="val"> Dove attr ha valore val ,
ignorando il rivestimento delle lettere di val .
4 (2)

Gli appunti:

  1. Il valore dell'attributo può essere circondato da virgolette singole o doppie virgolette. Nessuna virgola può anche funzionare, ma non è valida secondo lo standard CSS ed è scoraggiata.

  2. Non esiste un'unica specifica CSS4 integrata, perché è divisa in moduli separati. Tuttavia, ci sono moduli di "livello 4". Vedi il supporto del browser .

Dettagli

[attribute]

Seleziona elementi con l'attributo dato.

div[data-color] {
  color: red;
}
<div data-color="red">This will be red</div>
<div data-color="green">This will be red</div>
<div data-background="red">This will NOT be red</div>

Live Demo su JSBin

[attribute="value"]

Seleziona elementi con l'attributo e il valore specificati.

div[data-color="red"] {
  color: red;
}
<div data-color="red">This will be red</div>
<div data-color="green">This will NOT be red</div>
<div data-color="blue">This will NOT be red</div>

Live Demo su JSBin

[attribute*="value"]

Seleziona gli elementi con l'attributo e il valore specificati in cui l'attributo dato contiene il valore dato da qualsiasi parte (come sottostringa).

[class*="foo"] {
  color: red;
}
<div class="foo-123">This will be red</div>
<div class="foo123">This will be red</div>
<div class="bar123foo">This will be red</div>
<div class="barfooo123">This will be red</div>
<div class="barfo0">This will NOT be red</div>

Live Demo su JSBin

[attribute~="value"]

Seleziona gli elementi con l'attributo e il valore specificati in cui il valore indicato viene visualizzato in un elenco separato da spazi.

[class~="color-red"] {
  color: red;
}
<div class="color-red foo-bar the-div">This will be red</div>
<div class="color-blue foo-bar the-div">This will NOT be red</div>

Live Demo su JSBin

[attribute^="value"]

Seleziona gli elementi con l'attributo e il valore specificati in cui l'attributo dato inizia con il valore.

[class^="foo-"] {
  color: red;
}
<div class="foo-123">This will be red</div>
<div class="foo-234">This will be red</div>
<div class="bar-123">This will NOT be red</div>

Live Demo su JSBin

[attribute$="value"]

Seleziona gli elementi con l'attributo e il valore specificati in cui l'attributo dato termina con il valore dato.

[class$="file"] {
  color: red;
}
<div class="foobar-file">This will be red</div>
<div class="foobar-file">This will be red</div>
<div class="foobar-input">This will NOT be red</div>

Live Demo su JSBin

[attribute|="value"]

Seleziona gli elementi con un determinato attributo e valore dove il valore dell'attributo è esattamente il valore dato o è esattamente il valore dato seguito da - (U + 002D)

[lang|="EN"] {
  color: red;
}
<div lang="EN-us">This will be red</div>
<div lang="EN-gb">This will be red</div>
<div lang="PT-pt">This will NOT be red</div>

Live Demo su JSBin

[attribute="value" i]

Seleziona elementi con un dato attributo e un valore in cui il valore dell'attributo può essere rappresentato come Value , VALUE , vAlUe o qualsiasi altra possibilità maiuscole e minuscole.

[lang="EN" i] {
  color: red;
}
<div lang="EN">This will be red</div>
<div lang="en">This will be red</div>
<div lang="PT">This will NOT be red</div>

Live Demo su JSBin

Specificità dei selettori di attributi

0-1-0

Come selettore di classe e pseudoclass.

*[type=checkbox] // 0-1-0

Nota che questo significa che un selettore di attributo può essere usato per selezionare un elemento dal suo ID a un livello inferiore di specificità che se fosse stato selezionato con un selettore ID : [id="my-ID"] lo stesso numero di #my-ID ma con specificità inferiore.

Vedi la sezione Sintassi per maggiori dettagli.

combinatori

Panoramica

Selettore Descrizione
div span Selettore discendente (tutti <span> s discendenti di <div> )
div > span Selettore di bambini (tutti <span> che sono figli diretti di <div> )
a ~ span Selettore General Sibling (tutti <span> s che sono fratelli dopo un <a> )
a + span Selettore di Sibling adiacente (tutti i <span> che sono immediatamente dopo un <a> )

Nota: i selettori di Sibling scelgono come target gli elementi che vengono dopo di essi nel documento di origine. Il CSS, per sua natura (a cascata), non può bersagliare elementi precedenti o genitore . Tuttavia, usando la proprietà order flex, un precedente selettore di pari livello può essere simulato su supporti visivi .

Combinatore discendente: selector selector

Un combinatore discendente, rappresentato da almeno un carattere di spazio ( ), seleziona gli elementi che sono discendenti dell'elemento definito. Questo combinatore seleziona tutti i discendenti dell'elemento (dagli elementi figli in basso).

div p {
  color:red;
}
<div>
  <p>My text is red</p>
  <section>
    <p>My text is red</p>
  </section>
</div>

<p>My text is not red</p>

Live Demo su JSBin

Nell'esempio precedente, i primi due elementi <p> sono selezionati poiché sono entrambi i discendenti di <div> .


Combinatore di bambini: selector > selector

Il combinatore child ( > ) viene utilizzato per selezionare elementi figli , o discendenti diretti , dell'elemento specificato.

div > p {
  color:red;
}
<div>
  <p>My text is red</p>
  <section>
    <p>My text is not red</p>
  </section>
</div>

Live Demo su JSBin

Il precedente CSS seleziona solo il primo elemento <p> , in quanto è l'unico paragrafo direttamente discendente da un <div> .

Il secondo elemento <p> non è selezionato perché non è un figlio diretto di <div> .


Combinatore Sibling adiacente: selector + selector

Il combinatore adiacente di pari livello ( + ) seleziona un elemento fratello che segue immediatamente un elemento specificato.

p + p {
  color:red;
}
<p>My text is not red</p>
<p>My text is red</p>
<p>My text is red</p>
<hr>
<p>My text is not red</p>

Live Demo su JSBin

L'esempio sopra seleziona solo quegli elementi <p> che sono direttamente preceduti da un altro elemento <p> .


General Sibling Combinator: selector ~ selector

Il combinatore generale ( ~ ) seleziona tutti i fratelli che seguono l'elemento specificato.

p ~ p {
  color:red;
}
<p>My text is not red</p>
<p>My text is red</p>
<hr>
<h1>And now a title</h1>
<p>My text is red</p>

Live Demo su JSBin

L'esempio sopra seleziona tutti gli elementi <p> preceduti da un altro elemento <p> , indipendentemente dal fatto che siano immediatamente adiacenti.

Selettori del nome di classe

Il selettore del nome della classe seleziona tutti gli elementi con il nome della classe mirata. Ad esempio, il nome della classe .warning selezionerebbe il seguente elemento <div> :

<div class="warning">
    <p>This would be some warning copy.</p>
</div>

Puoi anche combinare i nomi delle classi con gli elementi target in modo più specifico. Costruiamo sull'esempio sopra per mostrare una selezione di classi più complicata.

CSS

.important {
    color: orange;
}
.warning {
    color: blue;
}
.warning.important {
    color: red;
}

HTML

<div class="warning">
    <p>This would be some warning copy.</p>
</div>

<div class="important warning">
    <p class="important">This is some really important warning copy.</p>
</div>

In questo esempio, tutti gli elementi con la classe .warning avranno un colore di testo blu, gli elementi con la classe .important avranno un colore di testo arancione e tutti gli elementi che hanno sia il nome di classe .important che .warning avranno un testo rosso colore.

Si noti che all'interno del CSS, la dichiarazione .warning.important non ha spazi tra i due nomi di classe. Ciò significa che troverà solo elementi che contengono sia i nomi di classe che warning e important nel loro attributo di class . Quei nomi di classe potrebbero essere in qualsiasi ordine sull'elemento.

Se fosse incluso uno spazio tra le due classi nella dichiarazione CSS, selezionerebbe solo elementi che hanno elementi parent con un .warning classe .warning ed elementi figlio con nomi di classe .important .

Selettori ID

I selettori ID selezionano gli elementi DOM con l'ID target. Per selezionare un elemento con un ID specifico in CSS, viene utilizzato il prefisso # .

Ad esempio, il seguente elemento div HTML ...

<div id="exampleID">
    <p>Example</p>
</div>

... può essere selezionato da #exampleID in CSS come mostrato di seguito:

#exampleID {
    width: 20px;
}

Nota : le specifiche HTML non consentono più elementi con lo stesso ID

Pseudo-classi

Le pseudo-classi sono parole chiave che consentono la selezione in base a informazioni che si trovano all'esterno dell'albero del documento o che non possono essere espresse da altri selettori o combinatori. Questa informazione può essere associato ad un certo stato ( stato e dinamiche pseudo-classi), a posizioni ( strutturali e indirizzare pseudo-classi), per negazioni della ex ( negazione pseudo-classe) o alle lingue ( Lang pseudo-classe). Gli esempi includono se un collegamento è stato seguito o meno ( :visited ), il mouse si trova su un elemento ( :hover ), una casella di controllo è selezionata ( :checked ), ecc.

Sintassi

selector:pseudo-class { 
    property: value;
}

Elenco di pseudo-classi:

Nome Descrizione
:active Si applica a qualsiasi elemento che viene attivato (cioè cliccato) dall'utente.
:any Ti permette di creare gruppi di selettori correlati creando gruppi che il
gli articoli inclusi corrisponderanno. Questa è un'alternativa alla ripetizione di un intero selettore.
:target Seleziona l'elemento #news attivo corrente (cliccato su un URL
contenente quel nome di ancoraggio)
:checked Si applica alla radio, alla casella di controllo o agli elementi delle opzioni che sono selezionati
o attivato in uno stato "on".
:default Rappresenta qualsiasi elemento dell'interfaccia utente che è l'impostazione predefinita tra un gruppo di
elementi simili.
:disabled Si applica a qualsiasi elemento dell'interfaccia utente che si trova in uno stato disabilitato.
:empty Si applica a qualsiasi elemento che non ha figli.
:enabled Si applica a qualsiasi elemento dell'interfaccia utente che si trova in uno stato abilitato.
:first Utilizzato insieme alla regola @page , seleziona la prima pagina di a
documento stampato
:first-child Rappresenta qualsiasi elemento che è il primo elemento figlio del suo genitore.
:first-of-type Si applica quando un elemento è il primo del tipo di elemento selezionato
all'interno del suo genitore. Questo può o non può essere il primo figlio.
:focus Si applica a qualsiasi elemento che ha l'attenzione dell'utente. Questo può essere dato dal
tastiera dell'utente, eventi del mouse o altre forme di input.
:focus-within Può essere usato per evidenziare un'intera sezione quando un elemento al suo interno è focalizzato. Corrisponde a qualsiasi elemento che corrisponde alle corrispondenze pseudo-classe: focus o che ha un focus focalizzato.
:full-screen Si applica a qualsiasi elemento visualizzato in modalità a schermo intero. Seleziona l'intero stack
di elementi e non solo l'elemento di livello superiore.
:hover Si applica a qualsiasi elemento al passaggio del mouse dal dispositivo di puntamento dell'utente, ma
non attivato.
:indeterminate Applica elementi dell'interfaccia utente radio o casella di controllo che non sono né controllati né
deselezionato, ma sono in uno stato indeterminato. Questo può essere dovuto a un
attributo dell'elemento o manipolazione DOM.
:in-range La :in-range pseudo-classe CSS :in-range corrisponde quando un elemento ha
il suo attributo value all'interno delle limitazioni di intervallo specificate per questo elemento.
Permette alla pagina di dare un feedback sul valore attualmente definito
l'utilizzo dell'elemento è all'interno dei limiti dell'intervallo.
:invalid Si applica a <input> elementi i cui valori non sono validi in base a
il tipo specificato nell'attributo type= .
:lang Si applica a qualsiasi elemento che include l'elemento <body> correttamente
lang= designato lang= attributo. Perché la pseudo-classe sia valida, deve
contenere un codice lingua valido di due o tre lettere.
:last-child Rappresenta qualsiasi elemento che è l'ultimo elemento figlio del suo genitore.
:last-of-type Si applica quando un elemento è l'ultimo del tipo di elemento selezionato all'interno
suo genitore. Questo può o non può essere l'ultimo figlio.
:left Utilizzato in congiunzione con la regola @page , seleziona tutto il sinistro
pagine in un documento stampato.
:link Si applica a tutti i collegamenti che non sono stati visitati dall'utente.
:not() Si applica a tutti gli elementi che non corrispondono al valore passato a
( :not(p) o :not(.class-name) per esempio. Deve avere un valore per essere
valido e può contenere solo un selettore. Tuttavia, puoi concatenare più elementi :not selettori insieme.
:nth-child Si applica quando un elemento è l' n -esimo elemento del suo genitore, dove n
può essere un numero intero, un'espressione matematica (ad es. n+3 ) o le parole chiave
odd o even .
:nth-of-type Si applica quando un elemento è l' n -esimo elemento del suo genitore di
stesso tipo di elemento, dove n può essere un numero intero, un matematico
espressione (ad esempio n+3 ), o le parole chiave odd o even .
:only-child La pseudo-classe CSS :only-child rappresenta qualsiasi elemento
che è l'unico figlio del suo genitore. Questo è lo stesso di
:first-child:last-child o :nth-child(1):nth-last-child(1) ,
ma con una specificità inferiore.
:optional La :optional pseudo-classe CSS :optional rappresenta qualsiasi elemento
su cui non è impostato l'attributo richiesto. Questo permette
forme per indicare facilmente campi opzionali e per modellarli di conseguenza.
:out-of-range La pseudo-classe CSS :out-of-range coincide quando un elemento ha la sua
attributo valore al di fuori dei limiti di intervallo specificati per questo elemento.
Permette alla pagina di dare un feedback sul valore attualmente definito usando il
l'elemento non rientra nei limiti dell'intervallo. Un valore può essere al di fuori di un intervallo, se lo è
o più piccoli o più grandi dei valori massimi e minimi.
:placeholder-shown Sperimentale. Si applica a qualsiasi elemento del modulo che attualmente visualizza testo segnaposto.
:read-only Si applica a qualsiasi elemento che non è modificabile dall'utente.
:read-write Si applica a qualsiasi elemento modificabile da un utente, come ad esempio <input> elementi.
:right Utilizzato insieme alla regola @page , seleziona tutte le pagine giuste in a
documento stampato
:root corrisponde all'elemento radice di un albero che rappresenta il documento.
:scope La pseudo-classe CSS corrisponde agli elementi che sono un riferimento
punto per selezionare i selettori contro.
:target Seleziona l'elemento #news attivo corrente (cliccato su un URL
contenente quel nome di ancoraggio)
:visited Si applica a tutti i collegamenti che sono stati visitati dall'utente.

Lo pseudoclass :visited non può più essere utilizzato per la maggior parte degli stili in molti browser moderni perché è un buco di sicurezza. Vedi questo link per riferimento.

Selettori di base

Selettore Descrizione
* Selettore universale (tutti gli elementi)
div Selettore di tag (tutti gli elementi <div> )
.blue Selettore di classe (tutti gli elementi con classe blue )
.blue.red Tutti gli elementi con classe blue e red (un tipo di selettore Compound)
#headline Selettore ID (l'elemento con l'attributo "id" impostato sul headline )
:pseudo-class Tutti gli elementi con pseudo-classe
::pseudo-element Elemento che corrisponde allo pseudo-elemento
:lang(en) Elemento che corrisponde a: lang declaration, ad esempio <span lang="en">
div > p selettore di bambini

Nota: il valore di un ID deve essere univoco in una pagina Web. È una violazione dello standard HTML utilizzare il valore di un ID più di una volta nella stessa struttura del documento.

Un elenco completo di selettori può essere trovato nella specifica CSS Selectors Level 3 .

Come plasmare un input Range

HTML

<input type="range"></input>

CSS

Effetto Pseudo selettore
Pollice input[type=range]::-webkit-slider-thumb, input[type=range]::-moz-range-thumb, input[type=range]::-ms-thumb
Traccia input[type=range]::-webkit-slider-runnable-track, input[type=range]::-moz-range-track, input[type=range]::-ms-track
OnFocus input[type=range]:focus
Parte inferiore della traccia input[type=range]::-moz-range-progress, input[type=range]::-ms-fill-lower (non possibile nei browser WebKit attualmente - JS necessario)

Global boolean con checkbox: checked e ~ (combinatore di fratellanza generale)

Con il selettore ~, puoi facilmente implementare un booleano accessibile globale senza utilizzare JavaScript.

Aggiungi booleano come casella di controllo

All'inizio del tuo documento, aggiungi tutti i booleani che vuoi con un id univoco e il set di attributi hidden :

<input type="checkbox" id="sidebarShown" hidden />
<input type="checkbox" id="darkThemeUsed" hidden />

<!-- here begins actual content, for example: -->
<div id="container">
    <div id="sidebar">
        <!-- Menu, Search, ... -->
    </div>

    <!-- Some more content ... -->
</div>

<div id="footer">
    <!-- ... -->
</div>

Cambia il valore del booleano

Puoi cambiare il valore booleano aggiungendo label con il set di attributi for :

<label for="sidebarShown">Show/Hide the sidebar!</label>

Accesso al valore booleano con CSS

Il normale selettore (come .color-red ) specifica le proprietà predefinite. Possono essere sovrascritti seguendo i selettori true / false :

/* true: */
<checkbox>:checked ~ [sibling of checkbox & parent of target] <target>

/* false: */
<checkbox>:not(:checked) ~ [sibling of checkbox & parent of target] <target>

Nota che <checkbox> , [sibling ...] e <target> dovrebbero essere sostituiti dai selettori appropriati. [sibling ...] può essere un selettore specifico, (spesso se sei pigro) semplicemente * o nulla se l'obiettivo è già un fratello della casella di controllo.

Esempi per la struttura HTML di cui sopra sarebbero:

#sidebarShown:checked ~ #container #sidebar {
    margin-left: 300px;
}

#darkThemeUsed:checked ~ #container,
#darkThemeUsed:checked ~ #footer {
    background: #333;
}

In azione

Vedi questo violino per l'implementazione di questi booleani globali.

CSS3: esempio di selettore all'interno del campo

<style>
input:in-range {
    border: 1px solid blue;
}
</style>



<input type="number" min="10" max="20" value="15">
<p>The border for this value will be blue</p>

La :in-range pseudo-classe CSS :in-range corrisponde quando un elemento ha il suo attributo value all'interno delle limitazioni di intervallo specificato per questo elemento. Consente alla pagina di fornire un feedback sul fatto che il valore attualmente definito utilizzando l'elemento si trova all'interno dei limiti dell'intervallo. [1]

Pseudo classe bambino

"La pseudo-classe CSS: nth-child (an + b) corrisponde ad un elemento che ha un fratello + b-1 prima nell'albero del documento, per un dato valore positivo o zero per n" - MDN: nth-child

pseudo-selettore 1 2 3 4 5 6 7 8 9 10
:first-child
:nth-child(3)
:nth-child(n+3)
:nth-child(3n)
:nth-child(3n+1)
:nth-child(-n+3)
:nth-child(odd)
:nth-child(even)
:last-child
:nth-last-child(3)

Seleziona l'elemento usando il suo ID senza l'alta specificità del selettore ID

Questo trucco ti aiuta a selezionare un elemento usando l'ID come valore per un selettore di attributi per evitare l'alta specificità del selettore ID.

HTML:

<div id="element">...</div>  

CSS

#element { ... } /* High specificity will override many selectors */

[id="element"] { ... } /* Low specificity, can be overridden easily */

A. L'esempio: non pseudo-classe e B.: focus-all'interno della pseudo-classe CSS

A. La sintassi è presentata sopra.

Il seguente selettore corrisponde a tutti gli elementi <input> in un documento HTML che non sono disabilitati e non hanno la classe .example :

HTML:

<form>
    Phone: <input type="tel" class="example">
    E-mail: <input type="email" disabled="disabled">
    Password: <input type="password">
</form>

CSS:

input:not([disabled]):not(.example){
   background-color: #ccc;
}

La pseudo-classe :not() supporterà anche i selettori separati da virgola in Selectors Livello 4:

CSS:

input:not([disabled], .example){
   background-color: #ccc;
}

Live Demo su JSBin

Vedi la sintassi dello sfondo qui .

B. Il: focus-all'interno della pseudo-classe CSS

HTML:

  <h3>Background is blue if the input is focused .</p>
  <div>
    <input type="text">
  </div>

CSS:

div {
  height: 80px;
}
input{
  margin:30px;
}
div:focus-within {
  background-color: #1565C0;
}

inserisci la descrizione dell'immagine qui inserisci la descrizione dell'immagine qui

L'esempio del selettore pseudo-classe: only-child

La pseudo-classe CSS :only-child rappresenta qualsiasi elemento che è l'unico figlio del suo genitore.

HTML:

<div>
  <p>This paragraph is the only child of the div, it will have the color blue</p>
</div>

<div>
  <p>This paragraph is one of the two children of the div</p>
  <p>This paragraph is one of the two children of its parent</p>
</div>

CSS:

p:only-child {
  color: blue;
}

L'esempio sopra seleziona l'elemento <p> che è il figlio unico dal suo genitore, in questo caso un <div> .

Live Demo su JSBin

Il: ultimo tipo di selettore

Il :last-of-type seleziona l'elemento che è l'ultimo figlio, di un particolare tipo, del suo genitore. Nell'esempio seguente, il css seleziona l'ultimo paragrafo e l'ultima intestazione h1 .

p:last-of-type { 
  background: #C5CAE9; 
}
h1:last-of-type { 
  background: #CDDC39; 
}
<div class="container">
    <p>First paragraph</p>
    <p>Second paragraph</p>
    <p>Last paragraph</p>
    <h1>Heading 1</h1>
    <h2>First heading 2</h2>
    <h2>Last heading 2</h2>
</div>

inserisci la descrizione dell'immagine qui

jsFiddle



Modified text is an extract of the original Stack Overflow Documentation
Autorizzato sotto CC BY-SA 3.0
Non affiliato con Stack Overflow