Layout Anti Ambyar: Jurus Sakti Display, Position, & Float di CSS

Kuasai CSS Display, Position, Float: Bikin Layout Website Keren

PPLG

PPLG

Penulis

06 Jul 2026
20 x dilihat

Gaes, pernah gak sih ngerasa pusing tujuh keliling pas lagi ngatur posisi elemen di website? Mau bikin gambar di samping teks, atau bikin menu nempel di atas, eh kok malah berantakan semua? Tenang, ngab! Itu artinya kamu perlu kenalan lebih jauh sama tiga jurus sakti CSS yang jadi pondasi utama tata letak: display, position, dan float. Kalo udah nguasai ini, dijamin deh layout kamu auto cakep dan anti ambyar!

Yuk, kita bedah satu per satu biar vibes ngodingmu makin asik dan produktif!

1. Jurus display: Elemenmu Mau Jadi Apa?

Property display ini ibarat kamu lagi milih peran buat elemen HTML-mu. Mau jadi "pemain utama" yang butuh panggung sendiri, atau "pemain pendukung" yang bisa berbagi tempat? Yuk, kita spill beberapa nilai pentingnya!

a. display: block;

Ini nih si "pemain utama". Elemen dengan display: block bakalan selalu mulai di baris baru dan ngambil lebar maksimal yang tersedia (100% dari parent-nya). Kamu bisa atur width, height, margin, dan padding-nya dengan leluasa.

Contoh Umum: div, p, h1, ul, li, form.

<!-- HTML -->
<div class="box-block">Kotak Block 1</div>
<div class="box-block">Kotak Block 2</div>
/* CSS */
.box-block {
    background-color: #f0f8ff;
    border: 1px solid #aaddff;
    padding: 10px;
    margin-bottom: 5px;
    display: block; /* Ini defaultnya, tapi biar jelas */
}

Hasilnya: Setiap kotak akan menempati satu baris penuh.

b. display: inline;

Kalo ini si "pemain pendukung". Elemen inline gak akan mulai di baris baru dan cuma ngambil lebar sesuai kontennya. Yang perlu kamu inget, width dan height gak bisa diatur di elemen inline, ngab! margin-top dan margin-bottom juga gak ngaruh.

Contoh Umum: a, span, strong, em, img.

<!-- HTML -->
<span class="text-inline">Ini teks inline pertama.</span>
<span class="text-inline">Ini teks inline kedua.</span>
/* CSS */
.text-inline {
    background-color: #f8f8ff;
    border: 1px solid #ccc;
    padding: 5px; /* Padding kiri-kanan ngaruh, atas-bawah cuma di konten */
    margin: 5px; /* Margin kiri-kanan ngaruh, atas-bawah gak ngaruh */
    display: inline; /* Ini defaultnya, tapi biar jelas */
    /* width: 100px; height: 50px; <-- Ini gak akan bekerja */
}

Hasilnya: Teks akan sejajar di satu baris, kalau tidak muat baru pindah baris.

c. display: inline-block;

Nah, ini kombinasi mantul! Elemen inline-block bisa duduk sejajar sama elemen lain (kayak inline), tapi kamu bisa atur width, height, margin, padding-nya (kayak block). Cocok banget buat tombol atau item navigasi yang pengen dijejerin tapi tetap punya dimensi sendiri.

<!-- HTML -->
<a href="#" class="btn-item">Home</a>
<a href="#" class="btn-item">About</a>
<a href="#" class="btn-item">Contact</a>
/* CSS */
.btn-item {
    background-color: #6a5acd;
    color: white;
    padding: 10px 15px;
    margin: 5px;
    border-radius: 5px;
    text-decoration: none;
    display: inline-block; /* Kuncinya di sini! */
    width: 80px; /* Sekarang width bisa diatur! */
    text-align: center;
}

Hasilnya: Tombol-tombol akan sejajar dengan lebar dan tinggi yang bisa diatur.

2. Jurus position: Mau Ditaruh Mana Sih Elemenmu?

Kalo display ngatur gimana elemen berinteraksi dengan aliran dokumen secara umum, position ini lebih detail lagi buat ngegeser-geser elemen dari tempat aslinya. Siap-siap bikin elemenmu melayang atau nempel! Properti top, right, bottom, left akan bekerja sesuai nilai position yang kamu kasih.

a. position: static; (Default)

Ini posisi default semua elemen HTML. Mereka anteng, nurut sama aliran dokumen HTML dari atas ke bawah, kiri ke kanan. Kalo kamu kasih top, right, bottom, left, atau z-index, gak bakal ngaruh, gaes.

b. position: relative;

Elemen relative ini mirip static, tapi dia bisa kamu geser dari posisi aslinya pake top, right, bottom, left. Yang perlu diingat, dia tetap 'menyisakan' ruang di tempat aslinya, jadi elemen lain gak akan bergeser nutupin ruang kosong itu. Dia juga jadi 'titik acuan' buat elemen absolute di dalamnya.

<!-- HTML -->
<div class="parent-relative">
    Parent Relative
    <div class="child-relative">Anak Relative</div>
</div>
<div class="another-block">Block Lain</div>
/* CSS */
.parent-relative {
    background-color: #e0ffff;
    border: 1px solid #87ceeb;
    padding: 20px;
    margin: 20px;
    position: relative; /* Jadi titik acuan untuk elemen absolute di dalamnya */
}
.child-relative {
    background-color: #ffdab9;
    border: 1px solid #ffa07a;
    padding: 10px;
    position: relative; /* Digeser dari posisi aslinya */
    top: 10px;
    left: 10px;
}
.another-block {
    background-color: #f0f0f0;
    padding: 15px;
    margin: 20px;
    border: 1px solid #ccc;
}

Hasilnya: child-relative akan bergeser 10px ke bawah dan 10px ke kanan dari posisi awalnya, namun another-block tidak akan naik menempati ruang kosong yang ditinggalkan child-relative.

c. position: absolute;

Nah, ini dia yang bikin elemenmu bisa 'melayang'. Elemen absolute bakalan keluar dari aliran dokumen, ngambang bebas. Posisinya akan relatif terhadap parent terdekat yang punya position selain static (biasanya relative). Kalo gak ada parent yang relative, dia bakal relatif ke body atau viewport.

Tips Penting: Selalu pastikan parent dari elemen absolute punya position: relative; biar gak "kabur" posisinya ke mana-mana.

<!-- HTML -->
<div class="parent-relative">
    Parent Relative
    <div class="child-absolute">Anak Absolute</div>
</div>
<div class="another-block">Block Lain Setelah Parent</div>
/* CSS */
.parent-relative {
    background-color: #e0ffff;
    border: 1px solid #87ceeb;
    padding: 20px;
    margin: 20px;
    width: 300px;
    height: 150px;
    position: relative; /* PENTING! Jadi acuan child-absolute */
}
.child-absolute {
    background-color: #ffdab9;
    border: 1px solid #ffa07a;
    padding: 10px;
    position: absolute; /* Keluar dari aliran dokumen */
    top: 20px;
    right: 20px;
    z-index: 10; /* Untuk mengatur tumpukan elemen */
}
.another-block {
    background-color: #f0f0f0;
    padding: 15px;
    margin: 20px;
    border: 1px solid #ccc;
}

Hasilnya: child-absolute akan melayang di atas parent-relative, posisinya dihitung dari pojok kanan atas parent-relative. another-block akan bergerak ke atas, seolah child-absolute tidak ada.

d. position: fixed;

Pengen elemen nempel terus di layar meskipun di-scroll? Pake fixed, ngab! Elemen dengan position: fixed bakalan nempel di viewport browser (jendela browser) dan gak akan bergerak sama sekali. Cocok banget buat navbar atau tombol 'Back to Top' biar auto cakep dan gampang diakses user.

<!-- HTML -->
<div class="fixed-header">Ini Fixed Header</div>
<div style="height: 1000px; background: linear-gradient(to bottom, #eee, #aaa);">
    Scroll ke bawah, ngab!
</div>
/* CSS */
.fixed-header {
    background-color: #282c34;
    color: white;
    padding: 15px;
    text-align: center;
    position: fixed; /* Nempel di viewport */
    top: 0;
    left: 0;
    width: 100%;
    z-index: 100; /* Pastikan di atas elemen lain */
}

Hasilnya: fixed-header akan selalu terlihat di bagian atas layar meskipun halaman di-scroll.

e. position: sticky;

Ini position yang paling 'fleksibel' dan sering bikin developer gemoy! sticky itu kombinasi relative dan fixed. Dia akan berperilaku relative sampai dia mencapai ambang batas tertentu di viewport (misalnya top: 0), setelah itu dia akan jadi fixed. Mantul buat header tabel atau sticky sidebar.

<!-- HTML -->
<div style="height: 200px; background-color: #f5f5dc;">Area Scroll Awal</div>
<div class="sticky-promo">Promo Spesial!</div>
<div style="height: 1000px; background-color: #add8e6;">Konten Utama Panjang</div>
/* CSS */
.sticky-promo {
    background-color: #ff6347;
    color: white;
    padding: 15px;
    text-align: center;
    position: sticky; /* Sticky! */
    top: 0; /* Akan nempel di top 0px saat discroll */
    z-index: 99;
}

Hasilnya: sticky-promo akan ikut di-scroll seperti elemen normal, tapi begitu mencapai top: 0, dia akan nempel di sana dan ikut terus saat di-scroll ke bawah.

3. Jurus float: Ngambangin Elemen ke Kiri/Kanan

float ini dulu jadi andalan buat bikin layout kolom atau ngatur gambar di samping teks. Meskipun sekarang ada Flexbox atau Grid yang lebih modern, float masih relevan buat beberapa kasus, terutama kalau kamu pengen bikin teks mengalir di sekeliling gambar!

a. float: left; / float: right;

Bikin elemen ngambang ke kiri atau ke kanan, dan elemen inline atau inline-block di sekitarnya akan 'mengalir' di sekelilingnya.

<!-- HTML -->
<div class="artikel">
    <img src="https://via.placeholder.com/100" alt="Gambar Contoh" class="float-gambar">
    <p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.</p>
    <p>Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.</p>
</div>
/* CSS */
.artikel {
    width: 70%;
    margin: 20px auto;
    border: 1px solid #ddd;
    padding: 15px;
    background-color: #fffaf0;
}
.float-gambar {
    float: left; /* Gambar ngambang ke kiri */
    margin-right: 15px;
    margin-bottom: 10px;
    border: 1px solid #ccc;
}

Hasilnya: Gambar akan ada di kiri, dan teks akan mengalir di samping kanan gambar.

b. Masalah float dan Solusinya (clear)

Efek samping dari float adalah elemen yang di-float keluar dari aliran dokumen. Ini bisa bikin parent element yang berisi float jadi "collapsing" (tingginya nol) karena dia gak "melihat" elemen float di dalamnya.

Untuk mengatasi ini, kita perlu "membersihkan" float-nya pake clear: both; atau teknik clearfix.

Solusi 1: Menggunakan elemen clear

<!-- HTML -->
<div class="artikel-with-clear">
    <img src="https://via.placeholder.com/100" alt="Gambar Contoh" class="float-gambar">
    <p>Lorem ipsum dolor sit amet, consectetur adipiscing elit.</p>
    <div style="clear: both;"></div> <!-- Ini pembersihnya! -->
</div>
<div class="setelah-artikel">Ini elemen setelah artikel.</div>
/* CSS */
.artikel-with-clear {
    width: 70%;
    margin: 20px auto;
    border: 1px solid #ddd;
    padding: 15px;
    background-color: #fffaf0;
}
/* float-gambar sama seperti di atas */
.float-gambar {
    float: left;
    margin-right: 15px;
    margin-bottom: 10px;
    border: 1px solid #ccc;
}
.setelah-artikel {
    background-color: #f0f0f0;
    padding: 10px;
    margin: 5px auto;
    width: 70%;
}

Hasilnya: Elemen setelah-artikel tidak akan naik menempati ruang kosong akibat float, karena clear: both; memastikan semua float sudah 'beres' sebelum elemen berikutnya.

Solusi 2: Teknik clearfix (Best Practice untuk float) Ini lebih elegan karena tidak perlu menambahkan elemen HTML kosong.

/* CSS */
.clearfix::after {
    content: "";
    display: table;
    clear: both;
}
/* Terapkan class .clearfix ke parent yang punya float */
.artikel-with-clearfix {
    /* ... style lainnya ... */
    width: 70%;
    margin: 20px auto;
    border: 1px solid #ddd;
    padding: 15px;
    background-color: #fffaf0;
}
<!-- HTML -->
<div class="artikel-with-clearfix clearfix"> <!-- Tambahkan class clearfix -->
    <img src="https://via.placeholder.com/100" alt="Gambar Contoh" class="float-gambar">
    <p>Lorem ipsum dolor sit amet, consectetur adipiscing elit.</p>
</div>
<div class="setelah-artikel">Ini elemen setelah artikel.</div>

Hasilnya: Sama seperti solusi clear: both;, tapi dengan cara yang lebih bersih di HTML.

Tips Praktis & Best Practices Biar Ngoding Makin Sat Set!

  1. Prioritaskan Flexbox/CSS Grid untuk Layout Kompleks: Untuk layout utama halaman (header, footer, sidebar, konten), sangat disarankan menggunakan Flexbox atau CSS Grid. Mereka jauh lebih modern, powerful, dan responsif. float lebih pas buat kasus spesifik seperti gambar di dalam teks.
  2. position: absolute Butuh position: relative: Selalu ingat, elemen absolute akan mencari parent terdekat yang bukan static sebagai acuannya. Kalo gak ada, dia bakal ngambang ke body. Jadi, kasih position: relative ke parent-nya biar posisinya terprediksi.
  3. z-index Hanya Bekerja dengan position: Properti z-index yang ngatur tumpukan elemen (mana yang di depan, mana yang di belakang) hanya akan bekerja pada elemen yang punya position selain static. Makin gede z-index, makin di depan.
  4. Hati-hati dengan fixed: Elemen fixed keluar dari aliran dokumen. Pastikan tidak menutupi konten penting dan pertimbangkan ukuran layar mobile.

Kesimpulan

Gimana, gaes? Udah mulai tercerahkan kan? display, position, dan float itu kayak trio kombo maut yang wajib kamu kuasai buat bikin layout website yang kece badai. Meskipun sekarang udah ada Flexbox dan CSS Grid yang lebih canggih buat layout kompleks, pemahaman dasar tentang ketiga properti ini tetap fundamental banget. Ini dasar kamu nguasai CSS, ngab! Jadi, jangan males eksplor ya! Skuy, langsung coba di proyek kamu biar makin jago!

0.0

Berikan Rating

Komentar (0)

Silakan login untuk memberikan komentar.

Login Sekarang

Belum ada komentar. Jadilah yang pertama!

Menyukai Artikel (0)

Belum ada siswa yang menyukai artikel ini.

Pembaca (0)

Belum ada user yang membaca artikel ini.