Subbab 7 / 9

Tailwind CSS

Apa itu Tailwind Css

Tailwind CSS adalah sebuah utility-first CSS framework. Berbeda dengan framework UI konvensional seperti Bootstrap atau Foundation yang menyediakan komponen siap pakai (seperti card, navbar, atau button), Tailwind menyediakan low-level utility classes (class fungsional tingkat rendah). Ini memungkinkan Anda untuk membangun desain antarmuka yang sangat kustom langsung dari dalam file HTML tanpa harus menulis satu baris kode CSS kustom pun.

Masalah pada Pendekatan CSS Biasa

Sebelum membahas Lebih Lanjut Mengenai Tailwind, kita harus melihat masalah umum yang sering dihadapi engineer saat menggunakan CSS tradisional (vanilla CSS atau metodologi seperti BEM/OOCSS):

  • Context Switching yang Melelahkan : Anda harus terus berpindah-pindah tab antara file index.html dan style.css hanya untuk melihat efek perubahan yang Anda buat.
  • Mencari Nama Class yang Tepat (Naming Fatigue) : Memberi nama class seperti .header-inner-wrapper-dark sangat subjektif dan memakan waktu. Seringkali nama ini membingungkan developer lain dalam satu tim.
  • Ukuran File CSS yang Terus Membengkak : Dalam CSS tradisional, setiap kali Anda membuat fitur baru, Anda biasanya menambahkan kode CSS baru. Ukuran file akan tumbuh secara linear seiring bertambah besarnya proyek.
  • Specificity Wars : Konflik hierarki CSS yang memaksa Anda menggunakan selector yang panjang atau bahkan !important hanya agar style bisa teraplikasi.

Apabila Memakai Tailwind

Ketika Anda beralih ke Tailwind CSS, alur kerja dan penyelesaian masalah di atas berubah drastis:

  • Tidak Perlu Penamaan Class: Anda menggunakan class fungsional (utility) seperti flex, pt-4, text-center, dan rotate-90. Tidak ada lagi perdebatan tentang nama class.
  • Fokus 100% di HTML: Anda mendesain langsung di dalam file HTML (atau file komponen di React/Vue). Ini mempercepat development secara signifikan.
  • Ukuran File Super Kecil di Production: Tailwind memiliki mesin kompilasi cerdas. Pada tahap rilis (build), Tailwind akan membuang semua class yang tidak Anda tulis di HTML, menghasilkan ukuran file CSS akhir yang seringkali di bawah 10kb.
  • Desain Sistem yang Konsisten: Anda dipaksa menggunakan skala ukuran, jarak, dan warna bawaan (yang dirancang secara matematis), sehingga UI terlihat konsisten tanpa banyak usaha.

Cara Menyambungkan Tailwind ke HTML

Ada dua cara utama untuk mulai menggunakan Tailwind, tergantung pada kebutuhan Anda (prototyping cepat vs. lingkungan production).

Metode A: Via CDN (Untuk Belajar & Prototyping)

Cara ini sangat cepat karena hanya perlu menempelkan satu baris script. Namun, jangan gunakan ini untuk tahap production karena tidak dioptimasi dan ukurannya besar.

html
1
2
3
4
5
6
7
8
9
10
11
12
<!DOCTYPE html>
<html lang="id">
<head>
    <meta charset="UTF-8">
    <title>Belajar Tailwind via CDN</title>
    <!-- Script Tailwind v4 Browser CDN -->
    <script src="https://unpkg.com/@tailwindcss/browser@4"></script>
</head>
<body class="bg-slate-100 flex justify-center items-center h-screen">
    <h1 class="text-3xl font-bold text-blue-600">Halo, Tailwind CDN!</h1>
</body>
</html>

Metode B: Via NPM (Standar Industri & Production)

Ini adalah cara yang digunakan oleh software engineer profesional. Menggunakan standar Tailwind v4 terbaru, proses konfigurasinya telah disederhanakan tanpa memerlukan file JavaScript terpisah.


Langkah 1: Instalasi via Terminal

Pastikan sudah menginstal Node.js, lalu jalankan perintah ini di direktori proyek:

bash
1
2
npm init -y
npm install tailwindcss @tailwindcss/cli

Langkah 2: Buat File Input CSS (src/input.css)

Sesuai arsitektur Tailwind v4, seluruh konfigurasi kustomisasi sekarang diletakkan langsung di dalam file CSS utama, bukan di file konfigurasi eksternal.

css
1
2
3
4
5
6
7
8
/* src/input.css */
@import "tailwindcss";

/* Kustomisasi tema langsung diletakkan di dalam file CSS */
@theme {
  --color-primary: #1d4ed8;
  --font-body: "Inter", sans-serif;
}

Langkah 3: Siapkan File HTML (index.html)

Hubungkan HTML Anda ke file CSS output yang akan dihasilkan (generate) oleh Tailwind.


html
1
2
3
4
5
6
7
8
9
10
11
12
<!DOCTYPE html>
<html lang="id">
<head>
    <meta charset="UTF-8">
    <title>Tailwind via NPM</title>
    <!-- Arahkan ke file hasil build -->
    <link href="./dist/output.css" rel="stylesheet">
</head>
<body class="bg-primary text-white p-10 font-body">
    <h1 class="text-4xl font-bold">Instalasi NPM Berhasil</h1>
</body>
</html>

Langkah 4: Jalankan CLI Build Process

Jalankan perintah ini di terminal agar Tailwind membaca HTML Anda dan mengompilasi CSS-nya ke dalam folder dist.

bash
1
npx @tailwindcss/cli -i ./src/input.css -o ./dist/output.css --watch

Sizing & Spacing (Ukuran & Jarak)

Tailwind menggunakan skala proporsional yang konsisten (biasanya 1 unit = 0.25rem atau 4px). Polanya sangat mudah diprediksi: tipe (margin/padding) + arah + nilai.

  • p untuk padding (jarak ke dalam), m untuk margin (jarak ke luar).
  • Arah: t (top), b (bottom), l (left), r (right), x (kiri-kanan), y (atas-bawah). Jika arah dikosongkan, efeknya berlaku di semua sisi.
  • Sizing (w & h): Mengatur lebar (width) dan tinggi (height). Bisa menggunakan persentase (w-1/2), ukuran layar (h-screen), atau nilai absolut (w-64).


Contoh Implementasi:

html
1
2
3
4
5
<!-- Sebuah kotak (card) dengan jarak margin luar, padding dalam, dan lebar spesifik -->
<div class="m-8 p-6 w-72 h-auto bg-white border border-gray-200">
    Konten di dalam card ini memiliki jarak 1.5rem (24px) dari tepi border (karena p-6).
    Sedangkan card ini sendiri didorong sejauh 2rem (32px) dari elemen di sekitarnya (karena m-8).
</div>

Colors & Typography (Warna & Tipografi)

Tailwind menyediakan palet warna lengkap dari skala 50 (paling terang) hingga 950 (paling gelap). Tipografi juga ditangani lewat utilitas ringkas tanpa perlu menulis spesifikasi font-size atau line-height secara manual.

  • Warna Teks: text-[warna]-[skala] (contoh: text-blue-600).
  • Warna Background: bg-[warna]-[skala] (contoh: bg-slate-100).
  • Ukuran Teks: text-xs, text-sm, text-base (default), text-lg, text-xl, hingga text-9xl.
  • Ketebalan Font (Weight): font-light, font-normal, font-semibold, font-bold.


Contoh Implementasi:

html
1
2
3
4
5
6
7
8
9
<div class="bg-slate-900 p-4">
    <!-- Judul besar, tebal, dan berwarna putih -->
    <h1 class="text-2xl font-bold text-white">Sistem Manajemen</h1>
    
    <!-- Teks paragraf lebih kecil, warna abu-abu agar tidak terlalu kontras -->
    <p class="text-sm font-normal text-slate-400 mt-1">
        Masuk ke dashboard untuk mengelola data anggota dan transaksi.
    </p>
</div>

Layouting (Flexbox & Grid)

Membuat tata letak yang kompleks adalah keahlian utama Tailwind. Anda tidak perlu lagi menulis deklarasi display: flex; justify-content: center; di CSS eksternal.

  • Flexbox: Gunakan flex untuk mengaktifkan flexbox. Kendalikan arah dengan flex-row atau flex-col. Atur perataan dengan justify-between, items-center, dll.
  • Grid: Gunakan grid untuk mengaktifkan CSS Grid. Definisikan jumlah kolom dengan grid-cols-2, grid-cols-3. Gunakan gap-4 untuk memberi jarak antar elemen.


Contoh Implementasi Flexbox (Navigasi):

html
1
2
3
4
5
6
7
<nav class="flex justify-between items-center p-4 bg-white shadow">
    <div class="font-bold text-lg">LogoApp</div>
    <ul class="flex gap-4">
        <li>Beranda</li>
        <li>Profil</li>
    </ul>
</nav>

Contoh Implementasi Grid (Daftar Produk/Layanan):

html
1
2
3
4
5
6
7
<div class="grid grid-cols-2 gap-4 p-4">
    <div class="bg-blue-100 p-4">Item 1</div>
    <div class="bg-green-100 p-4">Item 2</div>
    <div class="bg-yellow-100 p-4">Item 3</div>
    <div class="bg-red-100 p-4">Item 4</div>
</div>
<!-- Hasilnya adalah kotak 2 baris x 2 kolom dengan jarak antar kotak seragam -->

Responsive Design (Desain Responsif)

Tailwind menggunakan pendekatan Mobile-First. Artinya, class tanpa prefix (awalan) akan diaplikasikan dari ukuran layar paling kecil (HP) hingga tak terhingga. Untuk mengubah bentuk di layar yang lebih besar, gunakan breakpoint modifier seperti sm:, md:, lg:, xl:, 2xl:.


Contoh Implementasi:

html
1
2
3
4
5
6
<!-- Di layar HP (default), elemen berjejer ke bawah (flex-col). -->
<!-- Ketika ukuran layar mencapai Medium (Tablet/Desktop), elemen berubah menyamping (md:flex-row). -->
<div class="flex flex-col md:flex-row gap-4 p-4">
    <div class="w-full md:w-1/2 bg-gray-200 p-4">Kolom Kiri</div>
    <div class="w-full md:w-1/2 bg-gray-300 p-4">Kolom Kanan</div>
</div>

States & Modifiers (Hover, Focus, Active)

Untuk menangani interaksi pengguna, Tailwind menyediakan modifier pseudo-class. Anda cukup menambahkan awalan kondisi di depan class yang ingin diubah.

  • hover: Saat kursor mouse berada di atas elemen.
  • focus: Saat elemen diklik/dipilih (berguna untuk input form atau tombol).
  • active: Saat tombol sedang ditekan.


Contoh Implementasi (Tombol Interaktif):

html
1
2
3
4
5
6
7
<!-- Tombol dasar berwarna biru. -->
<!-- Saat di-hover, warna berubah lebih gelap. -->
<!-- Saat diklik (focus), muncul cincin biru muda di luarnya. -->
<!-- transition-colors memberikan efek animasi transisi yang halus. -->
<button class="bg-blue-600 text-white font-semibold py-2 px-6 rounded-md hover:bg-blue-700 focus:outline-none focus:ring-4 focus:ring-blue-300 transition-colors">
    Simpan Data
</button>