- Konu sahibi
- #1
Yazının kutudan taşmasını önlemek için önce metnin satıra bölünebilmesini sağlayın: uzun ve kesintisiz metinlerde
Bu kural, özellikle uzun URL, dosya adı, e-posta adresi veya boşluk içermeyen başka bir metin parçası kapsayıcıyı aşarsa metnin uygun bir yerden bölünmesini sağlar.
Önce taşan öğenin genişliğini ve metnin satır davranışını kontrol edin. Kapsayıcıda
Normal paragraf, başlık ve kart metinlerinde şu yaklaşım genellikle yeterlidir:
Her özellik aynı sorunu çözmez.
Tablodaki son iki yaklaşım, metni gerçekten görünür tutmak yerine taşan kısmı gizleyebilir veya okunabilirliği azaltabilir. Bu yüzden açıklama, makale ve kullanıcı mesajlarında önce
Kart başlığı, menü öğesi veya kısa etiket tek satırda kalmalı ve fazla kısmı göstermemeliyse üç özellik birlikte kullanılır. Öğenin genişliği belirli olmalı, taşan bölüm gizlenmeli ve metin taşması üç noktayla belirtilmelidir:
Bu örnekte 240 pikselden uzun başlık tamamen satıra bölünmez; görünmeyen bölümün yerine üç nokta gösterilir. Bu yöntem metnin tamamını korumaz. Kullanıcı metnin tamamını okuyabilmeli ise
Taşma bir
CSS kuralını taşan metnin bulunduğu öğeye veya onu kapsayan uygun bir sınıfa ekledikten sonra sayfayı dar bir ekran genişliğinde kontrol edin. Metin yeni satıra bölünüyorsa sorun çözülmüştür. Yalnız tek satırlık başlıkta üç nokta görünüyorsa bu, taşan kısmın gizlendiği anlamına gelir; metnin tamamının gösterildiğini kanıtlamaz.
Taşma devam ediyorsa şu sırayla ilerleyin:
overflow-wrap: anywhere; veya overflow-wrap: break-word; kullanın. Taşmanın nedeni tek satırda kalma, sabit genişlik ya da taşan içeriği gizleme isteğiyse buna göre white-space, word-break, overflow ve text-overflow özelliklerini birlikte ayarlayın. Çoğu normal metin için güvenli başlangıç aşağıdaki kuraldır:
CSS:
.metin {
max-width: 100%;
overflow-wrap: anywhere;
}
Bu kural, özellikle uzun URL, dosya adı, e-posta adresi veya boşluk içermeyen başka bir metin parçası kapsayıcıyı aşarsa metnin uygun bir yerden bölünmesini sağlar.
max-width: 100%; ise öğenin bulunduğu alanı aşmamasına yardımcı olur; ancak tek başına uzun bir kelimeyi satıra bölmez.Taşmanın nedenini ayırın
Önce taşan öğenin genişliğini ve metnin satır davranışını kontrol edin. Kapsayıcıda
white-space: nowrap; varsa metin satır değiştirmez. Sabit genişlik verilmiş bir öğe, dar ekranlarda bulunduğu alandan büyük kalabilir. Uzun ve boşluksuz bir ifade ise normal satır kırma kurallarıyla bölünemeyebilir.Normal paragraf, başlık ve kart metinlerinde şu yaklaşım genellikle yeterlidir:
CSS:
p,
h1,
h2,
h3,
.card {
max-width: 100%;
overflow-wrap: break-word;
}
break-word, uzun metin gerektiğinde satır sınırında kırılmasına izin verir. Daha agresif bir davranış istiyorsanız anywhere kullanabilirsiniz. anywhere, tarayıcının metni daha fazla noktada bölmesine izin verdiği için çok uzun URL ve kimlik dizilerinde taşmayı önlemede daha etkilidir; buna karşılık kelime bütünlüğü daha erken bozulabilir.Kullanılacak CSS özelliğini seçin
Her özellik aynı sorunu çözmez.
overflow-wrap uzun kelime veya URL gibi ifadelerin gerektiğinde bölünmesini sağlar. word-break ise karakterler arasındaki bölünme davranışını daha sert biçimde değiştirir. Bu nedenle normal Türkçe metinlerde ilk tercih olarak word-break: break-all; kullanmak iyi bir seçim değildir; kelimeleri okunması zor noktalardan bölebilir.| İhtiyaç | Uygun özellik | Sonuç |
|---|---|---|
| Uzun URL veya boşluksuz metin taşmasın | overflow-wrap: anywhere; | Metin gerektiğinde daha fazla noktadan bölünür |
| Uzun kelime gerektiğinde satıra sığsın | overflow-wrap: break-word; | Kelime, taşmayı önlemek için satır sınırında kırılabilir |
| Metin tek satırda kalsın | white-space: nowrap; | Satır kırılmaz; taşma ayrıca yönetilmelidir |
| Tek satırın sonunu üç noktayla göster | overflow: hidden; text-overflow: ellipsis; | Taşan bölüm gizlenir ve genellikle üç nokta gösterilir |
| Karakterler arasında daha sert kırma | word-break: break-all; | Gerekirse kelimeler karakter sınırlarından bölünür |
overflow-wrap ile satıra sığdırmayı deneyin.Tek satırlık metni üç noktayla sınırlama
Kart başlığı, menü öğesi veya kısa etiket tek satırda kalmalı ve fazla kısmı göstermemeliyse üç özellik birlikte kullanılır. Öğenin genişliği belirli olmalı, taşan bölüm gizlenmeli ve metin taşması üç noktayla belirtilmelidir:
CSS:
.kart-basligi {
width: 240px;
white-space: nowrap;
overflow: hidden;
text-overflow: ellipsis;
}
Bu örnekte 240 pikselden uzun başlık tamamen satıra bölünmez; görünmeyen bölümün yerine üç nokta gösterilir. Bu yöntem metnin tamamını korumaz. Kullanıcı metnin tamamını okuyabilmeli ise
white-space: normal; ve overflow-wrap: break-word; kullanarak birden fazla satıra izin verin.Flex ve Grid içinde oluşan taşmayı düzeltme
Taşma bir
flex veya grid öğesinde meydana geliyorsa yalnızca metne kural vermek yeterli olmayabilir. Flex öğeleri varsayılan olarak içeriklerinin doğal genişliğini korumaya çalışabilir. Bu durumda metni taşıyan doğrudan alt öğeye min-width: 0; ekleyin:
CSS:
.satir {
display: flex;
max-width: 100%;
}
.satir .icerik {
min-width: 0;
overflow-wrap: anywhere;
}
min-width: 0;, flex öğesinin içeriği kadar genişlemek zorunda kalmasını önler. Ardından overflow-wrap, uzun metnin kalan genişliğe göre bölünmesini sağlar. Grid düzeninde de benzer bir sorun varsa sütunun minimum genişliğini içeriğe göre sınırlamak için örneğin minmax(0, 1fr) kullanılabilir:
CSS:
.duzen {
display: grid;
grid-template-columns: minmax(0, 1fr) 240px;
}
Uygulama sonrası kontrol
CSS kuralını taşan metnin bulunduğu öğeye veya onu kapsayan uygun bir sınıfa ekledikten sonra sayfayı dar bir ekran genişliğinde kontrol edin. Metin yeni satıra bölünüyorsa sorun çözülmüştür. Yalnız tek satırlık başlıkta üç nokta görünüyorsa bu, taşan kısmın gizlendiği anlamına gelir; metnin tamamının gösterildiğini kanıtlamaz.
Taşma devam ediyorsa şu sırayla ilerleyin:
- Öğede veya üst kapsayıcıda
white-space: nowrap;bulunup bulunmadığını kontrol edin. Normal satır kırılması isteniyorsawhite-space: normal;kullanın. - Flex düzenindeyse taşan doğrudan alt öğeye
min-width: 0;ekleyin. - Uzun URL veya boşluksuz dizi varsa
overflow-wrap: anywhere;deneyin. - Taşmanın kaynağının metin değil, geniş bir görsel ya da başka bir alt öğe olduğunu kontrol edin; bu durumda metin kuralını değiştirmek sorunu çözmez.
overflow-wrap: break-word; veya uzun, boşluksuz diziler için overflow-wrap: anywhere; kullanmaktır. Amaç sınırlı alanlı bir arayüzde kısa önizleme göstermekse white-space: nowrap; overflow: hidden; text-overflow: ellipsis; üçlüsünü tercih edin.