Rendering Pipeline: Dari Kode ke Pixel
Cara browser merender halaman: DOM, CSSOM, Render Tree, Layout, Paint
Tujuan Pembelajaran
- Memahami 5 langkah rendering pipeline browser
- Mengerti kenapa CSS dan JS bisa memperlambat rendering
Analogi
Rendering Pipeline = Pabrik Pembuat Poster:
1. HTML → DOM (Siapkan bahan mentah)
2. CSS → CSSOM (Siapkan cat dan warna)
3. DOM + CSSOM → Render Tree (Gambar sketsa)
4. Layout (Tentukan ukuran dan posisi)
5. Paint (Warnai dan finishing)
6. Composite (Gabungkan semua layer)
Browser seperti pabrik poster — memproses HTML dan CSS menjadi pixel di layar
Penjelasan Konsep
Kalau website cuma menampilkan informasi tanpa bisa menerima input dari user, itu seperti TV — kamu cuma bisa lihat tapi nggak bisa berinteraksi. Form HTML adalah cara paling fundamental untuk membuat website menjadi interaktif. Form memungkinkan user mengisi data, memberikan feedback, mendaftar akun, melakukan pembelian, mencari konten, dan jutaan interaksi lainnya. Tanpa form, web hanyalah buku elektronik — statis dan satu arah.
Analoginya kayak formulir di bank atau kantor.
Kamu datang ke bank untuk buka rekening.
Petugas kasih formulir yang harus diisi — nama, alamat, nomor KTP, tanda tangan. Formulir ini punya struktur: label yang menjelaskan apa yang harus diisi, kolom kosong untuk menulis, dan tombol submit untuk menyerahkan. Form HTML bekerja dengan cara yang persis sama.
Tag <form>: Wadah Formulir
Tag <form> adalah elemen pembungkus seluruh form. Ada dua attribute yang sangat penting:
action: URL tempat data akan dikirim (contoh:/registeratauhttps://api.example.com/users)method: Metode HTTP yang dipakai —GETatauPOST.
GET untuk pencarian/filter (data di URL), POST untuk data sensitif seperti password (data di body).
Tag <input>: Macam-macam Kolom Isian
Input adalah tag serbaguna untuk menerima data user. Jenis input ditentukan oleh attribute type:
type="text"— Teks bebas, satu baris. Untuk nama, username, alamat singkat.type="email"— Khusus email. Browser otomatis validasi format email (@ dan domain).type="password"— Teks tersembunyi (muncul titik-titik).
Untuk password dan PIN.
type="number"— Hanya menerima angka. Bisa ditambah min, max, step.type="tel"— Khusus nomor telepon. Di HP akan muncul keypad numerik.type="date"— Picker tanggal. Browser tampilkan kalender.type="checkbox"— Kotak centang (bisa pilih banyak).
Untuk setuju syarat, pilih topping.
type="radio"— Tombol pilihan (hanya bisa pilih satu). Untuk jenis kelamin, metode pembayaran.type="file"— Upload file. Bisa dibatasi tipe file denganaccept.type="hidden"— Input tersembunyi dari user tapi tetap dikirim ke server.type="submit"— Tombol kirim form.type="reset"— Tombol mengosongkan form.
Tag <label>: Petunjuk yang Bisa Diklik
Label menjelaskan apa yang harus diisi di input. Attribute for menghubungkan label dengan input (berdasarkan id input).
Keuntungan: kalau user klik label, input tersebut otomatis fokus.
Ini meningkatkan usability secara signifikan — area klik yang lebih besar,
Terutama untuk checkbox dan radio.
Tag <textarea>: Kolom Teks Panjang
Untuk teks yang panjang — seperti komentar, deskripsi, atau alamat lengkap.
Bedanya dengan input text: textarea bisa multi-baris dan bisa di-resize oleh user.
Attribute rows dan cols menentukan ukuran awal, placeholder menampilkan teks petunjuk.
Tag <select> dan <option>: Dropdown
Membuat menu dropdown.
User klik dan pilih dari daftar opsi. Bisa ditambah attribute multiple untuk memilih lebih dari satu.
Attribute Penting untuk Validasi
required: Field wajib diisiplaceholder: Teks petunjuk di dalam input (hilang saat user mulai mengetik)minlengthdanmaxlength: Batas panjang karaktermindanmax: Batas nilai numerik atau tanggalpattern: Regex untuk validasi format (misalnya pola nomor telepon Indonesia)
Kenapa Form Penting?
Karena form adalah jembatan antara user dan server. Setiap kali kamu login, daftar akun, beli barang online, kirim pesan, atau bahkan like foto di Instagram — semuanya melibatkan form. Memahami form HTML yang baik adalah keterampilan fundamental yang akan kamu pakai setiap hari sebagai web developer.
Contoh Kode
/* OPTIMASI RENDERING */
/* 1. Hindari layout thrashing */
/* JANGAN: Baca lalu tulis DOM berulang */
const h = element.offsetHeight;
element.style.height = (h * 2) + 'px';
const newH = element.offsetHeight; /* Layout lagi! */
/* LAKUKAN: Batch read, lalu batch write */
const h = element.offsetHeight;
const w = element.offsetWidth;
element.style.height = (h * 2) + 'px';
element.style.width = (w * 2) + 'px';
/* 2. Gunakan transform dan opacity */
.animasi {
transform: translateX(100px);
opacity: 0.5;
}
/* 3. will-change untuk elemen yang sering berubah */
.animated-element {
will-change: transform, opacity;
}Penjelasan Kode
Prompt AI
Jelaskan apa itu 'layout thrashing' dan kenapa itu buruk untuk performa.
Pertanyaan Reflektif
Buka Chrome DevTools → Performance → Record → Refresh halaman → Stop. Lihat timeline rendering.