Właściwości CSS związane z układem siatki
Ten artykuł wyjaśnia właściwości CSS związane z układem siatki.
Możesz nauczyć się, jak opisywać siatkę i siatkę w linii.
YouTube Video
HTML do podglądu
css-grid.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 Properties Example</title>
7 <link rel="stylesheet" href="css-base.css">
8 <link rel="stylesheet" href="css-grid.css">
9</head>
10<body>
11 <!-- Header -->
12 <header>
13 <h1>CSS Properties For Layout</h1>
14 </header>
15
16 <!-- Main content -->
17 <main>
18 <header>
19 <h2>Layout Related Properties</h2>
20 </header>
21 <article>
22 <h3>grid</h3>
23 <section style="width: 100%; height: 350px;">
24 <header><h4>display: grid; grid-template-columns: 100px 200px auto; grid-template-rows: 100px auto 50px;</h4></header>
25 <section class="sample-view">
26 <div class="grid-box">
27 <div class="grid-item">Item 1</div>
28 <div class="grid-item">Item 2</div>
29 <div class="grid-item">Item 3</div>
30 <div class="grid-item">Item 4</div>
31 <div class="grid-item">Item 5</div>
32 <div class="grid-item">Item 6</div>
33 </div>
34 </section>
35 </section>
36 <section style="width: 100%; height: 550px;">
37 <header><h4>display: grid; grid-template-columns: 120px 1fr 80px; grid-template-rows: 100px 1fr 100px;</h4></header>
38 <section class="sample-view">
39 <div class="grid-container" style="color: #666;">
40 <header class="grid-header">Header</header>
41 <aside class="grid-sidebar">Sidebar</aside>
42 <article class="grid-content">
43 <p>Content</p>
44 </article>
45 <aside class="grid-ads">Ads</aside>
46 <footer class="grid-footer">Footer</footer>
47 </div>
48 </section>
49 </section>
50 </article>
51 <article>
52 <h3>gap</h3>
53 <section style="height: 300px;">
54 <header><h4>display: grid; gap: 30px 10px;</h4></header>
55 <section class="sample-view">
56 <div class="gap-grid-container">
57 <div>Item 1</div>
58 <div>Item 2</div>
59 <div>Item 3</div>
60 <div>Item 4</div>
61 <div>Item 5</div>
62 <div>Item 6</div>
63 </div>
64 </section>
65 </section>
66 <section>
67 <header><h4>display: flex; gap: 50px;</h4></header>
68 <section class="sample-view">
69 <div class="gap-flex-container">
70 <div>Item 1</div>
71 <div>Item 2</div>
72 <div>Item 3</div>
73 </div>
74 </section>
75 </section>
76 </article>
77 <article>
78 <h3>grid-template-areas</h3>
79 <section style="height: 350px;">
80 <header><h4>grid-template-areas: "header header" "sidebar content" "footer footer";</h4></header>
81 <section class="sample-view">
82 <div class="grid-template-areas-container">
83 <div class="grid-template-areas-header">Header</div>
84 <div class="grid-template-areas-sidebar">Sidebar</div>
85 <div class="grid-template-areas-content">Content</div>
86 <div class="grid-template-areas-footer">Footer</div>
87 </div>
88 </section>
89 </section>
90 </article>
91 <article>
92 <h3>inline-grid</h3>
93 <section>
94 <header><h4>display: inline-grid</h4></header>
95 <section class="sample-view">
96 Here is an inline grid:
97 <span class="inline-grid-container">
98 <div class="inline-grid-item">1</div>
99 <div class="inline-grid-item">2</div>
100 <div class="inline-grid-item">3</div>
101 <div class="inline-grid-item">4</div>
102 </span>
103 This is contained within a paragraph.
104 </section>
105 </section>
106 </article>
107 </main>
108</body>
109</html>
Układ siatki
grid
1.grid-box {
2 display: grid;
3 grid-template-columns: 100px 200px auto;
4 grid-template-rows: 100px auto 50px;
5 gap: 10px;
6 background-color: lightblue;
7 border: none;
8 height: 200px;
9}
10
11.grid-item {
12 background-color: lightskyblue;
13 width: 100%;
14 padding: 0;
15 text-align: center;
16 border: 2px solid black;
17}
Siatka to system układu służący do wyrównywania elementów w dwuwymiarowych rzędach i kolumnach. Za pomocą siatki można łatwo i elastycznie tworzyć złożone układy, które były trudne do wykonania za pomocą tradycyjnych metod float
lub position
. Flexbox świetnie sprawdza się w układach jednowymiarowych, natomiast siatka nadaje się do układów dwuwymiarowych.
- Klasa
grid-box
stosuje układ siatki, określającgrid
w właściwościdisplay
. Ten element nazywany jest pojemnikiem siatki. - Właściwość
grid-template-columns
określa szerokość kolumn siatki. W tym przykładzie pierwsza kolumna ma 100px, druga kolumna 200px, a trzecia zajmuje pozostałą przestrzeń (auto
). - Właściwość
grid-template-rows
określa wysokość rzędów siatki. Pierwszy rząd ma 100px, drugi rząd jest automatyczny (auto
), a trzeci rząd ma wysokość 50px. - Właściwość
gap
ustawia odstępy między elementami siatki. Dodanie 10px odstępu między kolumnami i rzędami.
Podstawowa terminologia
- Pojemnik siatki to element, którego właściwość
display
jest ustawiona nagrid
, a jego dzieci stają się elementami siatki. - Elementy siatki to elementy potomne umieszczone bezpośrednio w pojemniku siatki.
Główne właściwości siatki
grid-template-columns
& grid-template-rows
1.container {
2 grid-template-columns: 1fr 2fr 1fr;
3}
- Właściwości
grid-template-columns
igrid-template-rows
definiują rozmiary poszczególnych kolumn i rzędów. - Można używać jednostek takich jak
px
i%
, a takżefr
(część), aby określić proporcję pozostałej przestrzeni.- W tym przykładzie są trzy kolumny, a druga kolumna jest dwa razy szersza niż pozostałe.
grid-column
& grid-row
1.container {
2 display: grid;
3 grid-template-columns: repeat(4, 1fr); /* 4 columns */
4 grid-template-rows: repeat(3, 100px); /* 3 rows */
5}
6
7.item {
8 grid-column: 2 / 4;
9 grid-row: 1 / 3;
10}
grid-column
igrid-row
określają, w której kolumnie lub wierszu zostanie umieszczony element siatki.- W tym przykładzie element rozciąga się od 2. kolumny do 4. kolumny oraz od 1. wiersza do 3. wiersza.
grid-auto-rows
& grid-auto-columns
1.container {
2 display: grid;
3 grid-template-rows: 100px 200px; /* Explicitly define 2 rows */
4 grid-template-columns: 1fr 2fr; /* Explicitly define 2 columns */
5 grid-auto-rows: 150px; /* Automatically added rows will be 150px */
6 grid-auto-columns: 100px; /* Automatically added columns will be 100px */
7}
8
9.item {
10 grid-column: 3; /* Positioned in the 3rd column (auto-generated) */
11 grid-row: 3; /* Positioned in the 3rd row (auto-generated) */
12}
grid-auto-rows
igrid-auto-columns
to właściwości, które kontrolują rozmiar wierszy i kolumn generowanych automatycznie, gdy linie układu siatki lub kolumny nie są jawnie zdefiniowane.- W tym przykładzie jawnie zdefiniowano 2 wiersze i 2 kolumny, ale jeśli dodane zostaną kolejne elementy, nowe wiersze lub kolumny zostaną automatycznie wygenerowane zgodnie z
grid-auto-rows
igrid-auto-columns
.
- W tym przykładzie jawnie zdefiniowano 2 wiersze i 2 kolumny, ale jeśli dodane zostaną kolejne elementy, nowe wiersze lub kolumny zostaną automatycznie wygenerowane zgodnie z
justify-items
& align-items
1.container {
2 justify-items: center; /* Center items horizontally */
3 align-items: center; /* Center items vertically */
4}
- Wyrównaj elementy siatki poziomo (
justify-items
) i pionowo (align-items
).
grid-area
1/* grid-area syntax
2grid-area: <row-start> / <column-start> / <row-end> / <column-end>;
3*/
4.item {
5 grid-area: 1 / 2 / 3 / 4;
6}
grid-area
określa jednocześnie, w której części kontenera siatki powinien zostać umieszczony element siatki.- W tym przykładzie oznacza to zajmowanie miejsca od 1. do 3. wiersza oraz od 2. do 4. kolumny.
gap
1.container {
2 gap: 10px 20px; /* 10px space between rows, 20px space between columns */
3}
gap
dodaje odstępy między kolumnami i wierszami. Możesz również określić odstępy między kolumnami i wierszami, używająccolumn-gap
irow-gap
.
grid-auto-flow
1.container {
2 grid-auto-flow: column; /* Add items in the column direction */
3}
grid-auto-flow
to właściwość, która określa kierunek umieszczania elementów, albo w rzędach, albo w kolumnach.
Przykład złożonych układów.
1.grid-container {
2 display: grid;
3 grid-template-columns: 120px 1fr 80px;
4 grid-template-rows: 50px 1fr 50px;
5 gap: 10px;
6 background-color: transparent;
7 border: none;
8 height: 400px;
9}
10
11.grid-header {
12 grid-column: 1 / 4;
13 background-color: lightblue;
14}
15
16.grid-sidebar {
17 grid-column: 1 / 2;
18 grid-row: 2 / 3;
19 height: 100%;
20 background-color: lightslategray;
21 color: white;
22}
23
24.grid-content {
25 grid-column: 2 / 3;
26 grid-row: 2 / 3;
27 background-color: lightskyblue;
28}
29
30.grid-content p {
31 margin: 0;
32 padding: 0;
33 height: 260px;
34}
35
36.grid-ads {
37 grid-column: 3 / 4;
38 grid-row: 2 / 3;
39 height: 100%;
40 background-color: lightsteelblue;
41}
42
43.grid-footer {
44 grid-column: 1 / 4;
45 background-color: lightgray;
46}
W ten sposób siatka pozwala na tworzenie całego układu strony internetowej za pomocą prostego kodu.
- W tym przykładzie znajdują się trzy kolumny (pasek boczny, główna treść i reklama) oraz trzy wiersze (nagłówek, treść i stopka).
- Nagłówek i stopka zajmują pełną szerokość strony, z treścią w środku, a paskiem bocznym i reklamą po obu stronach.
Zalety siatek (grid
).
Zalety siatek (grid
) obejmują następujące punkty:.
- Łatwy układ dwuwymiarowy: Zarządzanie układem w wierszach i kolumnach umożliwia tworzenie nawet złożonych układów przy użyciu mniejszej ilości kodu.
- Zgodność z responsywnym designem: System siatek ułatwia tworzenie projektów responsywnych dostosowujących się do różnych rozmiarów ekranów.
Właściwość gap
.
1.gap-grid-container {
2 display: grid;
3 grid-template-columns: repeat(3, 1fr);
4 gap: 30px 10px;
5 background-color: transparent;
6 border: none;
7 height: 200px;
8}
9
10.gap-grid-container div {
11 width: 100px;
12 background-color: lightskyblue;
13}
14
15.gap-flex-container {
16 display: flex;
17 gap: 50px;
18}
19
20.gap-flex-container div {
21 width: 80px;
22 background-color: lightgreen;
23}
Właściwość gap
jest używana w układach siatki (grid
) i flexbox do ustawiania odstępów (luk) między elementami. Za pomocą tej właściwości możesz łatwo dodać odstępy między elementami podrzędnymi.
- W klasie
gap-grid-container
ustawiono odstęp o wartości30px
w pionie i10px
w poziomie między każdym elementem. Ponieważ siatka o 3 kolumnach została utworzona za pomocągrid-template-columns
, odstępy są stosowane pionowo i poziomo między każdym elementem. W klasiegap-flex-container
zastosowano odstęp o wartości50px
między trzema elementami w flexbox.
Podstawowa składnia
1.container {
2 display: grid; /* or flex */
3 gap: <row-gap> <column-gap>;
4}
row-gap
określa odstęp między wierszami. Jest to odstęp pionowy w układach siatki lub flex.column-gap
określa odstęp między kolumnami. Jest to odstęp poziomy.
Jeśli nie określono dwóch wartości, jedna wartość jest stosowana zarówno do row-gap
, jak i column-gap
.
Zalety właściwości gap
Korzyści z użycia właściwości gap
obejmują następujące elementy:.
- Proste ustawianie odstępów: Kod ustawiający odstępy między elementami potomnymi staje się prostszy, eliminując konieczność ustawiania dodatkowych marginesów lub wypełnień.
- Elastyczne dostosowanie: Łatwo wspiera projektowanie responsywne, umożliwiając elastyczne dostosowanie projektu.
Właściwość grid-template-areas
1.grid-template-areas-container {
2 display: grid;
3 grid-template-columns: 1fr 2fr; /* 2 columns */
4 grid-template-rows: auto auto; /* 2 rows */
5 grid-template-areas:
6 "header header"
7 "sidebar content"
8 "footer footer"; /* In the 3rd row, the footer spans across */
9 gap: 10px;
10 height: 250px;
11}
12
13.grid-template-areas-container div {
14 width: 100%;
15 height: 100%;
16}
17
18.grid-template-areas-header {
19 grid-area: header; /* Placed in the "header" area */
20 background-color: lightblue;
21}
22
23.grid-template-areas-sidebar {
24 grid-area: sidebar; /* Placed in the "sidebar" area */
25 background-color: lightslategray;
26}
27
28.grid-template-areas-content {
29 grid-area: content; /* Placed in the "content" area */
30 background-color: lightskyblue;
31}
32
33.grid-template-areas-footer {
34 grid-area: footer; /* Placed in the "footer" area */
35 background-color: lightsteelblue;
36}
Właściwość grid-template-areas
umożliwia nadawanie nazw obszarom w kontenerze siatki i używanie tych nazw do łatwego pozycjonowania elementów siatki. Użycie tej właściwości umożliwia wizualnie intuicyjne definiowanie układów.
Elementy umieszczone w nazwanych obszarach określonych właściwością grid-template-areas
powinny mieć przypisaną tę samą nazwę za pomocą właściwości grid-area
. Nawet jeśli elementy zajmują wiele komórek, są automatycznie poprawnie pozycjonowane.
W tym przykładzie siatka jest tworzona w następujący sposób:.
- W pierwszym wierszu "header" jest umieszczony na dwóch kolumnach.
- "Sidebar" jest umieszczony po lewej, a "content" po prawej stronie w drugim wierszu.
- "Footer" jest umieszczony na dwóch kolumnach w trzecim wierszu.
Podstawowe użycie
1grid-template-areas:
2 "area1 area2 area3"
3 "area1 area4 area5";
We właściwości grid-template-areas
nazwa obszaru jest określana dla każdego wiersza. Umieszczając elementy w regionach z przypisanymi nazwami, można łatwo tworzyć układy.
- W tym przykładzie tworzona jest siatka z 2 wierszami i 3 kolumnami, a każda komórka jest nazwana jako area1
, area2
, itd.
Definiowanie pustych komórek za pomocą .
1grid-template-areas:
2 "header header header"
3 "sidebar . content"
4 "footer footer footer";
Jeśli chcesz mieć puste komórki w swoim układzie, możesz je przedstawić za pomocą kropki (.
).
- Jak w tym przykładzie, określając kropkę (.
) pomiędzy sidebar
a content
, druga kolumna staje się pusta.
Zalety właściwości grid-template-areas
Zalety właściwości grid-template-areas
obejmują następujące aspekty.
- Układ wizualny: Pozwala wizualnie przedstawić układ, co ułatwia zrozumienie projektu.
- Łatwa zmiana położenia elementów: Możesz łatwo dostosować układ elementów, zmieniając definicje obszarów w CSS bez konieczności modyfikowania HTML.
Notatki
Podczas używania właściwości grid-template-areas
ważne jest zwrócenie uwagi na następujące kwestie.
- Liczba nazw w każdym wierszu musi odpowiadać liczbie zdefiniowanych kolumn.
- Przypisanie tej samej nazwy do wielu komórek połączy te komórki, ale jeśli będą przypisane do różnych wierszy lub kolumn, obszar musi być kwadratowy.
inline-grid
1.inline-grid-container {
2 display: inline-grid;
3 grid-template-columns: 1fr 1fr;
4 gap: 5px;
5 background-color: lightblue;
6}
7.inline-grid-item {
8 background-color: lightskyblue;
9 width: 50px;
10 padding: 0;
11 margin: 0;
12}
inline-grid
jest jedną z wartości właściwości display
w CSS. Zastosowanie tej właściwości sprawia, że element zachowuje się jak inline-level container, tworząc wewnętrznie kontekst formatowania siatki. W przeciwieństwie do display: grid
, działa jako element inline w przepływie dokumentu.
Przypadki użycia inline-grid
inline-grid
nie jest tak powszechny jak grid
, ale może być skutecznie wykorzystywany w określonych scenariuszach.
-
Siatka w kontekście inline: Przydatna, gdy chcesz umieścić siatkę obok treści tekstowych lub innych elementów inline. Na przykład, jest to przydatne, gdy potrzebujesz struktury siatki dla przycisków, odznak, etykiet itp., ale chcesz je wyświetlać inline, nie zakłócając przepływu tekstu.
-
Kontrola układu w elementach inline: Nawet gdy wymagane są złożone układy wewnątrz elementów inline, takich jak linki, przyciski czy spany,
inline-grid
może zarządzać wewnętrzną strukturą układu siatki, unikając wyświetlania blokowego.
1<button class="inline-grid">
2 <span>Icon</span>
3 <span>Text</span>
4</button>
W tym przypadku przycisk wyświetla ikony i tekst w układzie siatki, przy czym pozostaje inline w przepływie dokumentu.
- Responsywne komponenty inline:
inline-grid
można stosować do małych komponentów będących częścią treści inline, które wymagają układu siatki. Na przykład jest odpowiedni dla formularzy inline, odznak, etykiet produktów itp., gdzie chcesz dostosować układ za pomocą siatki, zachowując go jako inline.
Wyrównanie i rozmiarowanie inline-grid
1.inline-grid {
2 display: inline-grid;
3 vertical-align: middle;
4}
- Podobnie jak inne elementy inline,
inline-grid
uwzględnia wyrównanie pionowe względem otaczającej treści. Możesz kontrolować wyrównanie siatki za pomocą właściwościvertical-align
.
1.inline-grid {
2 display: inline-grid;
3 width: 200px;
4 height: 100px;
5}
- Jeśli chodzi o rozmiar, element
inline-grid
zajmuje jedynie taką szerokość, jaka jest wymagana przez zawartość jego siatki. W razie potrzeby możesz jawnie ustawić szerokość, wysokość oraz minimalne/maksymalne wymiary.
1.inline-grid {
2 display: inline-grid;
3 grid-template-columns: auto 1fr;
4}
Możliwe jest również, aby układ samej siatki określał rozmiar kontenera inline-grid
, a ta tendencja jest silniejsza przy użyciu elastycznych jednostek, takich jak fr
, auto
i procenty.
Możesz śledzić ten artykuł, korzystając z Visual Studio Code na naszym kanale YouTube. Proszę również sprawdzić nasz kanał YouTube.