Esercitazione CSS

CSS CASA Introduzione CSS Sintassi CSS Selettori CSS CSS Come fare per Commenti CSS Colori CSS Sfondi CSS Confini CSS Margini CSS Imbottitura CSS Altezza/larghezza CSS Modello a scatola CSS Schema CSS Testo CSS Font CSS Icone CSS Collegamenti CSS Elenchi CSS Tabelle CSS Display CSS Larghezza massima CSS Posizione CSS Indice Z CSS Overflow CSS CSS galleggiante CSS Inline-block Allineamento CSS Combinatori CSS Pseudo-classe CSS Pseudoelemento CSS Opacità CSS Barra di navigazione CSS Menu a discesa CSS Galleria di immagini CSS Sprite di immagini CSS Selettori CSS Attr Moduli CSS Contatori CSS Layout del sito Web CSS Unità CSS Specificità CSS CSS! importante Funzioni matematiche CSS

CSS avanzato

Angoli arrotondati CSS Immagini del bordo CSS Sfondi CSS Colori CSS Parole chiave a colori CSS Gradienti CSS Ombre CSS Effetti di testo CSS Font Web CSS Trasformazioni 2D CSS Trasformazioni CSS 3D Transizioni CSS Animazioni CSS Suggerimenti CSS Immagini in stile CSS Riflessione dell'immagine CSS Adattamento agli oggetti CSS Posizione dell'oggetto CSS Mascheratura CSS Pulsanti CSS Impaginazione CSS Colonne multiple CSS Interfaccia utente CSS Variabili CSS Dimensioni della scatola CSS Query sui media CSS Esempi CSS MQ Cassetta flessibile CSS

CSS reattivo

Introduzione a RWD Vista posteriore Vista griglia RWD Query sui media RWD Immagini RWD Video RWD Quadri RWD Modelli RWD

Griglia CSS

Introduzione alla griglia Contenitore a griglia Elemento griglia

CSS SASS

Esercitazione SASS

Esempi CSS

Modelli CSS Esempi CSS css quiz Esercizi CSS Certificato CSS

Riferimenti CSS

Riferimento CSS Selettori CSS Funzioni CSS CSS di riferimento sonoro Font sicuri per il Web CSS CSS Animabile Unità CSS Convertitore CSS PX-EM Colori CSS Valori di colore CSS Valori predefiniti CSS Supporto del browser CSS

Specificità CSS


Cos'è la specificità?

Se ci sono due o più regole CSS che puntano allo stesso elemento, il selettore con il valore di specificità più alto "vincerà" e la sua dichiarazione di stile verrà applicata a quell'elemento HTML.

Pensa alla specificità come a un punteggio/classifica che determina quale dichiarazione di stile viene applicata in definitiva a un elemento.

Guarda i seguenti esempi:

Esempio 1

In questo esempio, abbiamo utilizzato l'elemento "p" come selettore e specificato un colore rosso per questo elemento. Il testo sarà rosso:

<html>
<head>
  <style>
    p {color: red;}
  </style>
</head>
<body>

<p>Hello World!</p>

</body>
</html>

Ora, guarda l'esempio 2:

Esempio 2

In questo esempio, abbiamo aggiunto un selettore di classe (denominato "test") e specificato un colore verde per questa classe. Il testo ora sarà verde (anche se abbiamo specificato un colore rosso per il selettore di elementi "p". Questo perché al selettore di classe viene data una priorità più alta:

<html>
<head>
  <style>
    .test {color: green;}
    p {color: red;}
  </style>
</head>
<body>

<p class="test">Hello World!</p>

</body>
</html>

Ora, guarda l'esempio 3:

Esempio 3

In questo esempio, abbiamo aggiunto il selettore id (denominato "demo"). Il testo ora sarà blu, perché al selettore id viene data una priorità più alta:

<html>
<head>
  <style>
    #demo {color: blue;}
    .test {color: green;}
    p {color: red;}
  </style>
</head>
<body>

<p id="demo" class="test">Hello World!</p>

</body>
</html>

Ora, guarda l'esempio 4:

Esempio 4

In questo esempio, abbiamo aggiunto uno stile in linea per l'elemento "p". Il testo ora sarà rosa, perché lo stile in linea ha la massima priorità:

<html>
<head>
  <style>
    #demo {color: blue;}
    .test {color: green;}
    p {color: red;}
  </style>
</head>
<body>

<p id="demo" class="test" style="color: pink;">Hello World!</p>

</body>
</html>


Gerarchia di specificità

Ogni selettore CSS ha il suo posto nella gerarchia delle specificità.

Esistono quattro categorie che definiscono il livello di specificità di un selettore:

  • Stili in linea - Esempio: <h1 style="color: pink;">
  • ID - Esempio: #navbar
  • Classi, pseudo-classi, selettori di attributi - Esempio: .test, :hover, [href]
  • Elementi e pseudo-elementi - Esempio: h1, :before

Come calcolare la specificità?

Memorizza come calcolare la specificità!

Inizia da 0, aggiungi 100 per ogni valore ID, aggiungi 10 per ogni valore di classe (o pseudo-classe o selettore di attributo), aggiungi 1 per ogni selettore di elemento o pseudo-elemento.

Nota: lo stile in linea ottiene un valore di specificità di 1000 e viene sempre data la massima priorità!

Nota 2: c'è un'eccezione a questa regola: se usi la !important regola, sovrascriverà anche gli stili in linea!

La tabella seguente mostra alcuni esempi su come calcolare i valori di specificità:

Selector Specificity Value Calculation
p 1 1
p.test 11 1 + 10
p#demo 101 1 + 100
<p style="color: pink;"> 1000 1000
#demo 100 100
.test 10 10
p.test1.test2 21 1 + 10 + 10
#navbar p#demo 201 100 + 1 + 100
* 0 0 (the universal selector is ignored)

Il selettore con il valore di specificità più alto vincerà e avrà effetto!

Considera questi tre frammenti di codice:

Esempio

A: h1
B: h1#content
C: <h1 id="content" style="color: pink;">Heading</h1>

La specificità di A è 1 (selettore di un elemento)
La specificità di B è 101 (un riferimento ID + un selettore di elemento)
La specificità di C è 1000 (stile in linea)

Poiché la terza regola (C) ha il valore di specificità più alto (1000), verrà applicata questa dichiarazione di stile.



Altri esempi di regole di specificità

Uguale specificità: vince l'ultima regola - Se la stessa regola viene scritta due volte nel foglio di stile esterno, vince l'ultima regola:

Esempio

h1 {background-color: yellow;}
h1 {background-color: red;}


I selettori ID hanno una specificità maggiore rispetto ai selettori di attributi : osserva le tre righe di codice seguenti:

Esempio

div#a {background-color: green;}
#a {background-color: yellow;}
div[id=a] {background-color: blue;}

la prima regola è più specifica delle altre due e sarà quindi applicata.


I selettori contestuali sono più specifici di un singolo elemento selettore - Il foglio di stile incorporato è più vicino all'elemento a cui applicare lo stile. Quindi nella seguente situazione

Esempio

From external CSS file:
#content h1 {background-color: red;}

In HTML file:
<style>
#content h1 {background-color: yellow;}
</style>

si applicherà quest'ultima regola.


Un selettore di classe batte un numero qualsiasi di selettori di elementi : un selettore di classe come .intro batte h1, p, div, ecc:

Esempio

.intro {background-color: yellow;}
h1 {background-color: red;}


Il selettore universale (*) ei valori ereditati hanno una specificità 0 - Il selettore universale (*) ei valori ereditati vengono ignorati!