Properti CSS yang Berhubungan dengan Tata Letak
Artikel ini menjelaskan properti CSS yang berhubungan dengan tata letak.
Anda dapat mempelajari cara penggunaan dan penulisan properti display
dan position
.
YouTube Video
HTML untuk Pratinjau
css-layout.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.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>display: block</h3>
23 <section>
24 <header><h4>CSS</h4></header>
25<pre class="sample">
26.block-element {
27 display: block;
28 width: 400px;
29 background-color: lightblue;
30 padding: 10px;
31 margin-bottom: 10px;
32}
33</pre>
34 <header><h4>HTML</h4></header>
35 <pre><div class="block-element">This is a block element.</div></pre>
36 <header><h4>HTML+CSS</h4></header>
37 <section class="sample-view">
38 <div class="block-element">This is a block element.</div>
39 </section>
40 </section>
41 </article>
42 <article>
43 <h3>display: inline</h3>
44 <section>
45 <header><h4>CSS</h4></header>
46<pre class="sample">
47span.inline-element {
48 background-color: lightgray;
49 padding: 10px;
50}
51
52div.inline-element {
53 display: inline;
54 background-color: lightblue;
55 padding: 10px;
56}
57</pre>
58 <header><h4>HTML</h4></header>
59<pre>
60<span class="inline-element">This is an inline element.</span>
61<div class="inline-element">div tag with "display: inline"</div>
62</pre>
63 <header><h4>HTML+CSS</h4></header>
64 <section class="sample-view">
65 <span class="inline-element">This is an inline element.</span>
66 <div class="inline-element">div tag with "display: inline"</div>
67 </section>
68 </section>
69 </article>
70 <article>
71 <h3>display: inline-block</h3>
72 <section>
73 <header><h4>CSS</h4></header>
74<pre class="sample">
75.inline-block-element {
76 display: inline-block;
77 width: 200px;
78 background-color: lightblue;
79 padding: 10px;
80}
81</pre>
82 <header><h4>HTML</h4></header>
83<pre>
84<span class="inline-element">This is an inline element.</span>
85<div class="inline-block-element">This is an inline-block element.</div>
86<span class="inline-element">Another inline element.</span>
87</pre>
88 <header><h4>HTML+CSS</h4></header>
89 <section class="sample-view">
90 <span class="inline-element">This is an inline element.</span>
91 <div class="inline-block-element">This is an inline-block element.</div>
92 <span class="inline-element">Another inline element.</span>
93 </section>
94 </section>
95 </article>
96 <article>
97 <h3>display: none</h3>
98 <section>
99 <header><h4>CSS</h4></header>
100<pre class="sample">
101div.none-element {
102 display: none;
103 background-color: lightblue;
104 padding: 10px;
105}
106</pre>
107 <header><h4>HTML</h4></header>
108 <pre><div class="none-element">This is a none element.</div></pre>
109 <header><h4>HTML+CSS</h4></header>
110 <section class="sample-view">
111 <div class="none-element">This is a none element.</div>
112 </section>
113 </section>
114 </article>
115 <article>
116 <h3>display: flex</h3>
117 <section>
118 <header><h4>CSS</h4></header>
119<pre class="sample">
120.flex-container {
121 display: flex;
122 justify-content: space-between;
123 background-color: lightgray;
124 padding: 10px;
125}
126
127.flex-container div {
128 width: 120px;
129 background-color: lightblue;
130}
131</pre>
132 <header><h4>HTML</h4></header>
133<pre>
134<div class="flex-container">
135 <div>Item 1</div>
136 <div>Item 2</div>
137</div>
138</pre>
139 <header><h4>HTML+CSS</h4></header>
140 <section class="sample-view">
141 <div class="flex-container">
142 <div>Flex item 1</div>
143 <div>Flex item 2</div>
144 </div>
145 </section>
146 </section>
147 </article>
148 <article>
149 <h3>display: inline-flex</h3>
150 <section>
151 <header><h4>CSS</h4></header>
152<pre class="sample">
153.inline-flex-container {
154 display: inline-flex;
155 width: 250px;
156 justify-content: space-between;
157 background-color: lightgray;
158 padding: 10px;
159}
160
161.inline-flex-container div {
162 width: 100px;
163 background-color: lightblue;
164}
165</pre>
166 <header><h4>HTML</h4></header>
167<pre>
168<span class="inline-element">Inline element</span>
169<div class="inline-flex-container">
170 <div>Inline Flex item 1</div>
171 <div>Inline Flex item 2</div>
172</div>
173</pre>
174 <header><h4>HTML+CSS</h4></header>
175 <section class="sample-view">
176 <span class="inline-element">Inline element</span>
177 <div class="inline-flex-container">
178 <div>Inline Flex item 1</div>
179 <div>Inline Flex item 2</div>
180 </div>
181 </section>
182 </section>
183 </article>
184 <article>
185 <h3>display: grid</h3>
186 <section>
187 <header><h4>CSS</h4></header>
188<pre class="sample">
189.grid-container {
190 display: grid;
191 grid-template-columns: repeat(2, 1fr);
192 gap: 10px;
193 background-color: #f3f3f3;
194 padding: 10px;
195 height: 200px;
196}
197.grid-container div {
198 background-color: lightblue;
199 border: 1px solid #aaa;
200 padding: 5px;
201 text-align: center;
202 width: 100px;
203}
204</pre>
205 <header><h4>HTML</h4></header>
206<pre>
207<div class="grid-container">
208 <div>Item 1</div>
209 <div>Item 2</div>
210 <div>Item 3</div>
211 <div>Item 4</div>
212</div>
213</pre>
214 <header><h4>HTML+CSS</h4></header>
215 <section class="sample-view">
216 <div class="grid-container">
217 <div>Item 1</div>
218 <div>Item 2</div>
219 <div>Item 3</div>
220 <div>Item 4</div>
221 </div>
222 </section>
223 </section>
224 </article>
225 <article>
226 <h3>display: inline-grid</h3>
227 <section>
228 <header><h4>CSS</h4></header>
229<pre class="sample">
230.inline-grid-element {
231 display: inline-grid;
232 grid-template-columns: 1fr 1fr;
233 gap: 5px;
234 background-color: lightblue;
235 padding: 5px;
236 width: 200px;
237 height: 150px;
238}
239.inline-grid-element div {
240 background-color: lightskyblue;
241 padding: 5px;
242 text-align: center;
243 border: 1px solid #ccc;
244 width: 80px;
245 height: 25px;
246}
247</pre>
248 <header><h4>HTML</h4></header>
249<pre>
250<span class="inline-element">This is an inline element.</span>
251<div class="inline-grid-element">
252 <div>Item 1</div>
253 <div>Item 2</div>
254 <div>Item 3</div>
255 <div>Item 4</div>
256</div>
257<span class="inline-element">Another inline element.</span>
258</pre>
259 <header><h4>HTML+CSS</h4></header>
260 <section class="sample-view">
261 <span class="inline-element">This is an inline element.</span>
262 <div class="inline-grid-element">
263 <div>Item 1</div>
264 <div>Item 2</div>
265 <div>Item 3</div>
266 <div>Item 4</div>
267 </div>
268 <span class="inline-element">Another inline element.</span>
269 </section>
270 </section>
271 </article>
272 <article>
273 <h3>display: table</h3>
274 <section>
275 <header><h4>CSS</h4></header>
276<pre class="sample">
277.table-container {
278 display: table;
279 border-collapse: collapse;
280 width: 100%;
281 height: 100%;
282}
283
284.table-row {
285 display: table-row;
286}
287
288.table-cell {
289 display: table-cell;
290 border: 1px solid #999;
291 padding: 8px;
292 text-align: center;
293 vertical-align: middle;
294 background-color: lightblue;
295}
296
297.header-row .table-cell {
298 font-weight: bold;
299 background-color: lightskyblue;
300}
301</pre>
302 <header><h4>HTML</h4></header>
303<pre>
304<section>
305 <div class="table-container">
306 <div class="table-row header-row">
307 <div class="table-cell">Header 1</div>
308 <div class="table-cell">Header 2</div>
309 </div>
310 <div class="table-row">
311 <div class="table-cell">Row 1, Cell 1</div>
312 <div class="table-cell">Row 1, Cell 2</div>
313 </div>
314 <div class="table-row">
315 <div class="table-cell">Row 2, Cell 1</div>
316 <div class="table-cell">Row 2, Cell 2</div>
317 </div>
318 </div>
319</section>
320</pre>
321 <header><h4>HTML+CSS</h4></header>
322 <section class="sample-view">
323 <div class="table-container">
324 <div class="table-row header-row">
325 <div class="table-cell">Header 1</div>
326 <div class="table-cell">Header 2</div>
327 </div>
328 <div class="table-row">
329 <div class="table-cell">Row 1, Cell 1</div>
330 <div class="table-cell">Row 1, Cell 2</div>
331 </div>
332 <div class="table-row">
333 <div class="table-cell">Row 2, Cell 1</div>
334 <div class="table-cell">Row 2, Cell 2</div>
335 </div>
336 </div>
337 </section>
338 </section>
339 </article>
340 <article>
341 <h3>display: list-item</h3>
342 <section>
343 <header><h4>CSS</h4></header>
344<pre class="sample">
345.list-item-element {
346 display: list-item;
347 list-style-position: inside;
348 list-style-type: disc;
349 margin-left: 20px;
350 background-color: lightblue;
351 padding: 10px;
352 height: min-content;
353}
354</pre>
355 <header><h4>HTML</h4></header>
356<pre>
357<div class="list-item-element">This is a list item element.</div>
358<div class="list-item-element">Another list item element.</div>
359<div class="list-item-element">Yet another list item element.</div>
360</pre>
361 <header><h4>HTML+CSS</h4></header>
362 <section class="sample-view">
363 <div class="list-item-element">This is a list item element.</div>
364 <div class="list-item-element">Another list item element.</div>
365 <div class="list-item-element">Yet another list item element.</div>
366 </section>
367 </section>
368 </article>
369 <article>
370 <h3>position</h3>
371 <section style="height: auto;">
372 <header><h4>position: static</h4></header>
373 <section class="sample-view">
374 <div class="static-element">This is a static element.</div>
375 </section>
376 <header><h4>position: relative; top: 10px; left: 20px;</h4></header>
377 <section class="sample-view">
378 <div class="relative-element">This is a relative element.</div>
379 </section>
380 <header><h4>position: absolute; top: 10px; left: 20px;</h4></header>
381 <section class="sample-view">
382 <div class="absolute-container">
383 <div class="absolute-element">This is an absolute element.</div>
384 </div>
385 </section>
386 <header><h4>position: fixed; bottom: 10px; right: 10px;</h4></header>
387 <section class="sample-view">
388 <div class="fixed-element">This is a fixed element.</div>
389 </section>
390 <header><h4>position: sticky; top: 0;</h4></header>
391 <section class="sample-view">
392 <div class="sticky-container">
393 <div style="width: 20px; height: 400px; background: linear-gradient(to top, red, blue);"></div>
394 <div class="sticky-element">This is a sticky element. Scroll down!</div>
395 </div>
396 </section>
397 </section>
398 </article>
399 </main>
400</body>
401</html>
{^ i18n 配置・レイアウト ^}
Properti display
Properti display
adalah properti CSS yang menentukan bagaimana elemen ditampilkan. Properti ini menentukan dalam format apa elemen dirender, seperti block, inline, flex, grid, atau hidden.
Nilai properti display
block
1.block-element {
2 display: block;
3 width: 400px;
4 background-color: lightblue;
5 padding: 10px;
6 margin-bottom: 10px;
7}
- Dengan menentukan
block
, elemen akan ditampilkan sebagai elemen tingkat blok. - Elemen blok ditampilkan di baris baru dalam halaman, memindahkan elemen lain ke baris berikutnya.
- Contoh elemen blok meliputi
<div>
,<p>
,<h1>
,<section>
,<article>
, dll.
inline
1span.inline-element {
2 background-color: lightgray;
3 padding: 10px;
4}
5
6div.inline-element {
7 display: inline;
8 background-color: lightblue;
9 padding: 10px;
10}
- Dengan menentukan
inline
, elemen akan ditampilkan sebagai elemen inline. - Elemen inline ditampilkan di baris yang sama dengan elemen tetangganya dan disejajarkan secara horizontal.
- Contoh elemen inline meliputi
<span>
,<a>
,<strong>
, dll. - Elemen inline ditempatkan di baris yang sama dengan elemen inline lainnya dan ditampilkan secara horizontal terus menerus, berbeda dengan elemen blok.
inline-block
1.inline-block-element {
2 display: inline-block;
3 width: 200px;
4 background-color: lightblue;
5 padding: 10px;
6}
- Menentukan
inline-block
menampilkan elemen sebagai elemen inline, tetapi juga memiliki karakteristik elemen blok. - Elemen inline-block ditampilkan di baris yang sama dengan elemen inline lainnya, tetapi Anda dapat mengatur tinggi dan lebar seperti elemen blok.
- Elemen
<img>
,<button>
, dan<canvas>
secara default berperilaku sepertiinline-block
.
none
1div.none-element {
2 display: none;
3 background-color: lightblue;
4 padding: 10px;
5}
- Menentukan
none
membuat elemen tidak ditampilkan. - Elemen menjadi sepenuhnya tak terlihat dan dikecualikan dari layar dan tata letak.
flex
1.flex-container {
2 display: flex;
3 justify-content: space-between;
4 background-color: lightgray;
5 padding: 10px;
6}
7
8.flex-container div {
9 width: 120px;
10 background-color: lightblue;
11}
- Menentukan
flex
menampilkan elemen sebagai kontainer flexbox. - Ini digunakan untuk mengatur dan menyelaraskan elemen anak (flex items) secara fleksibel.
- Dengan menggunakan flexbox, elemen anak dapat ditampilkan secara inline, dengan margin dan penyelarasan yang disesuaikan secara otomatis.
inline-flex
1.inline-flex-container {
2 display: inline-flex;
3 width: 250px;
4 justify-content: space-between;
5 background-color: lightgray;
6 padding: 10px;
7}
8
9.inline-flex-container div {
10 width: 100px;
11 background-color: lightblue;
12}
- Menentukan
inline-flex
akan menampilkan elemen sebagai wadah fleksibel sebaris. - Meskipun memiliki karakteristik flexbox, elemen ini diperlakukan seperti elemen sebaris dan ditampilkan pada baris yang sama dengan elemen lainnya.
grid
1.grid-container {
2 display: grid;
3 grid-template-columns: repeat(2, 1fr);
4 gap: 10px;
5 background-color: #f3f3f3;
6 padding: 10px;
7 height: 200px;
8}
9
10.grid-container div {
11 background-color: lightblue;
12 border: 1px solid #aaa;
13 padding: 5px;
14 text-align: center;
15 width: 100px;
16}
- Menentukan
grid
akan menampilkan elemen sebagai wadah kisi. - Tata letak kisi dapat diterapkan untuk menyusun elemen anak dalam baris dan kolom.
- Elemen anak dalam wadah kisi disusun rapi sepanjang kolom dan baris.
inline-grid
1.inline-grid-element {
2 display: inline-grid;
3 grid-template-columns: 1fr 1fr;
4 gap: 5px;
5 background-color: lightblue;
6 padding: 5px;
7 width: 200px;
8 height: 150px;
9}
10.inline-grid-element div {
11 background-color: lightskyblue;
12 padding: 5px;
13 text-align: center;
14 border: 1px solid #ccc;
15 width: 80px;
16 height: 25px;
17}
- Menentukan
inline-grid
akan menampilkan elemen sebagai wadah kisi sebaris. - Elemen ini menggunakan sistem tata letak kisi dan diperlakukan sebagai elemen sebaris.
table
1.table-container {
2 display: table;
3 border-collapse: collapse;
4 width: 100%;
5 height: 100%;
6}
7
8.table-row {
9 display: table-row;
10}
11
12.table-cell {
13 display: table-cell;
14 border: 1px solid #999;
15 padding: 8px;
16 text-align: center;
17 vertical-align: middle;
18 background-color: lightblue;
19}
20
21.header-row .table-cell {
22 font-weight: bold;
23 background-color: lightskyblue;
24}
- Menentukan
table
akan menampilkan elemen sebagai tabel. Elemen ini memiliki tata letak mirip dengan<table>
HTML, dan elemen anaknya diperlakukan sebagai sel tabel. - Seperti dalam contoh ini, atur properti
display
elemen anak ketable-row
atautable-cell
.- Ketika
table-row
ditentukan, elemen berperilaku seperti baris tabel (<tr>
). - Ketika
table-cell
ditentukan, elemen berperilaku seperti sel tabel (<td>
).
- Ketika
list-item
1.list-item-element {
2 display: list-item;
3 list-style-position: inside;
4 list-style-type: disc;
5 margin-left: 20px;
6 background-color: lightblue;
7 padding: 10px;
8 height: min-content;
9}
- Menentukan
list-item
akan menampilkan elemen sebagai item daftar. Properti ini biasanya diterapkan pada elemen<li>
yang digunakan dalam<ul>
atau<ol>
.
Properti position
1.static-element {
2 position: static;
3 background-color: lightblue;
4 padding: 10px;
5 margin-bottom: 20px;
6}
7
8.relative-element {
9 position: relative;
10 background-color: lightblue;
11 top: 10px;
12 left: 20px;
13 padding: 10px;
14 margin-bottom: 20px;
15}
16
17.absolute-container {
18 position: relative;
19 width: 500px;
20 height: 150px;
21 background-color: lightgray;
22 margin-bottom: 20px;
23}
24
25.absolute-element {
26 position: absolute;
27 top: 10px;
28 left: 20px;
29 background-color: lightblue;
30 padding: 10px;
31}
32
33.fixed-element {
34 position: fixed;
35 bottom: 10px;
36 right: 10px;
37 background-color: lightblue;
38 padding: 10px;
39}
40
41.sticky-container {
42 overflow: scroll;
43 height: 150px;
44 width: 500px;
45}
46
47.sticky-element {
48 position: sticky;
49 top: 0;
50 background-color: lightblue;
51 padding: 10px;
52}
position
adalah properti yang mengatur bagaimana elemen diposisikan dalam CSS. Properti ini dapat digunakan untuk memposisikan elemen secara relatif atau absolut terhadap elemen induk atau elemen lainnya, atau untuk menempatkannya secara tetap.
Nilai dari properti position
static
1.static-element {
2 position: static;
3}
- Dalam kelas
static-element
, propertiposition
ditentukan sebagaistatic
. Elemen diposisikan dalam alur normal. static
adalah nilai default. Jikaposition
tidak ditentukan,static
akan diterapkan.- Elemen diposisikan sesuai dengan alur dokumen normal. Properti
top
,right
,bottom
,left
tidak dapat digunakan.
relative
1.relative-element {
2 position: relative;
3 top: 10px;
4 left: 20px;
5}
- Dalam kelas
relative-element
, propertiposition
diatur kerelative
. Elemen bergerak relatif terhadap posisi normalnya. Dalam contoh ini, elemen diposisikan 10px ke bawah dan 20px ke kanan. - Menentukan
relative
memposisikan elemen secara relatif. Elemen bergerak dari posisi aslinya ke posisi yang ditentukan oleh propertitop
,right
,bottom
,left
, mengikuti alur dokumen normal. - Elemen yang diatur dengan positioning relatif meninggalkan ruang di posisi aslinya meski sudah berpindah.
- Dalam contoh ini, elemen bergerak 10 piksel ke bawah dan 20 piksel ke kanan dari posisi aslinya, tetapi alur dokumen diproses berdasarkan posisi aslinya.
absolute
1.absolute-element {
2 position: absolute;
3 top: 10px;
4 left: 20px;
5}
- Dalam kelas
absolute-element
, propertiposition
diatur keabsolute
. Dalam contoh ini, elemen diposisikan 10 piksel ke bawah dan 20 piksel ke kanan dari sudut kiri atas induknya (atau viewport). - Ketika
absolute
ditentukan, elemen diposisikan secara absolut relatif terhadap induknya. Jikaposition
elemen induk diatur kerelative
,absolute
, ataufixed
, elemen bergerak berdasarkan elemen induknya menggunakan propertitop
,right
,bottom
,left
. Jika tidak ditemukan elemen induk, elemen diposisikan relatif terhadap seluruh halaman (viewport). - Elemen yang diatur dengan positioning absolut dihapus dari alur dokumen normal dan tidak memengaruhi elemen lain.
fixed
1.fixed-element {
2 position: fixed;
3 top: 0;
4 right: 0;
5}
- Dalam kelas
fixed-element
, propertiposition
diatur kefixed
. Menentukanfixed
memposisikan elemen di lokasi tetap. Elemen dipasang tetap pada viewport dan tidak bergerak saat halaman digulir. - Sebagai contoh, ini digunakan untuk menjaga header halaman atau navigasi bar selalu terlihat.
- Dalam contoh ini, elemen terpasang di sudut kanan bawah layar dan tetap di sana bahkan saat halaman digulir.
sticky
1.sticky-element {
2 position: sticky;
3 top: 0;
4}
- Dalam kelas
sticky-element
,position
diatur kesticky
. - Ketika
sticky
ditentukan, elemen diposisikan secara dinamis sesuai dengan pengguliran. Elemen mengikuti alur dokumen normal, tetapi ketika halaman digulung, elemen akan "menempel" di posisi tertentu berdasarkan nilaitop
,right
,bottom
, danleft
yang ditentukan. sticky
berperilaku seperti elemen tetap dalam rentang tertentu.- Dalam contoh ini, elemen ditampilkan di posisi normalnya, tetapi ketika halaman digulung ke posisi
top
yang ditentukan, elemen akan menempel di posisi tersebut dan mengikuti pengguliran.
Properti top
, left
, bottom
, right
top
, left
, bottom
, dan right
adalah properti untuk mengontrol posisi elemen dalam CSS. Properti ini digunakan bersama dengan properti position
untuk menentukan seberapa jauh elemen akan dipindahkan ke arah tertentu relatif terhadap posisinya.
Namun, properti ini hanya berlaku jika position
diatur ke relative
, absolute
, fixed
, atau sticky
. Dalam nilai default static
, properti ini tidak memiliki efek.
Cara menggunakan top
, left
, bottom
, right
top
1.relative-element {
2 position: relative;
3 top: 20px; /* Positioned 20px from the top */
4}
- Properti
top
menentukan seberapa jauh elemen harus dipindahkan dari atas.- Dalam contoh ini, elemen bergerak 20px ke bawah dari posisinya yang normal.
left
1.absolute-element {
2 position: absolute;
3 left: 50px; /* Positioned 50px from the left */
4}
- Properti
left
menentukan seberapa jauh elemen harus dipindahkan dari kiri.- Dalam contoh ini, elemen bergerak 50px ke kanan dari kiri.
bottom
1.fixed-element {
2 position: fixed;
3 bottom: 10px; /* Positioned 10px from the bottom */
4}
- Properti
bottom
menentukan seberapa jauh elemen harus dipindahkan dari bawah.- Dalam contoh ini, elemen dipasang tetap 10px di atas bagian bawah layar. Elemen tetap berada di posisi tersebut bahkan saat menggulir.
right
1.sticky-element {
2 position: sticky;
3 right: 20px; /* Positioned 20px from the right */
4}
- Properti
right
menentukan seberapa jauh elemen harus dipindahkan dari kanan.- Dalam contoh ini, selama menggulir, elemen bergerak 20px ke kiri dari kanan dan tetap di posisi tersebut.
Hubungan dengan properti position
relative
: Memindahkan elemen dengan nilaitop
,left
,bottom
,right
yang ditentukan relatif terhadap posisinya yang normal.absolute
: Memindahkan elemen ke lokasitop
,left
,bottom
,right
yang ditentukan relatif terhadap leluhur terdekat denganposition
yang diatur kerelative
,absolute
, ataufixed
.fixed
: Memasang elemen pada posisi yang ditentukan relatif terhadap viewport (seluruh layar). Elemen tetap berada di posisi tersebut bahkan saat menggulir.sticky
: Elemen tetap berada pada posisinya yang normal hingga mencapai posisi tertentu saat menggulir, di mana elemen "menempel" pada posisi tersebut.
Anda dapat mengikuti artikel di atas menggunakan Visual Studio Code di saluran YouTube kami. Silakan periksa juga saluran YouTube kami.