Sammenligning av Flexbox, Grid og Kolonneoppsett
Denne artikkelen forklarer sammenligningen mellom Flexbox, Grid og Kolonneoppsett.
Du vil lære forskjellene mellom Flexbox, Grid og Kolonneoppsett, og når du bør bruke hver av dem.
YouTube Video
HTML for Forhåndsvisning
css-layout-comparision.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-layout-comparision.css">
9</head>
10<body>
11 <!-- Header -->
12 <header>
13 <h1>CSS Properties For Layout</h1>
14 </header>
15 <!-- Main content -->
16 <main>
17 <header>
18 <h2>Layout Comparision</h2>
19 </header>
20 <article>
21 <h3>flex</h3>
22 <section>
23 <section class="sample-view">
24 <div class="flex-container">
25 <div class="flex-item">Item 1</div>
26 <div class="flex-item">Item 2</div>
27 <div class="flex-item">Item 3</div>
28 <div class="flex-item">Item 4</div>
29 <div class="flex-item">Item 5</div>
30 <div class="flex-item">Item 6</div>
31 <div class="flex-item">Item 7</div>
32 <div class="flex-item">Item 8</div>
33 <div class="flex-item">Item 9</div>
34 </div>
35 </section>
36 </section>
37 </article>
38 <article>
39 <h3>grid</h3>
40 <section>
41 <section class="sample-view">
42 <div class="grid-box">
43 <div class="grid-item item1">Item 1</div>
44 <div class="grid-item item2">Item 2</div>
45 <div class="grid-item item3">Item 3</div>
46 <div class="grid-item item4">Item 4</div>
47 <div class="grid-item item5">Item 5</div>
48 <div class="grid-item item6">Item 6</div>
49 <div class="grid-item item7">Item 7</div>
50 <div class="grid-item item8">Item 8</div>
51 <div class="grid-item item9">Item 9</div>
52 </div>
53 </section>
54 </section>
55 </article>
56 <article>
57 <h3>column</h3>
58 <section>
59 <section class="sample-view">
60 <section class="columns-container">
61 <p class="columns-item">Item 1</p>
62 <p class="columns-item">Item 2</p>
63 <p class="columns-item">Item 3</p>
64 <p class="columns-item">Item 4</p>
65 <p class="columns-item">Item 5</p>
66 <p class="columns-item">Item 6</p>
67 <p class="columns-item">Item 7</p>
68 <p class="columns-item">Item 8</p>
69 <p class="columns-item">Item 9</p>
70 </section>
71 </section>
72 </section>
73 </article>
74 </main>
75</body>
76</html>
Sammenligning av Flexbox, Grid og Kolonneoppsett
CSS flex
, grid
og columns
er alle teknikker for justering og oppsett av elementer, men hver har sine egne styrker og ideelle bruksområder. Nedenfor er en tydelig forklaring av forskjellene gjennom sammenligning.
Flexbox(display: flex
)
1.flex-container {
2 display: flex;
3 justify-content: space-between;
4 align-items: center;
5 flex-wrap: wrap;
6 background-color: lightblue;
7 height: 200px;
8}
9
10.flex-item {
11 background-color: lightskyblue;
12 padding: 10px;
13 margin: 5px;
14 width: 70px;
15 height: auto;
16}
Funksjoner
- Egnet for enveisoppsett – enten horisontalt eller vertikalt.
- Gir fleksibel kontroll over rekkefølge og fleksibilitet for elementer.
- Best egnet for småskalaoppsett som navigasjonsfelt og grupper av knapper.
Fordeler
- Justerer automatisk størrelsen på barneelementer.
- Du kan endre rekkefølgen på elementer ved å bruke egenskaper som
flex-direction
,flex-wrap
ogorder
.
Eksempel på endring av visningsrekkefølge
Som et eksempel på å endre visningsrekkefølgen, la oss sette flex-direction
-egenskapen til column
.
1.flex-container {
2 flex-direction: column;
3}
Når flex-direction
er satt til column
, endrer elementene seg fra en horisontal oppsett til en vertikal. Oppsettet endres fra venstre-til-høyre til topp-til-bunn.
Grid(display: grid
)
1.grid-box {
2 display: grid;
3 grid-template-columns: 100px 100px 100px;
4 grid-template-rows: 50px 50px 50px;
5 gap: 20px;
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}
Funksjoner
- Ideell for todimensjonale oppsett.
- Gir mulighet for klar definisjon av rutenettbaserte oppsett.
- Flott for mer komplekse design og generell sidestruktur.
Fordeler
- Rader og kolonner kan defineres samtidig.
- Seksjoner kan plasseres ved å bruke navngitte områder (
grid-area
). - Barnelementer kan plasseres fritt innenfor rutenettet, noe som gir fleksibel kontroll over rekkefølgen.
Eksempel på endring av visningsrekkefølge
Som et eksempel på å endre visningsrekkefølgen, la oss bruke grid-template-areas
-egenskapen til å angi visningsposisjonene.
1.grid-box {
2 grid-template-areas:
3 "item1 item4 item5"
4 "item2 item6 item7"
5 "item3 item8 item9";
6}
7
8.item1 { grid-area: item1; }
9.item2 { grid-area: item2; }
10.item3 { grid-area: item3; }
11.item4 { grid-area: item4; }
12.item5 { grid-area: item5; }
13.item6 { grid-area: item6; }
14.item7 { grid-area: item7; }
15.item8 { grid-area: item8; }
16.item9 { grid-area: item9; }
Som du kan se, kan grid
brukes ikke bare til å endre visningsrekkefølgen, men også til å lage unike oppsett.
Columns(column-count
, column-width
)
1.columns-container {
2 background-color: lightblue;
3 columns: 100px 3;
4 column-gap: 20px;
5 column-rule: 2px solid #333;
6 padding: 10px;
7}
8
9.columns-item {
10 background-color: lightskyblue;
11 text-align: center;
12 margin: 20px auto;
13 color: white;
14 display: flex;
15 align-items: center;
16 justify-content: center;
17 font-size: 1.2rem;
18 border: 1px solid #ccc;
19 height: 50px;
20}
Funksjoner
- Du kan enkelt lage magasinlignende kolonner.
- Ideell for flytende tekstinnhold.
- Følger rekkefølgen i HTML-kilden, noe som gjør den mindre egnet for å kontrollere elementrekkefølge.
Fordeler
- Kan automatisk dele opp lang tekst.
- Du kan veldig enkelt lage avisoppsett.
Sammenligningstabell
Funksjon / Bruksområde | Flexbox | Grid | Kolonner |
---|---|---|---|
Oppsett Dimensjon | 1D (horisontal eller vertikal) | 2D (horisontal & vertikal) | 1D (vertikal) |
Best for | Komponentjustering | Hel sideoppsett | Flerspalte tekst |
Oppsett Fleksibilitet | Høy (rekkefølge & størrelse) | Svært høy (område-definisjon) | Lav (kun auto-deling) |
Kontroll over Underordnede | Fleksibel | Tydelig definert | Vanskelig å kontrollere |
Oppsett Intensjon | Innholdsbasert | Oppsettsbasert | Tekstbasert |
Sammendrag
- Flexbox er ideell når du vil justere elementer på en linje, som overskrifter eller kortlister.
- Grid er egnet når du vil designe hele oppsettet, som strukturen på en nettside.
- Kolonner er best når du vil formatere tekst i flere spalter, som i artikler eller blogger.
Du kan også kombinere dem etter behov. For eksempel kan du designe det overordnede oppsettet med Grid og justere interne elementer med Flex.
Du kan følge med på artikkelen ovenfor ved å bruke Visual Studio Code på vår YouTube-kanal. Vennligst sjekk ut YouTube-kanalen.