Paghahambing ng Flexbox, Grid, at Column Layouts

Paghahambing ng Flexbox, Grid, at Column Layouts

Ang artikulong ito ay nagpapaliwanag ng paghahambing sa pagitan ng Flexbox, Grid, at Column Layouts.

Matututuhan mo ang mga pagkakaiba sa pagitan ng Flexbox, Grid, at Column Layouts, at kung kailan gamitin ang bawat isa.

YouTube Video

HTML para sa Preview

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>

Paghahambing ng Flexbox, Grid, at Column Layouts

Ang CSS flex, grid, at columns ay iba't ibang pamamaraan para sa pag-align at pag-layout ng mga elemento, ngunit bawat isa ay may sariling lakas at mga angkop na gamit. Narito sa ibaba ang malinaw na paliwanag sa kanilang mga pagkakaiba sa pamamagitan ng paghahambing.

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}

Mga Tampok

  • Angkop para sa isang direksyon na layout—pahalang o patayo.
  • Pinapayagan ang flexible na kontrol sa pagkakasunod-sunod at flexibility ng mga elemento.
  • Pinakamainam para sa maliliit na layout tulad ng navigation bars at mga grupo ng button.

Mga Bentahe

  • Awtomatikong inaayos ang sukat ng mga child element.
  • Maaari mong baguhin ang pagkakasunod-sunod ng mga elemento gamit ang mga property tulad ng flex-direction, flex-wrap, at order.

Halimbawa ng pagbabago sa pagkakasunod-sunod ng display

Bilang halimbawa ng pagbabago sa pagkakasunod-sunod ng display, itakda natin ang property na flex-direction sa column.

1.flex-container {
2    flex-direction: column;
3}

Kapag ang flex-direction ay itinakda sa column, ang mga item ay nagbabago mula sa horizontal na layout patungo sa vertical. Ang layout ay nagbabago mula kaliwa-papuntang-kanan patungo sa itaas-papuntang-ibaba.

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}

Mga Tampok

  • Perpekto para sa dalawang-dimensyon na layout.
  • Pinapayagan ang malinaw na pagdeklara ng mga layout na nakabase sa grid.
  • Mahusay para sa mas komplikadong disenyo at pangkalahatang estruktura ng pahina.

Mga Bentahe

  • Ang mga hanay at kolum ay maaaring tukuyin nang sabay.
  • Ang mga seksiyon ay maaaring ilagay gamit ang mga tinukoy na lugar (grid-area).
  • Ang mga child element ay maaaring ilagay ng malaya sa loob ng grid, pinapayagan ang flexible na kontrol sa pagkakasunod-sunod.

Halimbawa ng pagbabago sa pagkakasunod-sunod ng display

Bilang halimbawa ng pagbabago sa pagkakasunod-sunod ng display, gamitin natin ang property na grid-template-areas para itakda ang mga display position.

 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; }

Gaya ng makikita mo, ang grid ay maaaring gamitin hindi lamang sa pagbabago ng pagkakasunod-sunod ng display kundi pati na rin sa paglikha ng mga natatanging layout.

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}

Mga Tampok

  • Madali kang makakalikha ng mga column na parang magazine-style.
  • Perpekto para sa umaagos na nilalaman ng teksto.
  • Sinusunod ang pagkakasunod-sunod sa HTML source, kaya't hindi ito gaanong angkop para sa pagkontrol ng pagkakasunod-sunod ng elemento.

Mga Bentahe

  • Maaaring awtomatikong hatiin ang mahabang teksto.
  • Napakadali mong makalikha ng mga layout na parang istilong diyaryo.

Tablang Paghahambing

Tampok / Gamit na Kaso Flexbox Grid Mga Haligi
Sukat ng Layout 1D (pahalang o patayo) 2D (pahalang at patayo) 1D (patayo)
Pinakamainam Para sa Pag-aayos ng mga bahagi Buong estruktura ng pahina Tekstong multi-hilera
Kakayahang umangkop sa Layout Mataas (pagkakasunod & sukat) Napakataas (pagpapakahulugan ng lugar) Mababa (awtomatikong hati lamang)
Pagkontrol sa Mga Elemento Flexible Malinaw na nakalahad Mahirap kontrolin
Layunin ng Layout Naka-base sa nilalaman Naka-base sa layout Naka-base sa teksto

Buod

  • Ang Flexbox ay perpekto kapag nais mong ihanay ang mga elemento nang pantay-pantay, gaya ng mga header o listahan ng card.
  • Ang Grid ay angkop kapag nais mong idisenyo ang buong layout, gaya ng estruktura ng isang web page.
  • Ang Mga Haligi ay pinakamahusay kapag nais mong i-format ang teksto sa maraming hilera, gaya ng sa mga artikulo o blog.

Maaari mo ring pagsamahin ang mga ito kung kinakailangan. Halimbawa, maaari mong idisenyo ang kabuuang layout gamit ang Grid at ihanay ang mga panloob na elemento gamit ang Flex.

Maaari mong sundan ang artikulo sa itaas gamit ang Visual Studio Code sa aming YouTube channel. Paki-check din ang aming YouTube channel.

YouTube Video