Menu tambahan

Jika konten meluas di luar induknya, ada banyak opsi untuk menanganinya. Anda dapat men-scroll untuk menambahkan ruang tambahan, memotong tepi yang meluap, menunjukkan pemotongan dengan elipsis, dan banyak lagi. Overflow sangat penting untuk dipertimbangkan saat mengembangkan aplikasi ponsel dan beberapa ukuran layar.

Ada dua pilihan clipping yang berbeda di CSS; text-overflow akan membantu baris teks individual, dan properti overflow akan membantu mengontrol tambahan dalam model kotak.

Tambahan baris tunggal dengan text-overflow

Gunakan properti text-overflow pada elemen apa pun yang berisi node teks, misalnya paragraf, <p>. Properti ini menentukan tampilan teks jika tidak muat di ruang yang tersedia untuk elemen. Semua teks HTML yang terlihat di halaman ada dalam node teks. Untuk menggunakan text-overflow, Anda memerlukan satu baris teks yang tidak digabungkan, jadi Anda juga harus menetapkan overflow ke hidden dan memiliki nilai white-space yang mencegah penggabungan.

p {
   
text-overflow: ellipsis;
   
overflow: hidden;
   
white-space: nowrap;
}

Menggunakan properti overflow

Properti tambahan ditetapkan pada elemen untuk mengontrol hal yang terjadi ketika turunannya memerlukan lebih banyak ruang daripada yang tersedia. Hal ini dapat dilakukan secara sengaja, seperti pada peta interaktif seperti Google Maps, tempat pengguna menggeser gambar besar yang dipangkas ke ukuran tertentu. Cara ini juga mungkin tidak disengaja seperti dalam aplikasi chat ketika pengguna mengetik pesan panjang yang tidak muat dalam balon teks.

Anda dapat menganggap overflow dalam dua bagian. Elemen induk memiliki ruang yang sangat terbatas yang tidak akan berubah. Anda dapat menganggapnya sebagai jendela. Elemen turunan adalah konten yang menginginkan lebih banyak ruang dari induk. Anda dapat menganggapnya sebagai hal yang Anda lihat melalui jendela. Mengelola kelebihan akan membantu memandu cara jendela membingkai konten ini.

Men-scroll pada sumbu vertikal dan horizontal

Properti overflow-y mengontrol overflow fisik di sepanjang sumbu vertikal area pandang perangkat, sehingga dapat di-scroll ke atas dan ke bawah.

Properti overflow-x mengontrol overflow di sepanjang sumbu horizontal area pandang perangkat, sehingga men-scroll ke kiri dan kanan.

Properti logis untuk arah scroll

Dukungan Browser

  • Chrome: tidak didukung.
  • Edge: tidak didukung.
  • Firefox: 69.
  • Safari: tidak didukung.

Sumber

Properti overflow-inline dan overflow-block menetapkan tambahan berdasarkan arah dokumen dan mode penulisan.

Singkatan overflow

Singkatan overflow menetapkan gaya overflow-x dan overflow-y dalam satu baris:

overflow: hidden scroll;

Jika dua kata kunci ditentukan, kata kunci pertama akan diterapkan ke overflow-x dan kata kunci kedua ke overflow-y. Jika tidak, overflow-x dan overflow-y akan menggunakan nilai yang sama.

Nilai

Mari kita pelajari lebih lanjut nilai dan kata kunci yang tersedia untuk properti overflow.

overflow: visible (default)
Tanpa menetapkan properti, overflow: visible adalah nilai default untuk web. Hal ini memastikan bahwa konten tidak pernah tersembunyi secara tidak sengaja dan mengikuti prinsip inti, yaitu "jangan sembunyikan konten" atau "tata letak yang aman dari tata letak yang akurat".
overflow: hidden
Dengan overflow: hidden konten dipotong ke arah yang ditentukan, dan tidak ada scrollbar yang disediakan untuk menampilkannya.
overflow: scroll
overflow: scroll mengaktifkan scrollbar untuk memungkinkan pengguna men-scroll konten. Meskipun konten saat ini tidak melebihi batas, scrollbar akan ada. Ini adalah cara yang efektif untuk mengurangi pergeseran tata letak di masa mendatang jika penampung mungkin dapat di-scroll pada masa mendatang berdasarkan, misalnya, saat mengubah ukuran, dan mempersiapkan pengguna secara visual untuk area yang dapat di-scroll.
overflow: clip
Seperti overflow: hidden, konten dengan overflow: clip terpotong ke kotak padding elemen. Perbedaan antara clip dan hidden adalah kata kunci clip juga melarang semua scroll, termasuk scroll terprogram.
overflow: auto
Terakhir, nilai yang paling umum digunakan, overflow: auto. Hal ini mengikuti preferensi pengguna dan menampilkan scrollbar jika diperlukan, tetapi menyembunyikannya secara default, dan memberikan tanggung jawab untuk men-scroll ke pengguna dan browser.

Scroll dan tambahan

Banyak dari perilaku overflow ini memperkenalkan scrollbar, tetapi ada beberapa perilaku dan properti scroll tertentu yang dapat membantu Anda mengontrol scroll pada container tambahan.

Scroll dan aksesibilitas

Penting untuk memastikan bahwa area yang dapat di-scroll dapat menerima fokus sehingga pengguna keyboard dapat menekan tombol tab ke kotak tersebut, lalu menggunakan tombol panah untuk men-scroll.

Untuk mengizinkan kotak scroll menerima fokus, tambahkan tabindex="0", nama dengan atribut aria-labelledby, dan atribut role yang sesuai. Contoh:

<div tabindex="0" role="region" aria-labelledby="id-of-descriptive-text">
    content
</div>

CSS kemudian dapat digunakan untuk menunjukkan bahwa kotak memiliki fokus, menggunakan properti outline untuk memberikan petunjuk visual bahwa kotak tersebut sekarang dapat di-scroll.

Dalam Menggunakan CSS untuk Menerapkan Aksesibilitas, Adrian Roselli menunjukkan cara CSS dapat membantu mencegah regresi aksesibilitas. Misalnya, untuk hanya mengaktifkan scroll dan menambahkan indikator fokus jika atribut yang benar digunakan. Aturan berikut hanya akan membuat kotak dapat di-scroll jika memiliki atribut tabindex, aria-labelledby, dan role.

[role][aria-labelledby][tabindex] {
 
overflow: auto;
}

[role][aria-labelledby][tabindex]:focus {
 
outline: .1em solid blue;
}

Pemosisian scroll bar dalam model kotak

Scroll bar menggunakan ruang dalam kotak padding dan dapat bersaing untuk mendapatkan ruang jika inline dan bukan overlaid. Modul model kotak menjelaskan lebih lanjut potensi sumber pergeseran tata letak ini.

scroller root vs scroller implisit

Anda mungkin melihat bahwa beberapa penggeser memiliki perilaku tarik untuk memuat ulang dan perilaku khusus lainnya, terutama saat mengembangkan untuk aplikasi seluler dan campuran. Perilaku scroll ini terjadi di penggeser root. Hanya ada satu penggeser root di halaman. Secara default, documentElement adalah scroll root halaman. Namun, dengan mengubah elemen mana yang merupakan scroll root, perilaku khusus dapat diterapkan ke scroll selain documentElement. Kami menyebut scroll baru ini sebagai scroll root implisit.

Untuk membuat scroller root, Anda dapat menggunakan sesuatu yang disebut promosi scroller dengan memposisikan penampung sebagai tetap, sehingga memastikan penampung tersebut mencakup seluruh area pandang dan berada di indeks z di bagian atas dengan scroller. Rasakan scroll root vs scroll implisit bertingkat di sini.

Video ini menampilkan scroll root dengan perilaku pantulan dan fitur gaya baru,
dibandingkan dengan men-scroll scroll implisit tanpa perilaku scroll yang ditingkatkan.

scroll-behavior

Dukungan Browser

  • Chrome: 61.
  • Edge: 79.
  • Firefox: 36.
  • Safari: 15.4.

Sumber

scroll-behavior memungkinkan Anda memilih untuk menggunakan scroll yang dikontrol browser ke elemen. Hal ini memungkinkan Anda menentukan cara penanganan navigasi dalam halaman seperti .scrollTo() atau link.

Hal ini sangat berguna saat digunakan dengan prefers-reduced-motion untuk menentukan perilaku scroll berdasarkan preferensi pengguna.

@media (prefers-reduced-motion: no-preference) {
 
.scroll-view {
   
scroll-behavior: auto;
 
}
}

overscroll-behavior

Dukungan Browser

  • Chrome: 63.
  • Edge: 18.
  • Firefox: 59.
  • Safari: 16.

Sumber

Jika Anda pernah mencapai akhir overlay modal, lalu terus men-scroll dan membuat halaman di belakang overlay dipindahkan, ini adalah rantai scroll, atau bergelembung ke container scroll induk. Properti overscroll-behavior memungkinkan Anda mencegah scroll tambahan bocor ke dalam container induk (disebut scroll chaining).

Memeriksa pemahaman Anda

Uji pengetahuan Anda tentang tambahan

Overflow teks dan elemen tambahan sama?

salah
true

Properti overflow menerima 2 kata kunci, kata kunci pertama untuk sumbu yang mana?

vertikal
horizontal

Ruang mana dalam model kotak yang digunakan scrollbar saat ditampilkan dan inline?

kotak padding
kotak batas
kotak margin
kotak konten

Untuk menjebak momentum tambahan dari scroll di scroller implisit bertingkat, properti mana yang akan Anda gunakan?

scroll-padding
overscroll-behavior
overscroll-effect
scroll-behavior
scroll-hint

Resource

Overflow And Data Loss In CSS dari Smashing Magazine