Dziedziczenie w CSS
Ten artykuł wyjaśnia dziedziczenie w CSS.
Możesz sprawdzić reprezentatywne właściwości dziedziczone i niedziedziczone.
YouTube Video
HTML do podglądu
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>
Dziedziczenie w CSS
W CSS niektóre właściwości są automatycznie dziedziczone z elementów nadrzędnych do elementów podrzędnych. Jest to przydatny mechanizm, ponieważ po ustawieniu określonej właściwości, elementy podrzędne będą miały ten sam styl, co eliminuje potrzebę wielokrotnego ustawiania. Jednak nie wszystkie właściwości są dziedziczone; niektóre właściwości są dziedziczone, a inne nie. Na przykład color
i font-family
są dziedziczone, ale właściwości modelu box, takie jak margin
i padding
, nie są.
Właściwości dziedziczone
Właściwości dziedziczone to głównie te związane z tekstem i czcionkami.
Najczęściej dziedziczone właściwości
color
: Kolor tekstu
1body {
2 color: black;
3}
- W tym przypadku wszystkie elementy podrzędne w
body
będą miały czarny kolor tekstu.
font-family
: Rodzina czcionek
1body {
2 font-family: "Times New Roman", cursive;
3}
- Wszystkie elementy podrzędne używają czcionki
Arial
.
font-size
: Rozmiar tekstu
1body {
2 font-size: 16px;
3}
- Cały tekst w
body
będzie domyślnie miał rozmiar16px
.
line-height
: Odstępy między liniami
1p {
2 line-height: 1.5;
3}
- Tekst w elemencie
<p>
będzie wyświetlany z wysokością linii 1,5 raza większą, co wpłynie także na jego elementy podrzędne.
text-align
: Wyrównanie tekstu
1div {
2 text-align: center;
3}
- Tekst i elementy liniowe w elemencie
div
są wyświetlane wyśrodkowane.
visibility
: Widoczność elementu
1div {
2 visibility: hidden;
3}
visibility
to właściwość, która kontroluje widoczność elementu. Po ustawieniu na hidden, element staje się niewidoczny.- W tym przypadku elementy podrzędne w elemencie
div
również będą ukryte.
list-style
: Styl listy (znaczniki list dla<ul>
i<ol>
)
1ul {
2 list-style: square;
3}
- W tym przypadku elementy listy w tagu ul będą wyświetlane z kwadratowymi znacznikami.
Przykład:
Właściwości niedziedziczone
Właściwości związane z układem i modelem pudełkowym zwykle nie są dziedziczone. Te właściwości muszą być ustawione indywidualnie dla każdego elementu.
Typowe właściwości niedziedziczone
margin
,padding
: Zewnętrzne i wewnętrzne marginesy elementu
1div {
2 margin: 10px;
3 padding: 20px;
4}
- Nawet jeśli ustawisz zewnętrzne lub wewnętrzne marginesy dla elementu
div
, nie wpływa to na jego elementy podrzędne.
border
: Obramowanie elementu
1div {
2 border: 1px solid black;
3}
- Nawet jeśli obramowanie zostanie ustawione na elemencie nadrzędnym, nie wpływa to na elementy podrzędne.
width
,height
: Szerokość i wysokość elementu
1div {
2 width: 100px;
3 height: 50px;
4}
- Szerokość i wysokość elementu nadrzędnego nie wpływają automatycznie na elementy podrzędne.
background
: Styl tła
1body {
2 background-color: lightblue;
3}
- Kolor tła ustawiony na
body
nie wpływa bezpośrednio na elementy podrzędne. Jednakże, jeśli element podrzędny ma przezroczyste tło, kolor tła elementu nadrzędnego może być widoczny przez niego.
Przykład:
Kontrola dziedziczenia
Dziedziczenie można kontrolować za pomocą słów kluczowych inherit
, initial
lub unset
.
- Jeśli chcesz włączyć dziedziczenie: Możesz wymusić dziedziczenie, używając słowa kluczowego
inherit
.
1div {
2 color: inherit; /* Inherit the color from its parent element */
3}
- Jeśli nie chcesz dziedziczenia: Możesz zresetować właściwość do jej wartości początkowej, używając słów kluczowych
initial
lubunset
.
1p {
2 color: initial; /* Reset the color to its initial/default value */
3}
Przykład:
Właściwość all
Właściwość all
umożliwia zresetowanie prawie wszystkich właściwości CSS, w tym tych, które można dziedziczyć, dla określonego elementu jednocześnie. Konkretnie, możesz użyć trzech następujących słów kluczowych do ustawienia właściwości elementu:.
initial
: Resetuje wszystkie właściwości do ich wartości początkowych.inherit
: Dziedziczy wszystkie właściwości z elementu nadrzędnego.unset
: Dziedziczy właściwość, jeśli jest dziedziczalna; w przeciwnym razie resetuje ją do wartości początkowej.
all
jest bardzo przydatne, gdy chcesz zresetować lub ustawić wiele właściwości jednocześnie, zamiast ustawiać tylko konkretne właściwości pojedynczo.
Przykład resetowania do wartości początkowych
1.all-initial {
2 all: initial;
3 background-color: lightskyblue;
4}
-
Jeśli chcesz zresetować wszystkie wcześniej ustawione style dla konkretnego elementu i przywrócić go do stanu początkowego, użyj
all: initial
w taki sposób. -
W tym przykładzie wszystkie właściwości elementu
<div>
z klasą.all-initial
są resetowane do domyślnych wartości początkowych przeglądarki.
Przykład dziedziczenia
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}
- Użycie
all: inherit
powoduje, że wszystkie właściwości są dziedziczone z elementu nadrzędnego. - W tym przykładzie elementy z klasą
.all-inherit
dziedziczą wszystkie właściwości, takie jakcolor
ifont-size
, z elementu nadrzędnego.
Przykład określania wartości początkowej lub dziedziczenia na podstawie warunków
1.parent-unset {
2 color: blue;
3}
4
5.all-unset {
6 font-weight: bold;
7}
8
9.all-unset {
10 all: unset;
11}
- Użycie
all: unset
powoduje, że właściwości są dziedziczone, jeśli mogą być; w przeciwnym razie są resetowane do wartości początkowych. - W tym przypadku
color
jest dziedziczony, podczas gdyfont-weight
zostaje zresetowany do swojej wartości początkowej, zazwyczajnormal
.
Relacja ze specyficznością (priorytetem)
1.all-with-important {
2 color: red !important;
3 background-color: lightskyblue;
4}
5
6.all-with-important {
7 all: initial;
8}
-
all
jest potężnym mechanizmem resetowania, ale jest zależny od specyficzności CSS. Jeśli konkretny element ma silne specyfikacje stylu, właściwośćall
może nie być w stanie nadpisać tych stylów. Na przykład, właściwości określone za pomocą!important
nie mogą być zmienione. -
W tym przykładzie, nawet jeśli spróbujesz zresetować styl za pomocą
all: initial
, właściwośćcolor
nie zostanie zresetowana z powodu specyfikacjicolor: red !important
.
Elementy blokowe i elementy liniowe
Elementy blokowe
- Przykład:
<div>
,<p>
,<h1>
〜<h6>
,<ul>
,<li>
,<section>
- Cechy charakterystyczne:
- Zawsze pojawiają się w nowej linii i rozciągają się na pełną szerokość elementu nadrzędnego.
- Można dowolnie ustawiać szerokość (
width
) i wysokość (height
). - Marginesy (
margin
) i wypełnienie (padding
) można ustawiać we wszystkich kierunkach, co wpłynie na wszystkie strony.
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}
Elementy liniowe
- Przykład:
<span>
,<a>
,<strong>
,<em>
,<img>
,<label>
- Cechy charakterystyczne:
- Pojawiają się obok innych elementów liniowych w tej samej linii.
- Szerokość (
width
) i wysokość (height
) nie mogą być ustawiane bezpośrednio (chyba że zastosowanodisplay: block
). - Ustawienie marginesów (
margin
) lub wypełnienia (padding
) w pionie ma ograniczony efekt (marginesy i wypełnienie w poziomie są skuteczne).
1a {
2 padding: 5px; /* Padding for inline elements */
3 margin-right: 10px; /* Set margin to the right */
4 color: blue;
5}
Różnice między elementami blokowymi a elementami liniowymi
-
Ustawienia szerokości i wysokości:
- Elementy blokowe: Można ustawić szerokość i wysokość.
- Elementy liniowe: Szerokość i wysokość na ogół nie mogą być ustawione.
-
Margines i Wypełnienie:
- Elementy blokowe: Margines i wypełnienie są stosowane po wszystkich stronach.
- Elementy liniowe: Margines i wypełnienie na górze i na dole są nieskuteczne lub mają ograniczony efekt.
-
Metoda Układu:
- Elementy blokowe: Automatycznie rozmieszczane na nowej linii.
- Elementy liniowe: Wyrównane w tej samej linii z innymi elementami liniowymi.
Jak widać, istnieją różnice w tym, jak style CSS są stosowane do elementów blokowych i liniowych. W elementach blokowych właściwości CSS związane z układem, takie jak szerokość, wysokość, margines i wypełnienie, są stosowane zgodnie z podanymi wartościami. Z drugiej strony, w przypadku elementów liniowych, ustawianie właściwości CSS związanych z układem, takich jak szerokość, wysokość, margines lub wypełnienie, może nie być stosowane lub być stosowane w ograniczonym zakresie.
Obsługa elementów blokowych i liniowych w CSS
1span {
2 display: block; /* Display the span element as a block-level element */
3 width: 100px;
4 height: 50px;
5}
Jednak poprzez ustawienie właściwości display
na block
lub inline-block
można dostosować style, takie jak szerokość i wysokość, dla elementów liniowych tak, jakby były to elementy blokowe.
Możesz śledzić ten artykuł, korzystając z Visual Studio Code na naszym kanale YouTube. Proszę również sprawdzić nasz kanał YouTube.