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ğer | Ne görürsün | Kaydırma kapsayıcısı |
|---|---|---|
visible (varsayılan) | İçerik kutudan taşar ve ardından geleni örter | Hayır |
hidden | Padding kenarında kırpılır, kaydırma çubuğu yok (script yine de kaydırabilir) | Evet |
clip | Kırpılır ve script ile bile hiç kaydırılamaz | Hayır |
scroll | İçerik sığsa bile her zaman kaydırma çubuklarını gösterir | Evet |
auto | Yalnı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-roothiç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.
heightya damax-heightdeğeri olmayan bir kutu taşmak yerine büyür. - Yatay kaydırmayı "düzeltmek" için
bodyüzerindeoverflow: hidden. Bunun yerine fazla geniş olan elementi bul (çoğunlukla sabit birwidth, uzun bir URL ya da kaydırma çubuğuyla birlikte100vw). white-space: nowrapolmadan 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.clipkullan. - Kartı tarafından kesilen bir açılır menü. Kartın
overflow: hiddendeğ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.