CSS-egenskaper relatert til rutenettoppsett
Denne artikkelen forklarer CSS-egenskaper relatert til rutenettoppsett.
Du kan lære hvordan du beskriver rutenett og innlinjerutenett.
YouTube Video
HTML for Forhåndsvisning
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>
Rutenettoppsett
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}
Et rutenett er et oppsettsystem for å justere elementer i to-dimensjonale rader og kolonner. Ved bruk av et rutenett kan du enkelt og fleksibelt konstruere komplekse oppsett som var vanskelige med tradisjonelle float
- eller position
-metoder. Mens flexbox er utmerket for én-dimensjonale oppsett, er rutenettet egnet for to-dimensjonale oppsett.
grid-box
-klassen bruker et rutenettoppsett ved å spesifiseregrid
idisplay
-egenskapen. Dette elementet kalles en rutenettbeholder.grid-template-columns
-egenskapen angir bredden på rutenettkolonnene. I dette eksempelet er den første kolonnen 100px, den andre kolonnen er 200px, og den tredje kolonnen tar opp resten av plassen (auto
).grid-template-rows
-egenskapen angir høyden på rutenettradene. Den første raden er 100px, den andre raden er automatisk (auto
), og den tredje raden er 50px høy.gap
-egenskapen setter avstanden mellom rutenettelementer. Legger til 10px avstand mellom kolonner og rader.
Grunnleggende terminologi
- En rutenettbeholder er et element med
display
-egenskapen satt tilgrid
, og barna blir rutenettelementer. - Rutenettelementer er barneelementene som plasseres direkte under en rutenettbeholder.
Hovedegenskaper for rutenett
grid-template-columns
& grid-template-rows
1.container {
2 grid-template-columns: 1fr 2fr 1fr;
3}
grid-template-columns
- oggrid-template-rows
-egenskapene definerer størrelsen på hver kolonne og rad.- Enheter som
px
og%
, samtfr
(fraksjon) for å spesifisere en andel av den gjenværende plassen, kan brukes.- I dette eksemplet er det tre kolonner, og den andre kolonnen er dobbelt så bred som de andre.
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
oggrid-row
spesifiserer hvilken kolonne eller rad grid-elementet skal plasseres i.- I dette eksemplet dekker elementet fra den 2. kolonnen til den 4. kolonnen og fra den 1. raden til den 3. raden.
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
oggrid-auto-columns
er egenskaper som kontrollerer størrelsen på rader og kolonner som automatisk genereres når linjer eller kolonner i grid-oppsettet ikke er eksplisitt definert.- I dette eksemplet er 2 rader og 2 kolonner eksplisitt definert, men hvis flere elementer legges til, vil nye rader eller kolonner bli automatisk generert i henhold til
grid-auto-rows
oggrid-auto-columns
.
- I dette eksemplet er 2 rader og 2 kolonner eksplisitt definert, men hvis flere elementer legges til, vil nye rader eller kolonner bli automatisk generert i henhold til
justify-items
& align-items
1.container {
2 justify-items: center; /* Center items horizontally */
3 align-items: center; /* Center items vertically */
4}
- Justér grid-elementer horisontalt (
justify-items
) og vertikalt (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
spesifiserer hvilken del av rutenettet objektet skal plasseres i.- I dette eksemplet betyr det å dekke fra den 1. raden til den 3. raden og fra den 2. kolonnen til den 4. kolonnen.
gap
1.container {
2 gap: 10px 20px; /* 10px space between rows, 20px space between columns */
3}
gap
legger til mellomrom mellom kolonner og rader. Du kan også spesifisere avstanden mellom kolonner og rader individuelt ved å brukecolumn-gap
ogrow-gap
.
grid-auto-flow
1.container {
2 grid-auto-flow: column; /* Add items in the column direction */
3}
grid-auto-flow
er en egenskap som bestemmer hvilken retning elementer plasseres i, enten etter rad eller kolonne.
Eksempel på komplekse oppsett.
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}
På denne måten lar grid deg lage en hel nettsideoppsett med enkel kode.
- I dette eksempelet er det tre kolonner (sidefelt, hovedinnhold og reklame) og tre rader (topptekst, innhold og bunntekst).
- Toppteksten og bunnteksten dekker hele bredden av siden, med innholdet i midten, og sidepanelet og annonsen på hver side.
Fordeler med grids
Fordelene med grids inkluderer følgende punkter:.
- Enkel todimensjonal layout: Håndtering av oppsett i både rader og kolonner gjør det mulig å oppnå selv komplekse oppsett med mindre kode.
- Kompatibel med responsiv design: Grid-systemet gjør det enkelt å lage responsive design som tilpasser seg forskjellige skjermstørrelser.
gap
-egenskapen
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}
gap
-egenskapen brukes i grid-oppsett og flexbox-oppsett for å angi mellomrom (gaps) mellom elementer. Ved å bruke denne egenskapen kan du enkelt legge mellomrom mellom barneelementer.
- I
gap-grid-container
-klassen er det satt et mellomrom på30px
vertikalt og10px
horisontalt mellom hvert element. Siden et 3-kolonners grid er laget medgrid-template-columns
, blir mellomrom anvendt vertikalt og horisontalt mellom hvert element. Igap-flex-container
-klassen er det brukt et mellomrom på50px
mellom de tre elementene i flexboksen.
Grunnleggende Syntax
1.container {
2 display: grid; /* or flex */
3 gap: <row-gap> <column-gap>;
4}
row-gap
angir mellomrommet mellom radene. Dette er det vertikale mellomrommet i grid- eller flexlayouts.column-gap
angir mellomrommet mellom kolonnene. Dette er det horisontale mellomrommet.
Hvis to verdier ikke er spesifisert, brukes én verdi for både row-gap
og column-gap
.
Fordeler med gap
-egenskapen
Fordelene med gap
-egenskapen inkluderer følgende:.
- Enkel mellomromsinnstilling: Koden for å angi mellomrom mellom barneelementer blir enklere, og det eliminerer behovet for å sette ekstra marginer eller padding mellom elementene.
- Fleksibel tilpasning: Den støtter enkelt responsivt design og lar deg gjøre fleksible designjusteringer.
grid-template-areas
-egenskapen
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}
grid-template-areas
-egenskapen gir en måte å navngi områder innenfor en gridcontainer og bruke disse navnene for enkelt å posisjonere gridelementer. Å bruke denne egenskapen gir mulighet for visuelt intuitive layoutdefinisjoner.
Elementer plassert i navngitte områder spesifisert av grid-template-areas
-egenskapen bør ha det samme navnet tilordnet med grid-area
-egenskapen. Selv om elementer strekker seg over flere celler, blir de automatisk plassert riktig.
I dette eksemplet er griden opprettet som følger:.
- I den første raden er "header" plassert over to kolonner.
- "Sidebar" er plassert til venstre og "content" til høyre i den andre raden.
- "Footer" er plassert over to kolonner i den tredje raden.
Grunnleggende bruk
1grid-template-areas:
2 "area1 area2 area3"
3 "area1 area4 area5";
I grid-template-areas
-egenskapen er navnet på området spesifisert for hver rad. Ved å plassere elementer i områder med tildelte navn kan du enkelt lage layouts.
- I dette eksemplet opprettes en grid med 2 rader og 3 kolonner, og hver celle er navngitt som area1
, area2
, osv.
Definere tomme celler ved hjelp av .
1grid-template-areas:
2 "header header header"
3 "sidebar . content"
4 "footer footer footer";
Hvis du ønsker å ha tomme celler i oppsettet ditt, kan du representere tomme celler ved hjelp av en .
(punktum).
- Som i dette eksempelet, ved å spesifisere en .
mellom sidebar
og content
, blir den andre kolonnen tom.
Fordeler med egenskapen grid-template-areas
Fordelene med egenskapen grid-template-areas
inkluderer følgende punkter.
- Visuelt oppsett: Det lar deg uttrykke oppsettet visuelt, noe som gjør det enklere å forstå designet.
- Enkel justering av elementer: Du kan enkelt justere elementoppsettet ved å endre områdedefinisjonene i CSS uten å endre HTML-en.
Notater
Når du bruker egenskapen grid-template-areas
, er det viktig å være oppmerksom på følgende punkter.
- Antall navn i hver rad må samsvare med antall definerte kolonner.
- Å tildele samme navn til flere celler vil slå sammen disse cellene, men når de tildeles ulike rader eller kolonner, må området være kvadratisk.
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
er en av verdiene for egenskapen display
i CSS. Ved å bruke denne egenskapen oppfører elementet seg som en inline-konteiner og skaper en gridformateringskontekst internt. I motsetning til display: grid
, oppfører det seg som et inline-element i dokumentflyten.
Brukstilfeller for inline-grid
inline-grid
er ikke like vanlig som grid
, men det kan brukes effektivt i spesifikke scenarier.
-
Grid innenfor en inline-kontekst: Nyttig når du vil plassere et grid ved siden av tekstinnhold eller andre inline-elementer. For eksempel er det nyttig når det trengs en gridstruktur for knapper, merker, etiketter osv., men du vil vise det inline uten å bryte tekstflyten.
-
Oppsettstyring innenfor inline-elementer: Selv når komplekse oppsett er nødvendig innenfor inline-elementer som lenker, knapper eller spans, kan
inline-grid
håndtere den interne strukturen med et gridoppsett uten å bruke blokkvisning.
1<button class="inline-grid">
2 <span>Icon</span>
3 <span>Text</span>
4</button>
I dette tilfellet viser knappen ikoner og tekst i et grid, samtidig som den forblir inline i dokumentflyten.
- Responsive inline-komponenter:
inline-grid
kan brukes for små komponenter som er en del av inline-innhold og som krever et gridoppsett. For eksempel er det egnet for inline-skjemaer, merker, produktetiketter osv., der du ønsker å justere oppsettet med et grid, samtidig som det forblir inline.
Justering og størrelse for inline-grid
1.inline-grid {
2 display: inline-grid;
3 vertical-align: middle;
4}
- Som andre inline-elementer respekterer
inline-grid
vertikal justering i forhold til omgivende innhold. Du kan kontrollere justeringen av gridet ved å bruke egenskapenvertical-align
.
1.inline-grid {
2 display: inline-grid;
3 width: 200px;
4 height: 100px;
5}
- Når det gjelder størrelse, tar et
inline-grid
-element bare opp bredden som kreves av dets rutenettinnhold. Om nødvendig kan du eksplisitt angi bredde, høyde og minimums-/maksimumsdimensjoner.
1.inline-grid {
2 display: inline-grid;
3 grid-template-columns: auto 1fr;
4}
Det er også mulig at utformingen av selve rutenettet bestemmer størrelsen på inline-grid
-containeren, og denne tendensen er sterkere når man bruker fleksible enheter som fr
, auto
og prosenter.
Du kan følge med på artikkelen ovenfor ved å bruke Visual Studio Code på vår YouTube-kanal. Vennligst sjekk ut YouTube-kanalen.