Pernah dengar lelucon bahwa hal tersulit dalam ilmu komputer bukanlah machine learning atau blockchain, melainkan menengahkan sebuah div secara vertikal dan horizontal?
Tenang, kamu tidak sendirian. Bagi pemula Frontend, CSS seringkali terasa seperti ilmu hitam. Tapi sebenarnya, ini semua tentang logika layout. Lupakan menghafal kode buta. Mari kita bedah logikanya satu per satu agar kamu paham kapan harus menggunakan metode yang tepat.
Berikut adalah 5 cara ampuh menengahkan elemen, dari yang paling klasik hingga yang paling modern.
1. The Modern Standard: Flexbox
Kapan dipakai: 90% kasus layout modern (navbar, kartu, hero section).
Ini adalah cara paling populer saat ini. Bayangkan parent (pembungkus) adalah seorang bos yang menyuruh anak buahnya (child) untuk duduk di tengah.
Logikanya:
-
justify-content: Mengatur posisi di sumbu utama (biasanya horizontal/kiri-kanan). -
align-items: Mengatur posisi di sumbu silang (biasanya vertikal/atas-bawah).
.parent {
display: flex;
justify-content: center; /* Tengah secara Horizontal */
align-items: center; /* Tengah secara Vertikal */
height: 100vh; /* Pastikan parent punya tinggi */
}
Tips Anti Hafalan: Ingat saja J.A.C. (Justify - Align - Center). Kalau dua-duanya center, elemen pasti di tengah mutlak.
2. The Shortcut King: CSS Grid
Kapan dipakai: Layout 2 dimensi atau ingin kode paling ringkas (hanya 2 baris!).
CSS Grid adalah kakaknya Flexbox yang lebih powerful. Untuk sekadar menengahkan elemen, Grid punya satu properti ajaib bernama place-items.
Logikanya: Grid membagi area menjadi sel-sel. Kita menyuruh elemen di dalamnya untuk menempati posisi tengah sel tersebut.
.parent {
display: grid;
place-items: center; /* Magic! Tengah Horizontal & Vertikal sekaligus */
height: 100vh;
}
3. The Classic Sniper: Absolute + Transform
Kapan dipakai: Saat kamu ingin menumpuk elemen di atas elemen lain (overlay), modal, atau floating button.
Ini adalah cara "jadul" tapi sangat presisi. Kita mematikan aliran dokumen normal dan menempatkan elemen berdasarkan koordinat.
Logikanya:
-
Geser elemen sejauh 50% dari atas dan kiri parent. (Masalahnya: yang di tengah adalah titik pojok kiri atas elemen, bukan pusat elemennya).
-
Gunakan
transformuntuk memundurkan elemen sebesar 50% dari lebar dan tingginya sendiri agar pas di tengah.
.parent {
position: relative; /* Penting! Agar child patuh pada parent ini */
}
.child {
position: absolute;
top: 50%;
left: 50%;
transform: translate(-50%, -50%); /* Koreksi posisi */
}
4. The Horizontal Hero: Margin Auto
Kapan dipakai: Menengahkan container website atau blok teks secara horizontal (kiri-kanan saja).
Ini adalah teknik paling dasar. Namun ingat, cara ini hanya bekerja secara horizontal pada elemen blok biasa.
Logikanya: Bayangkan margin adalah ruang kosong. Jika kamu set kiri dan kanan menjadi auto, browser akan membagi sisa ruang kosong secara rata di kedua sisi, sehingga elemen terdorong ke tengah.
.child {
width: 300px; /* Wajib punya lebar spesifik! */
margin: 0 auto; /* 0 (atas-bawah), auto (kiri-kanan) */
}
Catatan: margin: auto juga bisa menengahkan secara vertikal JIKA parent-nya menggunakan Flexbox atau Grid.
5. The Text Specialist: Text Align & Line Height
Kapan dipakai: Khusus untuk teks, tombol sederhana, atau elemen inline.
Jangan gunakan Flexbox jika hanya ingin menengahkan satu kata di dalam tombol. Gunakan properti tipografi.
Logikanya:
-
text-align: center: Menengahkan teks secara horizontal. -
line-height: Jika tinggi baris sama dengan tinggi kotak, teks akan otomatis berada di tengah secara vertikal.
.button {
height: 50px;
text-align: center; /* Tengah Horizontal */
line-height: 50px; /* Tengah Vertikal (samakan dengan height) */
}
| Metode | Terbaik Untuk | Kunci Kode |
| Flexbox | Layout umum, Navbar | justify-content: center; align-items: center; |
| Grid | Solusi paling singkat | place-items: center; |
| Absolute | Overlay / Popup | top: 50%; left: 50%; translate(-50%, -50%); |
| Margin Auto | Container Website | margin: 0 auto; (Perlu width) |
| Text Align | Teks / Button | text-align: center; line-height: [height]; |