Menu

CSS Overflow: Hidden, Scroll, Auto, Clip dan Ellipsis

overflow menentukan apa yang terjadi pada konten yang tidak muat di kotaknya: ditampilkan, dipotong, atau diberi scrollbar. Pelajari visible, hidden, scroll, auto, dan clip, overflow-x dan overflow-y, ellipsis pada teks, serta efek samping overflow pada layout.

Halaman ini dilengkapi editor yang bisa dijalankan. Edit, jalankan, dan lihat output-nya seketika.

Apa fungsi overflow

Saat konten lebih besar daripada kotaknya (tinggi yang tetap, kata yang panjang, tabel yang lebar), konten itu meluap. Property overflow menentukan apa yang terjadi pada kelebihannya:

NilaiYang kamu lihatScroll container
visible (default)Konten tumpah keluar dari kotak dan menimpa elemen setelahnyaTidak
hiddenDipotong di tepi padding, tanpa scrollbar (script masih bisa men-scroll-nya)Ya
clipDipotong, dan tidak bisa di-scroll sama sekali, bahkan lewat scriptTidak
scrollSelalu menampilkan scrollbar, meskipun kontennya muatYa
autoScrollbar hanya muncul saat kontennya tidak muatYa

Di macOS dan ponsel, scrollbar muncul di atas konten lalu memudar, jadi scroll dan auto bisa terlihat sama sampai kamu men-scroll.

Membuat kotak yang bisa di-scroll

Sebuah kotak hanya meluap kalau ada yang membatasi ukurannya. height atau max-height, ditambah overflow-y: auto, mengubah daftar panjang menjadi panel yang bisa di-scroll:

Di sini max-height lebih baik daripada height: daftar yang pendek tetap pendek, dan hanya daftar yang panjang yang bisa di-scroll. Area scroll yang tidak punya konten yang bisa difokuskan di dalamnya sebaiknya diberi tabindex="0" supaya pengguna keyboard juga bisa men-scroll-nya.

overflow-x dan overflow-y

Kedua sumbu bisa diatur secara terpisah. Penggunaan yang umum adalah tabel lebar yang di-scroll ke samping di dalam container-nya, alih-alih melebarkan seluruh halaman:

Satu aturan yang perlu diingat: kalau salah satu sumbu bernilai hidden, scroll, atau auto, nilai visible di sumbu lainnya menjadi auto. Jadi, overflow-x: hidden saja bisa memunculkan scrollbar vertikal yang tidak terduga. overflow-x: clip tidak punya efek itu:

.a { overflow-x: hidden; }  /* overflow-y computes to auto */
.b { overflow-x: clip; }    /* overflow-y stays visible */

Memotong teks dengan ellipsis

text-overflow: ellipsis mengganti ujung baris yang terpotong dengan "…". Ini butuh tiga hal sekaligus: lebar yang terbatas, teks yang tidak bisa terbungkus, dan overflow yang disembunyikan:

Line clamp dengan prefix -webkit- berfungsi di Chrome, Firefox, dan Safari. Screen reader tetap membaca seluruh teksnya, jadi kata-kata yang terpotong tidak hilang bagi penggunanya.

Efek samping overflow

Mengatur overflow ke nilai apa pun selain visible atau clip mengubah lebih dari sekadar pemotongan:

  • Elemen menampung float dan margin child. Elemen membentuk block formatting context baru, jadi elemen itu membesar untuk membungkus child yang memakai float. display: flow-root melakukan hal yang sama tanpa memotong apa pun.
  • Elemen merusak position: sticky di bawahnya. Child yang sticky menempel pada scroll container terdekat. Kalau container itu tidak bisa di-scroll, tidak ada yang menempel.
  • Elemen memotong child yang diposisikan secara absolute (saat elemen yang meluap itu juga menjadi containing block-nya), termasuk dropdown dan tooltip, dan juga memotong box shadow milik child.

Menyembunyikan scrollbar

Kamu bisa membuat kotak tetap bisa di-scroll sambil menyembunyikan scrollbar-nya dengan scrollbar-width: none. Pakai seperlunya saja: tanpa scrollbar, banyak pembaca tidak sadar bahwa masih ada konten lain. scrollbar-gutter: stable melakukan hal sebaliknya: property ini menyediakan ruang untuk scrollbar supaya konten tidak bergeser saat scrollbar muncul.

Kesalahan yang sering terjadi

  • Mengharapkan overflow tanpa batas ukuran. Kotak tanpa height atau max-height akan membesar, bukan meluap.
  • overflow: hidden di body untuk "memperbaiki" scroll horizontal. Lebih baik cari elemen yang terlalu lebar (sering kali width yang tetap, URL yang panjang, atau 100vw bersama scrollbar).
  • Ellipsis tanpa white-space: nowrap. Teksnya terbungkus, jadi tidak ada yang meluap secara horizontal dan ellipsis tidak muncul.
  • overflow-x: hidden memunculkan scrollbar vertikal. Pakai clip.
  • Dropdown terpotong oleh kartunya. overflow: hidden pada kartu memotongnya. Pindahkan aturan overflow-nya atau render dropdown di luar kartu.

Pertanyaan yang sering diajukan

Apa fungsi overflow: hidden?

Deklarasi ini memotong konten yang tidak muat di dalam padding box elemen, tanpa scrollbar. Bagian yang tersembunyi masih bisa di-scroll lewat script atau dengan memfokuskan sesuatu di dalamnya.

Apa perbedaan overflow auto dan scroll?

scroll selalu menyediakan scrollbar, bahkan saat kontennya muat. auto hanya menampilkan scrollbar saat kontennya lebih besar daripada kotaknya, dan biasanya itulah yang kamu inginkan.

Bagaimana cara membuat div bisa di-scroll?

Batasi ukurannya dan izinkan scroll: max-height: 300px; overflow-y: auto;. Tanpa batas height atau max-height, div itu membesar mengikuti kontennya dan tidak pernah meluap.

Kenapa overflow-x: hidden juga menambahkan scrollbar vertikal?

Kalau salah satu sumbu bernilai hidden, scroll, atau auto, nilai visible di sumbu lainnya dihitung sebagai auto. Pakai overflow-x: clip sebagai gantinya, karena nilai ini tidak membuat scroll container dan membiarkan sumbu lainnya tetap visible.

Bagaimana cara menambahkan ellipsis (...) pada teks yang meluap?

Untuk satu baris: white-space: nowrap; overflow: hidden; text-overflow: ellipsis; pada elemen dengan lebar terbatas. Untuk beberapa baris, pakai display: -webkit-box; -webkit-box-orient: vertical; -webkit-line-clamp: 3; overflow: hidden;.

Ilustrasi bahasa pemrograman di Coddy

Belajar coding dengan Coddy

Mulai