Menu

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

overflow, kutusuna sığmayan içeriğe ne olacağına karar verir: göster, kes ya da kaydırma çubukları ekle. visible, hidden, scroll, auto ve clip değerlerini, overflow-x ve overflow-y'yi, metinde üç noktayı ve overflow'un düzen üzerindeki yan etkilerini öğren.

Bu sayfada çalıştırılabilir editörler var - düzenle, çalıştır ve sonucu anında gör.

overflow ne yapar

İçerik kutusundan büyük olduğunda (sabit bir yükseklik, uzun bir kelime, geniş bir tablo) taşar. overflow özelliği fazlalığa ne olacağına karar verir:

DeğerNe görürsünKaydırma kapsayıcısı
visible (varsayılan)İçerik kutudan taşar ve ardından geleni örterHayır
hiddenPadding kenarında kırpılır, kaydırma çubuğu yok (script yine de kaydırabilir)Evet
clipKırpılır ve script ile bile hiç kaydırılamazHayır
scrollİçerik sığsa bile her zaman kaydırma çubuklarını gösterirEvet
autoYalnızca içerik sığmadığında kaydırma çubuklarıEvet

macOS'ta ve telefonlarda kaydırma çubukları içeriğin üstünde durur ve kaybolur, bu yüzden kaydırana kadar scroll ve auto aynı görünebilir.

Kaydırılabilir bir kutu yapmak

Bir kutu yalnızca boyutunu bir şey sınırlıyorsa taşar. Bir height ya da max-height artı overflow-y: auto, uzun bir listeyi kayan bir panele çevirir:

Burada max-height, height'tan daha iyidir: kısa bir liste kısa kalır ve yalnızca uzun bir liste kayar. İçinde odaklanılabilir içerik olmayan kaydırılabilir bir bölge, klavye kullanıcıları da kaydırabilsin diye tabindex="0" almalıdır.

overflow-x ve overflow-y

İki eksen ayrı ayrı ayarlanabilir. Yaygın kullanım, bütün sayfayı genişletmek yerine kapsayıcısının içinde yana kayan geniş bir tablodur:

Hatırlanacak bir kural: bir eksen hidden, scroll ya da auto ise diğer eksendeki visible değeri auto olur. Yani tek başına overflow-x: hidden sana beklenmedik bir dikey kaydırma çubuğu verebilir. overflow-x: clip bu etkiye sahip değildir:

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

Metni üç noktayla kesmek

text-overflow: ellipsis, bir satırın kırpılan sonunu "…" ile değiştirir. Üç şeye birlikte ihtiyaç duyar: sınırlı bir genişlik, kırılamayan metin ve gizli taşma:

-webkit- önekli satır kırpma Chrome, Firefox ve Safari'de çalışır. Ekran okuyucular yine de metnin tamamını okur, bu yüzden kırpılan kelimeler onlar için kaybolmaz.

overflow'un yan etkileri

overflow'u visible ya da clip dışında herhangi bir değere ayarlamak kırpmaktan fazlasını değiştirir:

  • Float'ları ve çocuk margin'lerini içinde tutar. Element yeni bir block formatting context oluşturur, bu yüzden float edilmiş çocukları saracak şekilde büyür. display: flow-root hiçbir şeyi kırpmadan aynısını yapar.
  • Altındaki position: sticky'yi bozar. Sticky bir çocuk en yakın kaydırma kapsayıcısına yapışır; o kapsayıcı kaymıyorsa hiçbir şey yapışmaz.
  • Absolute konumlandırılmış çocukları kırpar (taşan element aynı zamanda onların kapsayıcı bloğuysa), açılır menüler ve tooltip'ler dahil; çocukların kutu gölgelerini de kırpar.

Kaydırma çubuğunu gizlemek

scrollbar-width: none ile bir kutuyu kaydırılabilir tutup kaydırma çubuğunu gizleyebilirsin. Bunu az kullan: kaydırma çubuğu olmadan birçok okuyucu daha fazla içerik olduğunu fark etmez. scrollbar-gutter: stable ise tersini yapar: bir kaydırma çubuğu belirdiğinde içerik kaymasın diye çubuğun yerini ayırır.

Sık yapılan hatalar

  • Boyut sınırı olmadan taşma beklemek. height ya da max-height değeri olmayan bir kutu taşmak yerine büyür.
  • Yatay kaydırmayı "düzeltmek" için body üzerinde overflow: hidden. Bunun yerine fazla geniş olan elementi bul (çoğunlukla sabit bir width, uzun bir URL ya da kaydırma çubuğuyla birlikte 100vw).
  • white-space: nowrap olmadan ellipsis. Metin kırılır, bu yüzden yatayda hiçbir şey taşmaz ve üç nokta görünmez.
  • Dikey kaydırma çubuğu oluşturan overflow-x: hidden. clip kullan.
  • Kartı tarafından kesilen bir açılır menü. Kartın overflow: hidden değeri onu kırpar; overflow kuralını taşı ya da açılır menüyü dışarıda çiz.

Sıkça Sorulan Sorular

overflow: hidden ne işe yarar?

Elementin padding kutusuna sığmayan içeriği kaydırma çubuğu olmadan kırpar. Gizlenen kısma script ile ya da içindeki bir şeye odaklanarak yine de kaydırılabilir.

overflow auto ile scroll arasındaki fark nedir?

scroll içerik sığsa bile her zaman kaydırma çubuklarına yer ayırır. auto ise yalnızca içerik kutudan büyük olduğunda bir kaydırma çubuğu gösterir; genellikle istediğin budur.

Bir div nasıl kaydırılabilir yapılır?

Boyutunu sınırla ve kaydırmaya izin ver: max-height: 300px; overflow-y: auto;. Bir height ya da max-height sınırı olmadan div içeriğiyle büyür ve hiç taşmaz.

overflow-x: hidden neden dikey bir kaydırma çubuğu da ekliyor?

Bir eksen hidden, scroll ya da auto ise diğer eksendeki visible değeri auto olarak hesaplanır. Bunun yerine bir kaydırma kapsayıcısı oluşturmayan ve diğer ekseni görünür bırakan overflow-x: clip kullan.

Taşan metne üç nokta (...) nasıl eklenir?

Tek satır için genişliği sınırlı bir elemente: white-space: nowrap; overflow: hidden; text-overflow: ellipsis;. Birkaç satır için display: -webkit-box; -webkit-box-orient: vertical; -webkit-line-clamp: 3; overflow: hidden; kullan.

Coddy programming languages illustration

Coddy ile kodlamayı öğren

BAŞLA