Mga katangian ng CSS na may kaugnayan sa Flexbox
Ipinaliliwanag ng artikulong ito ang mga katangian ng CSS na may kaugnayan sa flexbox.
Matututuhan mo kung paano gamitin ang flexbox at inline-flexbox.
YouTube Video
HTML para sa Preview
css-flex.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-flex.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>flex</h3>
23 <section>
24 <header><h4>CSS</h4></header>
25<pre class="sample">
26.flex-container {
27 display: flex;
28 justify-content: space-between;
29 align-items: center;
30 background-color: lightblue;
31 height: 100px;
32}
33
34.flex-item {
35 background-color: lightskyblue;
36 padding: 10px;
37 margin: 5px;
38 width: 70px;
39 height: auto;
40}
41</pre>
42 <header><h4>HTML</h4></header>
43<pre>
44<div class="flex-container">
45 <div class="flex-item">1</div>
46 <div class="flex-item">2</div>
47 <div class="flex-item">3</div>
48</div>
49</pre>
50 <header><h4>HTML+CSS</h4></header>
51 <section class="sample-view">
52 <div class="flex-container">
53 <div class="flex-item">Item 1</div>
54 <div class="flex-item">Item 2</div>
55 <div class="flex-item">Item 3</div>
56 </div>
57 </section>
58 </section>
59 </article>
60 <article>
61 <h3>flex-direction</h3>
62 <section>
63 <header><h4>flex-direction: row</h4></header>
64 <section class="sample-view">
65 <div class="flex-container" style="flex-direction: row;">
66 <div class="flex-item">Item 1</div>
67 <div class="flex-item">Item 2</div>
68 <div class="flex-item">Item 3</div>
69 </div>
70 </section>
71 <header><h4>flex-direction: row-reverse</h4></header>
72 <section class="sample-view">
73 <div class="flex-container" style="flex-direction: row-reverse;">
74 <div class="flex-item">Item 1</div>
75 <div class="flex-item">Item 2</div>
76 <div class="flex-item">Item 3</div>
77 </div>
78 </section>
79 <header><h4>flex-direction: column</h4></header>
80 <section class="sample-view">
81 <div class="flex-container" style="flex-direction: column; height: 200px;">
82 <div class="flex-item">Item 1</div>
83 <div class="flex-item">Item 2</div>
84 <div class="flex-item">Item 3</div>
85 </div>
86 </section>
87 <header><h4>flex-direction: column-reverse</h4></header>
88 <section class="sample-view">
89 <div class="flex-container" style="flex-direction: column-reverse; height: 200px;">
90 <div class="flex-item">Item 1</div>
91 <div class="flex-item">Item 2</div>
92 <div class="flex-item">Item 3</div>
93 </div>
94 </section>
95 </section>
96 </article>
97 <article>
98 <h3>justify-content</h3>
99 <section>
100 <header><h4>justify-content: flex-start</h4></header>
101 <section class="sample-view">
102 <div class="flex-container" style="justify-content: flex-start;">
103 <div class="flex-item">Item 1</div>
104 <div class="flex-item">Item 2</div>
105 <div class="flex-item">Item 3</div>
106 </div>
107 </section>
108 <header><h4>justify-content: flex-end</h4></header>
109 <section class="sample-view">
110 <div class="flex-container" style="justify-content: flex-end;">
111 <div class="flex-item">Item 1</div>
112 <div class="flex-item">Item 2</div>
113 <div class="flex-item">Item 3</div>
114 </div>
115 </section>
116 <header><h4>justify-content: center</h4></header>
117 <section class="sample-view">
118 <div class="flex-container" style="justify-content: center;">
119 <div class="flex-item">Item 1</div>
120 <div class="flex-item">Item 2</div>
121 <div class="flex-item">Item 3</div>
122 </div>
123 </section>
124 <header><h4>justify-content: space-between</h4></header>
125 <section class="sample-view">
126 <div class="flex-container" style="justify-content: space-between;">
127 <div class="flex-item">Item 1</div>
128 <div class="flex-item">Item 2</div>
129 <div class="flex-item">Item 3</div>
130 </div>
131 </section>
132 <header><h4>justify-content: space-around</h4></header>
133 <section class="sample-view">
134 <div class="flex-container" style="justify-content: space-around;">
135 <div class="flex-item">Item 1</div>
136 <div class="flex-item">Item 2</div>
137 <div class="flex-item">Item 3</div>
138 </div>
139 </section>
140 </section>
141 </article>
142 <article>
143 <h3>align-items</h3>
144 <section>
145 <header><h4>align-items: flex-start</h4></header>
146 <section class="sample-view">
147 <div class="flex-container" style="align-items: flex-start; height: 150px;">
148 <div class="flex-item">Item 1</div>
149 <div class="flex-item">Item 2</div>
150 <div class="flex-item">Item 3</div>
151 </div>
152 </section>
153 <header><h4>align-items: center</h4></header>
154 <section class="sample-view">
155 <div class="flex-container" style="align-items: center; height: 150px;">
156 <div class="flex-item">Item 1</div>
157 <div class="flex-item">Item 2</div>
158 <div class="flex-item">Item 3</div>
159 </div>
160 </section>
161 <header><h4>align-items: flex-end</h4></header>
162 <section class="sample-view">
163 <div class="flex-container" style="align-items: flex-end; height: 150px;">
164 <div class="flex-item">Item 1</div>
165 <div class="flex-item">Item 2</div>
166 <div class="flex-item">Item 3</div>
167 </div>
168 </section>
169 <header><h4>align-items: stretch</h4></header>
170 <section class="sample-view">
171 <div class="flex-container" style="align-items: stretch; height: 150px;">
172 <div class="flex-item">Item 1</div>
173 <div class="flex-item">Item 2</div>
174 <div class="flex-item">Item 3</div>
175 </div>
176 </section>
177 <header><h4>align-items: baseline</h4></header>
178 <section class="sample-view">
179 <div class="flex-container" style="align-items: baseline; height: 150px;">
180 <div class="flex-item">Item 1</div>
181 <div class="flex-item">Item 2</div>
182 <div class="flex-item">Item 3</div>
183 </div>
184 </section>
185 </section>
186 </article>
187 <article>
188 <h3>flex-wrap</h3>
189 <section>
190 <header><h4>flex-wrap: nowrap</h4></header>
191 <section class="sample-view">
192 <div class="flex-container" style="flex-wrap: nowrap;">
193 <div class="flex-item">Item 1</div>
194 <div class="flex-item">Item 2</div>
195 <div class="flex-item">Item 3</div>
196 <div class="flex-item">Item 4</div>
197 <div class="flex-item">Item 5</div>
198 <div class="flex-item">Item 6</div>
199 <div class="flex-item">Item 7</div>
200 <div class="flex-item">Item 8</div>
201 <div class="flex-item">Item 9</div>
202 </div>
203 </section>
204 <header><h4>flex-direction: wrap</h4></header>
205 <section class="sample-view">
206 <div class="flex-container" style="flex-wrap: wrap; height: 300px;">
207 <div class="flex-item">Item 1</div>
208 <div class="flex-item">Item 2</div>
209 <div class="flex-item">Item 3</div>
210 <div class="flex-item">Item 4</div>
211 <div class="flex-item">Item 5</div>
212 <div class="flex-item">Item 6</div>
213 <div class="flex-item">Item 7</div>
214 <div class="flex-item">Item 8</div>
215 <div class="flex-item">Item 9</div>
216 </div>
217 </section>
218 <header><h4>flex-direction: wrap-reverse</h4></header>
219 <section class="sample-view">
220 <div class="flex-container" style="flex-wrap: wrap-reverse; height: 300px;">
221 <div class="flex-item">Item 1</div>
222 <div class="flex-item">Item 2</div>
223 <div class="flex-item">Item 3</div>
224 <div class="flex-item">Item 4</div>
225 <div class="flex-item">Item 5</div>
226 <div class="flex-item">Item 6</div>
227 <div class="flex-item">Item 7</div>
228 <div class="flex-item">Item 8</div>
229 <div class="flex-item">Item 9</div>
230 </div>
231 </section>
232 </section>
233 </article>
234 <article>
235 <h3>flex-grow</h3>
236 <section>
237 <header><h4>CSS</h4></header>
238<pre class="sample">
239.item1 {
240 flex-grow: 1;
241}
242
243.item2 {
244 flex-grow: 2;
245}
246
247.item3 {
248 flex-grow: 0;
249}</pre>
250 <header><h4>HTML+CSS</h4></header>
251 <section class="sample-view">
252 <div class="flex-container">
253 <div class="flex-item" style="flex-grow: 1;">Item 1</div>
254 <div class="flex-item" style="flex-grow: 2;">Item 2</div>
255 <div class="flex-item" style="flex-grow: 0;">Item 3</div>
256 </div>
257 </section>
258 </section>
259 </article>
260 <article>
261 <h3>flex-shrink</h3>
262 <section>
263 <header><h4>CSS</h4></header>
264<pre class="sample">
265.item1 {
266 flex-shrink: 0;
267}
268.item2 {
269 flex-shrink: 1;
270}
271.item3 {
272 flex-shrink: 1;
273}</pre>
274 <header><h4>HTML+CSS</h4></header>
275 <section class="sample-view">
276 <div class="flex-container" style="width: 200px;">
277 <div class="flex-item" style="flex-shrink: 0;">Item 1</div>
278 <div class="flex-item" style="flex-shrink: 1;">Item 2</div>
279 <div class="flex-item" style="flex-shrink: 1;">Item 3</div>
280 </div>
281 </section>
282 </section>
283 </article>
284 <article>
285 <h3>flex-basis</h3>
286 <section>
287 <header><h4>CSS</h4></header>
288<pre class="sample">
289.item1 {
290 flex-basis: 100px;
291}
292.item2 {
293 flex-basis: 200px;
294}
295.item3 {
296 flex-basis: 25%;
297}</pre>
298 <header><h4>HTML+CSS</h4></header>
299 <section class="sample-view">
300 <div class="flex-container">
301 <div class="flex-item" style="flex-basis: 100px;">Item 1</div>
302 <div class="flex-item" style="flex-basis: 200px;">Item 2</div>
303 <div class="flex-item" style="flex-basis: 25%;">Item 3</div>
304 </div>
305 </section>
306 </section>
307 </article>
308 <article>
309 <h3>align-self</h3>
310 <section>
311 <header><h4>CSS</h4></header>
312<pre class="sample">
313.item1 {
314 align-self: flex-start;
315}
316.item2 {
317 align-self: center;
318}
319.item3 {
320 align-self: flex-end;
321}</pre>
322 <header><h4>HTML+CSS</h4></header>
323 <section class="sample-view">
324 <div class="flex-container" style="height: 150px;">
325 <div class="flex-item" style="align-self: flex-start;">Item 1</div>
326 <div class="flex-item" style="align-self: center;">Item 2</div>
327 <div class="flex-item" style="align-self: flex-end;">Item 3</div>
328 </div>
329 </section>
330 </section>
331 </article>
332 <article>
333 <h3>order</h3>
334 <section>
335 <header><h4>CSS</h4></header>
336<pre class="sample">
337.item1 {
338 order: 3;
339}
340
341.item2 {
342 order: 1;
343}
344
345.item3 {
346 order: 2;
347}</pre>
348 <header><h4>HTML+CSS</h4></header>
349 <section class="sample-view">
350 <div class="flex-container">
351 <div class="flex-item" style="order: 3;">Item 1</div>
352 <div class="flex-item" style="order: 1;">Item 2</div>
353 <div class="flex-item" style="order: 2;">Item 3</div>
354 </div>
355 </section>
356 </section>
357 </article>
358 <article>
359 <h3>inline-flex</h3>
360 <section>
361 <header><h4>display: inline-flex</h4></header>
362 <section class="sample-view">
363 Here is an example of inline-flex:
364 <div class="inline-container">
365 <div class="inline-item">1</div>
366 <div class="inline-item">2</div>
367 <div class="inline-item">3</div>
368 </div>
369 This text is in the same line as the inline-flex container.
370 </section>
371 </section>
372 </article>
373 </main>
374</body>
375</html>
Flexbox at Inline Flexbox
flex
1.flex-container {
2 display: flex;
3 justify-content: space-between;
4 align-items: center;
5 height: 100px;
6}
7
8.flex-item {
9 background-color: lightskyblue;
10 padding: 10px;
11 margin: 5px;
12 width: 70px;
13 height: auto;
14}
Ang flex
ay isang katangian na ginagamit sa CSS upang mahusay na ihanay at ayusin ang mga elemento, at ito ay bahagi ng flexbox layout system. Ang sistemang ito ay pangunahing para sa madaling pag-aayos at pamamahagi ng mga elemento ng anak (flex items) sa loob ng isang container at mas flexible kaysa sa tradisyunal na float
o position
.
- Ang klase na
flex-box
ay tumutukoy sa katangiangdisplay
bilangflex
upang magamit ang flex layout. - Ang katangiang
justify-content
na mayspace-between
ay naglalagay ng mga elemento sa kanan at kaliwang dulo habang pantay na ipinapamahagi ang espasyo sa pagitan nila. - Ang katangiang
align-items
na itinakda sacenter
ay patayong iniha-hanap ang mga elemento.
Pangunahing Estruktura ng Flexbox
1<div class="flex-container">
2 <div class="flex-item">Item 1</div>
3 <div class="flex-item">Item 2</div>
4 <div class="flex-item">Item 3</div>
5</div>
6
7<style>
8.flex-container {
9 display: flex;
10 /* Other flex properties */
11 flex-direction: row | row-reverse | column | column-reverse;
12 justify-content: flex-start | flex-end | center | space-between | space-around;
13 align-items: stretch | flex-start | flex-end | center | baseline;
14 flex-wrap: nowrap | wrap | wrap-reverse;
15}
16.flex-item {
17 /* Styles applied to individual items */
18 flex-grow: 0 | 1 | 2 | ...;
19 flex-shrink: 0 | 1;
20 flex-basis: auto | 10px | 25% | ...;
21 align-self: stretch | flex-start | flex-end | center | baseline;
22 order: 0 | 1 | 2 | ... | -1 | -2 | ...;
23}
24</style>
Ang Flexbox ay may dalawang pangunahing bahagi: ang flex container at ang flex items.
- Ang flex container ay ang parent na elemento na bumabalot sa mga child na elemento, na isinasagawa gamit ang
display: flex
. - Ang flex items ay ang mga elementong inilalagay sa loob ng flex container, na nangangahulugang ang direktang mga anak ng container.
Mga Katangian ng Flex Container
Ang mga sumusunod na katangian ay may kaugnayan sa flex container.
-
Tukuyin ang
flex
sa katangiangdisplay
upang maitalaga ang isang flex container. Ang mga panloob na elemento ng anak ay nagiging mga flex item. -
Ang katangiang
flex-direction
ay tumutukoy sa direksyong inilalagay ang mga flex items. Ang sumusunod na mga halaga ay maaaring itakda:.row
: Ipinapantay nang pahalang mula kaliwa papuntang kanan. Ito ang default na halaga.row-reverse
: Naka-align nang pahalang mula kanan papunta kaliwa.column
: Naka-align nang patayo mula itaas papunta ibaba.column-reverse
: Naka-align nang patayo mula ibaba papunta itaas.
-
Ang
justify-content
na property ay tumutukoy kung paano naka-align ang flex items nang pahalang (kasabay ng pangunahing axis).flex-start
: Naka-align sa simula (kaliwa).flex-end
: Naka-align sa dulo (kanan).center
: Naka-align sa gitna.space-between
: Pantay-pantay na hinahati ang espasyo sa pagitan ng mga items.space-around
: Pantay-pantay na hinahati ang espasyo sa paligid ng mga items.
-
Ang
align-items
na property ay tumutukoy kung paano naka-align ang mga items nang patayo (kasabay ng cross axis).flex-start
: Naka-align sa itaas.center
: Naka-align nang patayo sa gitna.flex-end
: Naka-align sa ibaba.stretch
: Ibinibinat upang mapuno ang taas ng container.baseline
: Naka-align sa baseline ng teksto.
-
Ang
flex-wrap
na property ay tumutukoy kung kailangan bang mag-wrap ang mga items kapag lumagpas ito sa lapad ng container.nowrap
: Walang wrapping. Ito ang default na halaga.wrap
: Nagwa-wrap sa mga items.wrap-reverse
: Nagwa-wrap sa mga items sa pabaligtad na ayos.
Mga Property ng Flex Items
Ang mga sumusunod na property ay nauugnay sa flex items.
-
Ang
flex-grow
na property ay tumutukoy sa bilis ng paglaki ng isang item. Kapag mas malaki ang halaga, mas malaki ang okupado nitong espasyo kumpara sa iba.- Kapag
0
, hindi lalaki ang item. Ito ang default na halaga. - Kapag
1
o higit pa, tinutukoy ang bilis ng paglaki.
- Kapag
-
Ang ari-arian na
flex-shrink
ay nagpapahiwatig ng bilis ng pagliit ng isang item. Mas mataas ang halaga, mas titipid ang item.- Kung
1
, ang item ay lilit kapag walang sapat na espasyo. Ito ang default na halaga. - Kung
0
, hindi ito lilit.
- Kung
-
Ang ari-arian na
flex-basis
ay nagpapahiwatig ng unang lapad o taas ng bawat item. Karaniwan, ito ang sukat sa pangunahing axis. Ang default na halaga ayauto
, na nakabatay sa sukat ng nilalaman, ngunit maaari mong tukuyin ang mga naayos na halaga sa mga pixel o porsyento. -
Ang ari-arian na
align-self
ay nagpapahiwatig kung paano i-align ang isang indibidwal na flex item sa kahabaan ng cross axis. Maaari nitong palitan ang halaga na itinakda ngalign-items
. -
Ang ari-arian na
order
ay binabago ang pagkakasunod ng pagpapakita ng flex items. Ang default ay0
, ngunit ang pagtukoy ng positibong numero ay ilalagay ito sa huli, at ang negatibong numero ay ilalagay ito sa simula.
Mga Benepisyo ng Flexbox
Ang mga benepisyo ng flexbox ay kinabibilangan ng mga sumusunod na puntos:.
- Flexible na layout: Maaari mong kontrolin nang flexible ang alignment, espasyo, at direksyon ng mga elemento.
- Angkop para sa responsive design: Ang mga elementong anak ay awtomatikong umaangkop ayon sa laki ng elementong magulang.
inline-flex
1.inline-container {
2 display: inline-flex;
3 border: 2px solid #000;
4 padding: 10px;
5 justify-content: space-between;
6 background-color: lightblue;
7 width: 150px;
8 height: 50px;
9}
10.inline-item {
11 background-color: lightskyblue;
12 padding: 10px;
13 margin: 5px;
14 width: 20px;
15 height: auto;
16}
-
Ang
inline-flex
ay isang istilo ng layout sa CSS na nagbibigay-daan sa iyo na i-layout ang nilalaman gamit ang flexbox habang inia-align ang elemento sa inline flow. Ito ay kumikilos na katulad ngdisplay: flex
, ngunit anginline-flex
ay nagiging sanhi ng elemento mismo upang kumilos bilang isang inline na elemento. -
Sa halimbawa na ito, ang
inline-flex
ay inilalapat sa klase ngcontainer
. Samakatuwid, ang klase ngcontainer
ay kumikilos bilang isang inline-level na elemento sa loob ng elementong magulang na<div>
. Kasabay nito, ang mga elemento ng klase naitem
, na mga anak na elemento sa loob ng klase ngcontainer
, ay isinaayos alinsunod sa mga panuntunan ng flexbox. Sa halimbawang ito, angjustify-content: space-between
ay ginamit, kaya't ang espasyo ay pantay na nahahati sa pagitan ng mga anak na elemento.
Mga halimbawang paggamit ng inline-flex
Ang inline-flex
ay partikular na kapaki-pakinabang sa mga kaso tulad ng:.
-
Kapag nais mong gumamit ng flex na layout sa mga inline na elemento Ito ay kapaki-pakinabang kapag kailangan mong gumamit ng flexbox para sa pag-posisyon sa maliliit na UI components tulad ng mga button o icon. Halimbawa, kapag nais mong i-align ang isang icon at teksto nang magkatabi at i-center ang mga ito.
-
Kapag gumagawa ng masalimuot na mga layout habang pinapanatili ang inline na daloy Ginagamit ito kapag nais mong samantalahin ang kakayahan ng flexbox upang gawing flexible ang panloob na layout habang ginagampanan pa rin itong parang isang inline na elemento. Halimbawa, kapag nais mong i-line up ang maraming elemento sa parehong hilera at i-adjust ang mga child na elemento sa loob ng mga ito.
Maaari mong sundan ang artikulo sa itaas gamit ang Visual Studio Code sa aming YouTube channel. Paki-check din ang aming YouTube channel.