K

Command Palette

Search for a command to run...

Daftar

Layouting dengan Utility Tailwind

Bangun layout yang kompleks dengan mudah! Pelajari cara menggunakan utility classes Tailwind CSS untuk menerapkan Flexbox dan Grid, mengatur perataan, urutan, dan celah antar elemen.

Ngatur Tata Letak Kayak Pro: Flexbox & Grid Versi Tailwind CSS!

Udah jago ngasih style dasar pake utility Tailwind? Keren! Sekarang, gimana caranya kita nyusun elemen-elemen itu biar tampil rapi di halaman? Entah itu mau dijejerin horizontal, vertikal, atau bahkan dibikin jadi kisi-kisi (grid) yang kompleks.

Nah, kamu pasti inget kan sama "superhero" layouting di CSS murni: Flexbox dan CSS Grid? Kabar baiknya, Tailwind CSS nyediain utility class yang super intuitif buat ngaktifin dan ngontrol Flexbox dan Grid ini langsung dari HTML-mu! Gak perlu lagi nulis banyak properti di file CSS terpisah buat layout dasar.

1. Display Utilities: "Sifat" Dasar Elemen ala Tailwind

Sebelum masuk ke Flexbox atau Grid, inget lagi soal properti display. Tailwind punya utility buat ini:

  • block: Bikin elemen jadi display: block; (mulai baris baru, lebar penuh).
  • inline-block: Bikin elemen jadi display: inline-block; (sejajar tapi bisa diatur width/height).
  • inline: Bikin elemen jadi display: inline; (sejajar, lebar sesuai konten).
  • hidden: Sama kayak display: none; (elemen ilang total dari layout).
  • flex: Nah, ini buat ngaktifin Flexbox Container! Sama kayak display: flex;.
  • inline-flex: Bikin Flex Container yang sifatnya inline.
  • grid: Ini buat ngaktifin Grid Container! Sama kayak display: grid;.
  • inline-grid: Bikin Grid Container yang sifatnya inline.
  • Dan ada beberapa lagi (table, flow-root, dll. yang lebih jarang dipake pemula).

Kamu tinggal tambahin class ini ke elemen parent yang mau kamu jadiin Flex atau Grid Container.

html
<div class="flex ..."> <!-- Ini jadi Flex Container -->
  <!-- Anak-anaknya otomatis jadi Flex Items -->
</div>
 
<div class="grid ..."> <!-- Ini jadi Grid Container -->
  <!-- Anak-anaknya otomatis jadi Grid Items -->
</div>
 
<span class="block bg-blue-200 p-2">Span ini jadi kayak Div</span>
<div class="inline bg-red-200 p-2">Div ini jadi kayak Span</div>

2. Flexbox Utilities: Ngatur Item Satu Dimensi Jadi Gampang!

Tailwind bikin pake Flexbox jadi kerasa alami banget. Sebagian besar properti Flexbox Container dan Flex Item punya padanan utility class-nya.

a. Untuk Flex Container (Elemen Parent)

  • flex-row: flex-direction: row; (default kalau kamu cuma nulis flex). Item dijejer horizontal.

  • flex-row-reverse: flex-direction: row-reverse;

  • flex-col: flex-direction: column; Item dijejer vertikal.

  • flex-col-reverse: flex-direction: column-reverse;

  • flex-wrap: flex-wrap: wrap; (Item boleh turun baris).

  • flex-wrap-reverse: flex-wrap: wrap-reverse;

  • flex-nowrap: flex-wrap: nowrap; (Default, item dipaksa satu baris).

  • justify-start: justify-content: flex-start;

  • justify-end: justify-content: flex-end;

  • justify-center: justify-content: center;

  • justify-between: justify-content: space-between;

  • justify-around: justify-content: space-around;

  • justify-evenly: justify-content: space-evenly;

  • items-start: align-items: flex-start;

  • items-end: align-items: flex-end;

  • items-center: align-items: center;

  • items-baseline: align-items: baseline;

  • items-stretch: align-items: stretch; (Default).

  • content-start, content-end, content-center, content-between, content-around, content-evenly, content-stretch: Ini buat align-content, cuma ngefek kalau flex-wrap: wrap; dan ada beberapa baris item.

  • gap-{size}, gap-x-{size}, gap-y-{size}: Buat ngasih jarak (gap) antar flex items. JAUH LEBIH GAMPANG daripada pake margin di tiap item! {size} ngikutin skala spacing Tailwind.

    • Contoh: gap-4 (gap 1rem di semua arah), gap-x-2 (gap horizontal 0.5rem), gap-y-8 (gap vertikal 2rem).

Contoh Flexbox Container:

html
<!-- Menu navigasi horizontal di tengah dengan jarak -->
<nav class="flex justify-center gap-x-6 py-4 bg-slate-100">
  <a href="#" class="hover:text-blue-500">Beranda</a>
  <a href="#" class="hover:text-blue-500">Produk</a>
  <a href="#" class="hover:text-blue-500">Kontak</a>
</nav>
 
<!-- Kartu-kartu yang dijejer dan bisa wrap, item di tengah vertikal -->
<div class="flex flex-wrap justify-around items-center gap-4 p-4 bg-gray-200 min-h-[200px]">
  <div class="bg-white p-4 rounded shadow w-40 text-center">Kartu 1</div>
  <div class="bg-white p-4 rounded shadow w-40 text-center">Kartu 2 Lebih Tinggi</div>
  <div class="bg-white p-4 rounded shadow w-40 text-center">Kartu 3</div>
  <div class="bg-white p-4 rounded shadow w-40 text-center">Kartu 4</div>
</div>

b. Untuk Flex Items (Elemen Anak)

  • order-{number} atau order-first, order-last, order-none: Buat ngatur urutan item. order-1, order-2, order-first (sama kayak order: -9999;), order-last (sama kayak order: 9999;).
  • grow atau grow-{value}: flex-grow: 1; atau flex-grow: value; (grow-0 itu flex-grow: 0;).
  • shrink atau shrink-{value}: flex-shrink: 1; atau flex-shrink: value; (shrink-0 itu flex-shrink: 0;).
  • basis-{size/percentage}: flex-basis (misal, basis-1/2 buat 50%, basis-auto, basis-0, basis-full).
  • flex-1: flex: 1 1 0%; (Item bisa tumbuh, bisa menciut, basis 0% - sering buat bagi ruang sama rata).
  • flex-auto: flex: 1 1 auto;
  • flex-initial: flex: 0 1 auto; (Default).
  • flex-none: flex: none; (0 0 auto).
  • self-start, self-end, self-center, self-stretch, self-auto, self-baseline: Buat align-self item individual.

Contoh Flex Items:

html
<div class="flex bg-slate-100 p-2 gap-2">
  <div class="flex-1 bg-blue-300 p-2 text-center">Item 1 (flex-1)</div>
  <div class="flex-1 bg-green-300 p-2 text-center">Item 2 (flex-1)</div>
  <div class="w-32 shrink-0 bg-red-300 p-2 text-center">Item 3 (lebar tetap, gak mau nyusut)</div> 
  <!-- w-32 untuk basis, shrink-0 agar tidak menyusut -->
</div>
 
<div class="flex items-start bg-slate-100 p-2 h-32 gap-2 mt-4">
  <div class="bg-purple-300 p-2">Awal</div>
  <div class="self-center bg-pink-300 p-2">Tengah Sendiri</div>
  <div class="self-end bg-yellow-300 p-2">Akhir Sendiri</div>
</div>

3. Grid Utilities: Arsitek Layout Dua Dimensi Versi Cepat!

Tailwind juga bikin CSS Grid jadi gampang dipake.

a. Untuk Grid Container

  • grid-cols-{number}: Nentuin jumlah kolom dengan lebar yang sama. Misal, grid-cols-3 bikin 3 kolom sama lebar (kayak 1fr 1fr 1fr). Maksimal biasanya sampe grid-cols-12.
  • grid-cols-none: grid-template-columns: none;.
  • grid-rows-{number}: Nentuin jumlah baris dengan tinggi yang sama (atau implisit).
  • grid-flow-row, grid-flow-col, grid-flow-row-dense, grid-flow-col-dense: Buat grid-auto-flow.
  • gap-{size}, gap-x-{size}, gap-y-{size}: Sama kayak di Flexbox, buat jarak antar sel grid.
  • justify-items-* (start, end, center, stretch).
  • align-items-* (start, end, center, stretch, baseline).
  • place-items-* (shorthand buat align-items dan justify-items).
  • (Untuk grid-template-columns dan grid-template-rows yang lebih kustom (misal, 200px 1fr auto), kamu bisa pake nilai arbitrer: grid-cols-[200px_1fr_auto]).

Contoh Grid Container:

html
<!-- Layout 3 kolom sederhana -->
<div class="grid grid-cols-3 gap-4 p-4 bg-gray-200">
  <div class="bg-violet-300 p-3 rounded">Kolom 1</div>
  <div class="bg-violet-300 p-3 rounded">Kolom 2</div>
  <div class="bg-violet-300 p-3 rounded">Kolom 3</div>
  <div class="bg-violet-300 p-3 rounded">Kolom 4 (akan di baris baru)</div>
</div>
 
<!-- Layout dengan ukuran kolom kustom -->
<div class="grid grid-cols-[200px_minmax(0,_1fr)_auto] gap-2 p-2 bg-lime-100 mt-4">
  <div class="bg-lime-300 p-2">Sidebar (200px)</div>
  <div class="bg-lime-400 p-2">Konten Utama (1fr)</div>
  <div class="bg-lime-300 p-2">Info (auto)</div>
</div>

b. Untuk Grid Items

  • col-span-{number}: Bikin item ngambil beberapa kolom. Misal, col-span-2 (item ngambil 2 kolom).
  • col-start-{line}, col-end-{line}: Nentuin posisi item berdasarkan garis kolom.
  • row-span-{number}: Bikin item ngambil beberapa baris.
  • row-start-{line}, row-end-{line}: Nentuin posisi item berdasarkan garis baris.
  • justify-self-* (start, end, center, stretch).
  • align-self-* (start, end, center, stretch, baseline).
  • place-self-* (shorthand buat align-self dan justify-self).

Contoh Grid Items:

html
<div class="grid grid-cols-4 grid-rows-2 gap-2 p-2 bg-cyan-100 h-48 mt-4">
  <div class="bg-cyan-400 p-2 rounded col-span-2">Item A (2 kolom)</div>
  <div class="bg-cyan-500 p-2 rounded row-span-2 self-center">Item B (2 baris, tengah vertikal)</div>
  <div class="bg-cyan-400 p-2 rounded">Item C</div>
  <div class="bg-cyan-400 p-2 rounded col-start-1 row-start-2">Item D (kolom 1, baris 2)</div>
  <!-- Item E akan mengisi sisa (kolom 2, baris 2) -->
  <div class="bg-cyan-400 p-2 rounded">Item E</div>
  <div class="bg-cyan-400 p-2 rounded col-start-4 row-start-2">Item F (kolom 4, baris 2)</div>
</div>

4. Positioning Utilities

Tailwind juga punya utility buat properti position dan offset (top, left, right, bottom, inset).

  • static, relative, absolute, fixed, sticky.
  • Offset: top-0, left-4, bottom-auto, right-[10px], inset-0 (shorthand buat top,right,bottom,left = 0), inset-x-0, inset-y-4. Skalanya ngikutin spacing.

Contoh Positioning:

html
<div class="relative h-32 w-full bg-slate-200 p-4">
  Ini parent relatif.
  <div class="absolute bottom-0 right-0 bg-red-400 p-2 rounded">
    Anak absolut di pojok kanan bawah.
  </div>
</div>
 
<div class="sticky top-0 bg-yellow-300 p-2 z-10"> <!-- Akan nempel di atas pas scroll -->
  Header Nempel!
</div>

5. Z-Index (z-{index})

Buat ngatur tumpukan elemen yang diposisikan.

  • z-0, z-10, z-20, z-30, z-40, z-50, z-auto.
  • Nilai arbitrer: z-[999].

Dengan utility Flexbox dan Grid dari Tailwind, ngatur layout jadi kerasa lebih cepet dan intuitif karena kamu bisa langsung liat efeknya di HTML. Gak perlu bolak-balik file CSS buat ngubah display, justify-content, atau grid-template-columns lagi.

Kuncinya adalah pahamin konsep dasar Flexbox dan Grid di CSS murni dulu (yang udah kita pelajari!), terus liat gimana Tailwind "nerjemahin" properti-properti itu jadi utility class yang gampang dipake. Dokumentasi Tailwind lagi-lagi jadi teman terbaikmu buat nyari utility spesifik.

Selanjutnya, kita bakal liat gimana cara bikin layout Tailwind ini jadi responsif di berbagai ukuran layar!


Kuis Layouting dengan Tailwind CSS

Pertanyaan 1 dari 5

Utility class Tailwind apa yang Anda gunakan untuk membuat sebuah `<div>` menjadi flex container dan item-item di dalamnya dijejerkan secara horizontal dari kiri ke kanan?