Ereditarietà nei CSS
Questo articolo spiega l'ereditarietà in CSS.
Puoi controllare le proprietà rappresentative ereditate e non ereditate.
YouTube Video
HTML per Anteprima
css-inheritance.html
1<!DOCTYPE html>
2<html lang="en">
3<head>
4 <meta charset="UTF-8">
5 <meta name="viewport" content="width=device-width, initial-scale=1.0">
6 <title>CSS Inheritance</title>
7 <link rel="stylesheet" href="css-base.css">
8 <link rel="stylesheet" href="css-inheritance.css">
9</head>
10<body>
11 <!-- Header -->
12 <header>
13 <h1>CSS Inheritance</h1>
14 </header>
15
16 <!-- Main content -->
17 <main>
18 <header><h2>CSS Inheritance</h2></header>
19 <article>
20 <h3>Example of Inheritance</h3>
21 <section>
22 <p>
23 Example of P Element.<br>
24 <span>Example of Span Element</span>
25 </p>
26 </section>
27 <div>
28 Example of Div Element
29 </div>
30 <ul>
31 <li>List Item 1</li>
32 <li>List Item 2</li>
33 <li>List Item 3</li>
34 </ul>
35 </article>
36 <article>
37 <h3>all</h3>
38 <section>
39 <h4>Initial</h4>
40 <div class="all-initial">This is an initial element</div>
41 </section>
42 <section>
43 <h4>Inherit</h4>
44 <div class="parent-inherit">
45 <div class="all-inherit">This is an inherited element</div>
46 </div>
47 </section>
48 <section>
49 <h4>Unset All</h4>
50 <div class="parent-unset">
51 <div class="all-unset">This is an unset element</div>
52 </div>
53 </section>
54 <section>
55 <h4>all and !important</h4>
56 <div class="important-style">
57 <div class="all-with-important">
58 This is an initial element with !important
59 </div>
60 </div>
61 </section>
62 </article>
63 </main>
64</body>
65</html>
Ereditarietà nei CSS
In CSS, alcune proprietà sono automaticamente ereditate dagli elementi genitori agli elementi figli. Questo è un meccanismo utile perché, una volta impostata una specifica proprietà, anche gli elementi figli avranno lo stesso stile, eliminando la necessità di impostarlo ripetutamente. Tuttavia, non tutte le proprietà sono ereditate; alcune proprietà sono ereditate mentre altre no. Ad esempio, color
e font-family
sono ereditati, ma le proprietà del modello di scatola come margin
e padding
non lo sono.
Proprietà ereditate
Le proprietà ereditabili sono principalmente quelle relative al testo e ai caratteri.
Proprietà comunemente ereditate
color
: Colore del testo
1body {
2 color: black;
3}
- In questo caso, tutti gli elementi figli all'interno di
body
avranno il colore del testo nero.
font-family
: Famiglia di caratteri
1body {
2 font-family: "Times New Roman", cursive;
3}
- Tutti gli elementi figlio usano il font
Arial
.
font-size
: Dimensione del testo
1body {
2 font-size: 16px;
3}
- Tutto il testo all'interno del
body
sarà di16px
per impostazione predefinita.
line-height
: Spaziatura delle righe
1p {
2 line-height: 1.5;
3}
- Il testo all'interno di un elemento
<p>
verrà visualizzato con un'interlinea pari a 1,5, influenzando anche i suoi elementi figlio.
text-align
: Allineamento del testo
1div {
2 text-align: center;
3}
- Il testo e gli elementi in linea all'interno di un elemento
div
sono visualizzati centrati.
visibility
: Visibilità degli elementi
1div {
2 visibility: hidden;
3}
visibility
è una proprietà che controlla la visibilità di un elemento. Quando è impostato su nascosto, l'elemento diventa invisibile.- In questo caso, anche gli elementi figlio all'interno del
div
saranno nascosti.
list-style
: Stile elenco (marcatori elenco per<ul>
e<ol>
)
1ul {
2 list-style: square;
3}
- In questo caso, gli elementi della lista all'interno del tag ul verranno visualizzati con marcatori quadrati.
Esempio:
Proprietà non ereditate
Le proprietà relative al layout e al modello a blocchi di solito non sono ereditate. Queste proprietà devono essere impostate individualmente per ciascun elemento.
Proprietà comuni non ereditate
margin
,padding
: Margini esterni e interni di un elemento
1div {
2 margin: 10px;
3 padding: 20px;
4}
- Anche se imposti margini esterni o interni per un elemento
div
, questi non influenzano i suoi elementi figli.
border
: Bordo dell'elemento
1div {
2 border: 1px solid black;
3}
- Anche se un bordo è impostato su un elemento genitore, questo non influenza gli elementi figli.
width
,height
: Larghezza e altezza dell'elemento
1div {
2 width: 100px;
3 height: 50px;
4}
- La larghezza e l'altezza di un elemento genitore non influenzano automaticamente gli elementi figli.
background
: Stile di sfondo
1body {
2 background-color: lightblue;
3}
- Il colore di sfondo impostato sul
body
non influenza direttamente gli elementi figli. Tuttavia, se un elemento figlio ha uno sfondo trasparente, il colore di sfondo dell'elemento genitore potrebbe essere visibile attraverso di esso.
Esempio:
Controllo dell'ereditarietà
L'ereditarietà può essere controllata utilizzando le parole chiave inherit
, initial
o unset
.
- Se vuoi abilitare l'ereditarietà: Puoi forzare esplicitamente l'ereditarietà utilizzando la parola chiave
inherit
.
1div {
2 color: inherit; /* Inherit the color from its parent element */
3}
- Se non vuoi l'ereditarietà: Puoi reimpostare la proprietà al suo valore iniziale utilizzando le parole chiave
initial
ounset
.
1p {
2 color: initial; /* Reset the color to its initial/default value */
3}
Esempio:
La proprietà all
La proprietà all
è una proprietà che può reimpostare quasi tutte le proprietà CSS, incluse quelle ereditabili, per un elemento specificato in una sola volta. Specificamente, puoi usare le seguenti tre parole chiave per impostare le proprietà di un elemento:.
initial
: Reimposta tutte le proprietà ai loro valori iniziali.inherit
: Eredita tutte le proprietà dall'elemento genitore.unset
: Eredita la proprietà se è ereditabile, altrimenti la reimposta al suo valore iniziale.
all
è molto utile quando vuoi reimpostare o impostare più proprietà in blocco, piuttosto che impostare solo proprietà specifiche individualmente.
Esempio di reimpostazione ai valori iniziali
1.all-initial {
2 all: initial;
3 background-color: lightskyblue;
4}
-
Quando vuoi reimpostare tutti gli stili precedentemente impostati per un elemento specifico e riportarlo al suo stato iniziale, usa
all: initial
in questo modo. -
In questo esempio, tutte le proprietà dell'elemento
<div>
con la classe.all-initial
sono reimpostate ai valori iniziali predefiniti del browser.
Esempio di ereditarietà
1.parent-inherit {
2 color: blue;
3 font-size: 20px;
4 border: 1px solid blue;
5}
6
7.all-inherit {
8 all: inherit;
9 background-color: lightskyblue;
10}
- Utilizzando
all: inherit
tutte le proprietà vengono ereditate dall'elemento genitore. - In questo esempio, gli elementi con la classe
.all-inherit
ereditano tutte le proprietà, comecolor
efont-size
, dall'elemento genitore.
Esempio di Determinazione del Valore Iniziale o Ereditarietà Basata su Condizioni
1.parent-unset {
2 color: blue;
3}
4
5.all-unset {
6 font-weight: bold;
7}
8
9.all-unset {
10 all: unset;
11}
- Utilizzando
all: unset
, le proprietà vengono ereditate se possibile; altrimenti, vengono reimpostate ai loro valori iniziali. - In questo caso,
color
è ereditato, mentrefont-weight
è reimpostato al suo valore iniziale, tipicamentenormal
.
Relazione con la Specificità (Priorità)
1.all-with-important {
2 color: red !important;
3 background-color: lightskyblue;
4}
5
6.all-with-important {
7 all: initial;
8}
-
La proprietà
all
è un potente meccanismo di reset, ma è influenzato dalla specificità del CSS. Se un elemento specifico ha specifiche di stile forti, la proprietàall
potrebbe non essere in grado di sovrascrivere quegli stili. Ad esempio, le proprietà specificate con!important
non possono essere influenzate. -
In questo esempio, anche se provi a reimpostare lo stile con
all: initial
, la proprietàcolor
non verrà reimpostata a causa della specificacolor: red !important
.
Elementi a livello di blocco ed elementi inline
Elementi a livello di blocco
- Esempio:
<div>
,<p>
,<h1>
〜<h6>
,<ul>
,<li>
,<section>
- Caratteristiche:
- Appaiono sempre su una nuova linea ed espandono per occupare l'intera larghezza del loro elemento genitore.
- La larghezza (
width
) e l'altezza (height
) possono essere impostate liberamente. - I margini (
margin
) e il padding (padding
) possono essere impostati in tutte le direzioni e influiranno su tutti i lati.
1div {
2 width: 80%; /* Set the width to 80% of its parent element's width */
3 padding: 20px; /* Add a padding of 20 pixels on all sides */
4 margin: 10px 0; /* Add a margin of 10 pixels top and bottom, 0 pixels left and right */
5}
Elementi inline
- Esempio:
<span>
,<a>
,<strong>
,<em>
,<img>
,<label>
- Caratteristiche:
- Appaiono accanto ad altri elementi inline sulla stessa riga.
- La larghezza (
width
) e l'altezza (height
) non possono essere impostate direttamente (a meno che non venga applicatodisplay: block
). - Impostare i margini (
margin
) o il padding (padding
) in verticale ha un effetto limitato (i margini e il padding orizzontali sono efficaci).
1a {
2 padding: 5px; /* Padding for inline elements */
3 margin-right: 10px; /* Set margin to the right */
4 color: blue;
5}
Differenze tra elementi a livello di blocco ed elementi in linea
-
Impostazioni di larghezza e altezza:
- Elementi a livello di blocco: Larghezza e altezza possono essere impostate.
- Elementi inline: Larghezza e altezza generalmente non possono essere impostate.
-
Margini e Padding:
- Elementi a livello di blocco: Margini e padding vengono applicati a tutti i lati.
- Elementi inline: Margini e padding sulla parte superiore e inferiore sono inefficaci o hanno un effetto limitato.
-
Metodo di Layout:
- Elementi a livello di blocco: Posizionati automaticamente su una nuova riga.
- Elementi inline: Allineati sulla stessa riga con altri elementi inline.
Come puoi vedere, ci sono differenze nel modo in cui gli stili CSS vengono applicati agli elementi a livello di blocco e agli elementi inline. Negli elementi a livello di blocco, le proprietà CSS relative al layout come larghezza, altezza, margine e padding vengono applicate come specificato. D'altra parte, per gli elementi inline, impostare proprietà CSS relative al layout come larghezza, altezza, margine o padding potrebbe non essere applicato o essere applicato in modo limitato.
Gestione CSS di elementi a livello blocco e in linea
1span {
2 display: block; /* Display the span element as a block-level element */
3 width: 100px;
4 height: 50px;
5}
Tuttavia, impostando la proprietà display
su block
o inline-block
, puoi regolare gli stili come larghezza e altezza per gli elementi inline come se fossero elementi a blocco.
Puoi seguire l'articolo sopra utilizzando Visual Studio Code sul nostro canale YouTube. Controlla anche il nostro canale YouTube.