Héritage en CSS
Cet article explique l'héritage en CSS.
Vous pouvez vérifier les propriétés représentatives héritées et non héritées.
YouTube Video
HTML pour l'aperçu
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>
Héritage en CSS
En CSS, certaines propriétés sont automatiquement héritées des éléments parents aux éléments enfants. C'est un mécanisme utile parce qu'une fois que vous définissez une propriété spécifique, les éléments enfants auront également le même style, supprimant la nécessité de la définir à plusieurs reprises. Cependant, toutes les propriétés ne sont pas héritées ; certaines propriétés le sont alors que d'autres ne le sont pas. Par exemple, color
et font-family
sont hérités, mais les propriétés du modèle de boîte comme margin
et padding
ne le sont pas.
Propriétés héritées
Les propriétés héritables sont principalement celles liées au texte et aux polices.
Propriétés couramment héritées
color
: Couleur du texte
1body {
2 color: black;
3}
- Dans ce cas, tous les éléments enfants au sein de
body
auront une couleur de texte noire.
font-family
: Famille de polices
1body {
2 font-family: "Times New Roman", cursive;
3}
- Tous les éléments enfants utilisent la police
Arial
.
font-size
: Taille du texte
1body {
2 font-size: 16px;
3}
- Tout le texte dans le
body
sera de16px
par défaut.
line-height
: Interligne
1p {
2 line-height: 1.5;
3}
- Le texte dans un élément
<p>
sera affiché avec une hauteur de ligne 1,5 fois plus grande, affectant également ses éléments enfants.
text-align
: Alignement du texte
1div {
2 text-align: center;
3}
- Le texte et les éléments en ligne dans un élément
div
sont affichés centrés.
visibility
: Visibilité des éléments
1div {
2 visibility: hidden;
3}
visibility
est une propriété qui contrôle la visibilité d'un élément. Lorsqu'il est défini sur caché, l'élément devient invisible.- Dans ce cas, les éléments enfants à l'intérieur du
div
seront également cachés.
list-style
: Style de liste (marqueurs de liste pour<ul>
et<ol>
)
1ul {
2 list-style: square;
3}
- Dans ce cas, les éléments de liste à l'intérieur de la balise ul seront affichés avec des marqueurs carrés.
Exemple :
Propriétés non héritées
Les propriétés liées à la mise en page et au modèle de boîte ne sont généralement pas héritées. Ces propriétés doivent être définies individuellement pour chaque élément.
Propriétés courantes non héritées
margin
,padding
: Marges extérieures et intérieures d'un élément
1div {
2 margin: 10px;
3 padding: 20px;
4}
- Même si vous définissez des marges externes ou internes pour un élément
div
, cela n'affecte pas ses éléments enfants.
border
: Bordure de l'élément
1div {
2 border: 1px solid black;
3}
- Même si une bordure est définie sur un élément parent, cela n'affecte pas les éléments enfants.
width
,height
: Largeur et hauteur de l'élément
1div {
2 width: 100px;
3 height: 50px;
4}
- La largeur et la hauteur d'un élément parent n'affectent pas automatiquement les éléments enfants.
background
: Style de fond
1body {
2 background-color: lightblue;
3}
- La couleur d'arrière-plan définie sur le
body
n'affecte pas directement les éléments enfants. Cependant, si un élément enfant a un arrière-plan transparent, la couleur d'arrière-plan de l'élément parent peut être visible à travers celui-ci.
Exemple :
Contrôle de l'héritage
L'héritage peut être contrôlé en utilisant les mots-clés inherit
, initial
, ou unset
.
- Si vous souhaitez activer l'héritage : Vous pouvez forcer explicitement l'héritage en utilisant le mot-clé
inherit
.
1div {
2 color: inherit; /* Inherit the color from its parent element */
3}
- Si vous ne souhaitez pas d'héritage : Vous pouvez réinitialiser la propriété à sa valeur initiale en utilisant les mots-clés
initial
ouunset
.
1p {
2 color: initial; /* Reset the color to its initial/default value */
3}
Exemple :
La propriété all
La propriété all
est une propriété qui peut réinitialiser presque toutes les propriétés CSS, y compris celles qui sont héritables, pour un élément spécifié en une seule fois. Plus précisément, vous pouvez utiliser les trois mots-clés suivants pour définir les propriétés d'un élément :.
initial
: Réinitialise toutes les propriétés à leurs valeurs initiales.inherit
: Hérite de toutes les propriétés de l'élément parent.unset
: Hérite de la propriété si elle est héréditaire, sinon la réinitialise à sa valeur initiale.
all
est très utile lorsque vous souhaitez réinitialiser ou définir plusieurs propriétés en bloc, plutôt que de définir uniquement des propriétés spécifiques individuellement.
Exemple de réinitialisation aux valeurs initiales
1.all-initial {
2 all: initial;
3 background-color: lightskyblue;
4}
-
Lorsque vous souhaitez réinitialiser tous les styles précédemment définis pour un élément spécifique et le ramener à son état initial, utilisez
all: initial
comme ceci. -
Dans cet exemple, toutes les propriétés de l'élément
<div>
avec la classe.all-initial
sont réinitialisées aux valeurs initiales par défaut du navigateur.
Exemple d'héritage
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}
- Utiliser
all: inherit
fait que toutes les propriétés héritent de l'élément parent. - Dans cet exemple, les éléments avec la classe
.all-inherit
héritent de toutes les propriétés, telles quecolor
etfont-size
, de l'élément parent.
Exemple de détermination de la valeur initiale ou de l'héritage basé sur des conditions
1.parent-unset {
2 color: blue;
3}
4
5.all-unset {
6 font-weight: bold;
7}
8
9.all-unset {
10 all: unset;
11}
- Utiliser
all: unset
fait que les propriétés sont héritées si c'est possible ; sinon, elles sont réinitialisées à leurs valeurs initiales. - Dans ce cas,
color
est héritée, tandis quefont-weight
est réinitialisé à sa valeur initiale, généralementnormal
.
Relation avec la spécificité (priorité)
1.all-with-important {
2 color: red !important;
3 background-color: lightskyblue;
4}
5
6.all-with-important {
7 all: initial;
8}
-
La propriété
all
est un puissant mécanisme de réinitialisation, mais elle est affectée par la spécificité CSS. Si un élément spécifique a des spécifications de style fortes, la propriétéall
peut ne pas être en mesure de remplacer ces styles. Par exemple, les propriétés spécifiées avec!important
ne peuvent pas être affectées. -
Dans cet exemple, même si vous essayez de réinitialiser le style avec
all: initial
, la propriétécolor
ne sera pas réinitialisée en raison de la spécificationcolor: red !important
.
Éléments de niveau bloc et éléments en ligne
Éléments de niveau bloc
- Exemple:
<div>
,<p>
,<h1>
〜<h6>
,<ul>
,<li>
,<section>
- Caractéristiques:
- Ils apparaissent toujours sur une nouvelle ligne et s'étendent pour occuper toute la largeur de leur élément parent.
- La largeur (
width
) et la hauteur (height
) peuvent être librement définies. - Les marges (
margin
) et les espacements internes (padding
) peuvent être définis dans toutes les directions et affecteront tous les côtés.
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}
Éléments en ligne
- Exemple:
<span>
,<a>
,<strong>
,<em>
,<img>
,<label>
- Caractéristiques:
- Ils apparaissent à côté d'autres éléments en ligne sur la même ligne.
- La largeur (
width
) et la hauteur (height
) ne peuvent pas être directement définies (sauf sidisplay: block
est appliqué). - Définir des marges (
margin
) ou des espacements internes (padding
) verticalement a un effet limité (les marges et espacements horizontaux sont efficaces).
1a {
2 padding: 5px; /* Padding for inline elements */
3 margin-right: 10px; /* Set margin to the right */
4 color: blue;
5}
Différences entre les éléments de type bloc et les éléments en ligne
-
Paramètres de largeur et de hauteur:
- Éléments de niveau bloc : la largeur et la hauteur peuvent être définies.
- Éléments en ligne : la largeur et la hauteur ne peuvent généralement pas être définies.
-
Marge et rembourrage:
- Éléments de niveau bloc : les marges et les espacements internes sont appliqués à tous les côtés.
- Éléments en ligne : les marges et espacements internes en haut et en bas sont inefficaces ou ont un effet limité.
-
Méthode de mise en page:
- Éléments de niveau bloc : automatiquement placés sur une nouvelle ligne.
- Éléments en ligne : alignés sur la même ligne avec d'autres éléments en ligne.
Comme vous pouvez le voir, il y a des différences dans la façon dont les styles CSS sont appliqués aux éléments de niveau bloc et aux éléments en ligne. Dans les éléments de niveau bloc, les propriétés CSS liées à la mise en page telles que la largeur, la hauteur, les marges et les espacements internes sont appliquées comme spécifié. En revanche, pour les éléments en ligne, la définition de propriétés CSS liées à la mise en page comme la largeur, la hauteur, les marges ou les espacements internes peut ne pas s'appliquer ou s'appliquer de manière limitée.
Gestion CSS des éléments de niveau bloc et des éléments en ligne
1span {
2 display: block; /* Display the span element as a block-level element */
3 width: 100px;
4 height: 50px;
5}
Cependant, en définissant la propriété display
sur block
ou inline-block
, vous pouvez ajuster les styles tels que la largeur et la hauteur pour les éléments en ligne comme s'il s'agissait d'éléments de type bloc.
Vous pouvez suivre l'article ci-dessus avec Visual Studio Code sur notre chaîne YouTube. Veuillez également consulter la chaîne YouTube.