Overerving in CSS
Dit artikel legt de overerving in CSS uit.
U kunt representatieve geërfde en niet-geërfde eigenschappen bekijken.
YouTube Video
HTML voor Voorbeeldweergave
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>Overerving in CSS
In CSS worden sommige eigenschappen automatisch van ouders naar kindelementen overgeërfd. Dit is een handig mechanisme omdat, zodra u een specifieke eigenschap instelt, kindelementen dezelfde stijl hebben, waardoor het niet nodig is deze steeds opnieuw in te stellen. Echter, niet alle eigenschappen worden geërfd; sommige worden geërfd terwijl andere dat niet doen. Bijvoorbeeld, color en font-family worden geërfd, maar boxmoduleigenschappen zoals margin en padding niet.
Geërfde Eigenschappen
Overerfbare eigenschappen zijn voornamelijk gerelateerd aan tekst en lettertypen.
Algemeen geërfde eigenschappen
color: Tekstkleur
1body {
2 color: black;
3}- In dit geval hebben alle kindelementen binnen
bodyeen zwarte tekstkleur.
font-family: Lettertype Familie
1body {
2 font-family: "Times New Roman", cursive;
3}- Alle kindelementen gebruiken het lettertype
Arial.
font-size: Tekstgrootte
1body {
2 font-size: 16px;
3}- Alle tekst binnen
bodyheeft standaard een grootte van16px.
line-height: Regelafstand
1p {
2 line-height: 1.5;
3}- Tekst binnen een
<p>-element wordt weergegeven met een regelhoogte van 1,5 keer, wat ook van invloed is op de kindelementen.
text-align: Tekstuitlijning
1div {
2 text-align: center;
3}- Tekst en inline-elementen binnen een
div-element worden gecentreerd weergegeven.
visibility: Element zichtbaarheid
1div {
2 visibility: hidden;
3}visibilityis een eigenschap die de zichtbaarheid van een element regelt. Wanneer ingesteld op verborgen, wordt het element onzichtbaar.- In dit geval zullen kindelementen binnen de
divook verborgen worden.
list-style: Lijststijl (lijstmarkeringen voor<ul>en<ol>)
1ul {
2 list-style: square;
3}- In dit geval worden lijstitems binnen de ul-tag weergegeven met vierkante markeringen.
Voorbeeld:
Niet-erfbare eigenschappen
Eigenschappen met betrekking tot layout en het boxmodel worden meestal niet geërfd. Deze eigenschappen moeten individueel voor elk element worden ingesteld.
Veelvoorkomende niet-erfbare eigenschappen
margin,padding: Buiten- en binnenmarges van een element
1div {
2 margin: 10px;
3 padding: 20px;
4}- Zelfs als u buiten- of binnenmarges instelt voor een
div-element, heeft dit geen invloed op de kindelementen.
border: Elementrand
1div {
2 border: 1px solid black;
3}- Zelfs als een rand is ingesteld op een ouder element, heeft dit geen invloed op de kindelementen.
width,height: Elementbreedte en -hoogte
1div {
2 width: 100px;
3 height: 50px;
4}- De breedte en hoogte van een ouder element hebben niet automatisch invloed op de kindelementen.
background: Achtergrondstijl
1body {
2 background-color: lightblue;
3}- De achtergrondkleur ingesteld op de
bodyheeft geen directe invloed op de kindelementen. Als een kindelement echter een transparante achtergrond heeft, kan de achtergrondkleur van het ouder element hier doorheen zichtbaar zijn.
Voorbeeld:
Overervingscontrole
Overerving kan worden beheerst met behulp van de sleutelwoorden inherit, initial of unset.
- Als je overerving wilt inschakelen: Je kunt overerving expliciet afdwingen met behulp van het sleutelwoord
inherit.
1div {
2 color: inherit; /* Inherit the color from its parent element */
3}- Als je geen overerving wilt: Je kunt de eigenschap resetten naar de beginwaarde met behulp van de sleutelwoorden
initialofunset.
1p {
2 color: initial; /* Reset the color to its initial/default value */
3}Voorbeeld:
De eigenschap all
De eigenschap all is een eigenschap die bijna alle CSS-eigenschappen kan resetten, inclusief die welke kunnen worden geërfd, voor een specifiek element in één keer. Specifiek kun je de volgende drie sleutelwoorden gebruiken om de eigenschappen van een element in te stellen:.
initial: Reset alle eigenschappen naar hun beginwaarden.inherit: Neemt alle eigenschappen van het bovenliggende element over.unset: Neemt de eigenschap over als het overdraagbaar is, anders wordt het gereset naar de beginwaarde.
all is zeer nuttig wanneer je meerdere eigenschappen in bulk wilt resetten of instellen, in plaats van slechts specifieke eigenschappen afzonderlijk te koppelen.
Voorbeeld van resetten naar beginwaarden
1.all-initial {
2 all: initial;
3 background-color: lightskyblue;
4}-
Wanneer je alle eerder ingestelde stijlen voor een specifiek element wilt resetten en terugbrengen naar de beginstaat, gebruik je
all: initialzoals hieronder. -
In dit voorbeeld worden alle eigenschappen van het
<div>-element met de.all-initial-klasse gereset naar de standaardbeginwaarden van de browser.
Voorbeeld van overerving
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}- Door
all: inheritte gebruiken, worden alle eigenschappen overgenomen van het bovenliggende element. - In dit voorbeeld nemen elementen met de
.all-inherit-klasse alle eigenschappen, zoalscolorenfont-size, over van het bovenliggende element.
Voorbeeld van het bepalen van beginwaarde of overerving op basis van voorwaarden
1.parent-unset {
2 color: blue;
3}
4
5.all-unset {
6 font-weight: bold;
7}
8
9.all-unset {
10 all: unset;
11}- Met
all: unsetworden eigenschappen overgenomen als dat mogelijk is; anders worden ze teruggezet naar hun beginwaarden. - In dit geval wordt
colorovergenomen, terwijlfont-weightwordt teruggezet naar de beginwaarde, meestalnormal.
Relatie met specificiteit (prioriteit)
1.all-with-important {
2 color: red !important;
3 background-color: lightskyblue;
4}
5
6.all-with-important {
7 all: initial;
8}-
De eigenschap
allis een krachtig resetmechanisme, maar wordt beïnvloed door CSS-specificiteit. Als een specifiek element sterke stijlvoorschriften heeft, kan de eigenschapalldeze stijlen mogelijk niet overschrijven. Bijvoorbeeld, eigenschappen die zijn gespecificeerd met!importantkunnen niet worden beïnvloed. -
In dit voorbeeld, zelfs als je de stijl probeert te resetten met
all: initial, zal de eigenschapcolorniet worden gereset vanwege de specificatiecolor: red !important.
Blokelementen en inline-elementen
Blokelementen
- Voorbeeld:
<div>,<p>,<h1>〜<h6>,<ul>,<li>,<section> - Kenmerken:
- Ze verschijnen altijd op een nieuwe regel en vullen de volledige breedte van het bovenliggende element.
- De breedte (
width) en hoogte (height) kunnen vrij worden ingesteld. - Marges (
margin) en opvullingen (padding) kunnen in alle richtingen worden ingesteld en hebben effect op alle zijden.
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}Inline-elementen
- Voorbeeld:
<span>,<a>,<strong>,<em>,<img>,<label> - Kenmerken:
- Ze verschijnen naast andere inline-elementen op dezelfde regel.
- Breedte (
width) en hoogte (height) kunnen niet direct worden ingesteld (tenzijdisplay: blockwordt toegepast). - Het instellen van marges (
margin) of opvullingen (padding) verticaal heeft beperkt effect (horizontale marges en opvullingen zijn effectief).
1a {
2 padding: 5px; /* Padding for inline elements */
3 margin-right: 10px; /* Set margin to the right */
4 color: blue;
5}Verschillen tussen block-level elementen en inline elementen
-
Instellingen voor breedte en hoogte:
- Blokelementen: breedte en hoogte kunnen worden ingesteld.
- Inline-elementen: Breedte en hoogte kunnen over het algemeen niet worden ingesteld.
-
Margin en Padding:
- Blokelementen: Margin en padding worden op alle zijden toegepast.
- Inline-elementen: Margin en padding aan de boven- en onderkant zijn ineffectief of hebben een beperkt effect.
-
Lay-outmethode:
- Blokelementen: Automatisch op een nieuwe regel geplaatst.
- Inline-elementen: Uitgelijnd op dezelfde regel met andere inline-elementen.
Zoals je kunt zien, zijn er verschillen in hoe CSS-stijlen worden toegepast op blokelementen en inline-elementen. Bij blokelementen worden lay-outgerelateerde CSS-eigenschappen zoals breedte, hoogte, margin en padding toegepast zoals opgegeven. Aan de andere kant, bij inline-elementen kunnen lay-outgerelateerde CSS-eigenschappen zoals breedte, hoogte, margin of padding niet worden toegepast of slechts beperkt worden toegepast.
CSS-behandeling van blokelementen en inline-elementen
1span {
2 display: block; /* Display the span element as a block-level element */
3 width: 100px;
4 height: 50px;
5}Door de display-eigenschap in te stellen op block of inline-block, kun je stijlen zoals breedte en hoogte aanpassen voor inline-elementen alsof het blokelementen zijn.
Je kunt het bovenstaande artikel volgen met Visual Studio Code op ons YouTube-kanaal. Bekijk ook het YouTube-kanaal.