koddla

Yazılımcıları bilgi ile güçlendirir.

Taşan içerik

Taşma, bir konteynere sığmayacak kadar çok içeriğiniz olduğunda başınıza gelen şeydir. Bu yazıda taşmanın ne olduğunu ve nasıl yönetileceğini öğreneceksiniz.

Taşma nedir?

CSS’deki her şey bir kutudur. Bunu daha önceki yazılarımızda görmüştük.  width ve height(veya inline-size ve block-size) değerleri bu kutuların boyutlarını sınırlandırır. Bir kutuya sığmayacak kadar çok içerik olduğunda ise taşma olur. CSS, taşmayı yönetmek için çeşitli araçlar sağlar. CSS mizanpajında ​​ve CSS yazarken ilerledikçe daha fazla taşma durumuyla karşılaşacaksınız.

CSS “veri kaybını” önlemeye çalışır

Taşma olduğunda CSS’nin varsayılan davranışını gösteren iki örneği ele alalım.

İlk örnekte height ayarlanarak kısıtlanmış bir kutu olsun. Bu kutuya, kutu için ayrılmış alanı aşan içerik ekliyoruz. Dolayısıyla içerik kutudan taşacak ve aşağıdaki gibi görünecek;

.box {
  border: 1px solid #333333;
  width: 200px;
  height: 100px;
}
<div class="box">This box has a height and a width. This means that if there is too much content to be displayed within the assigned height, there will be an overflow situation. If overflow is set to hidden then any overflow will not be visible.</div>

<p>This content is outside of the box.</p>

İkinci örnek de, kutudaki bir kelime olsun. Kutu kelime için çok küçük olduğundan aşağıdaki gibi kelime kutunun dışına çıktı.

.word {
  border: 1px solid #333333;
  width: 100px;
  font-size: 250%;
}
<div class="word">Overflow</div>

CSS’nin neden bu kadar dağınık çalıştığını merak ediyor olabilirsiniz. İçeriği neden amaçlanan konteynerin dışında görüntülüyor? Neden taşan içeriği gizlemiyor? Neden kapsayıcının boyutunu tüm içeriğe uyacak şekilde ölçeklemiyor?

CSS mümkün olan her yerde içeriği gizlemez. Bu veri kaybına neden olur. Veri kaybıyla ilgili sorun, bunu fark etmeyebilmenizdir. Web sitesi ziyaretçileri de fark etmeyebilir. Bir formdaki gönder düğmesi kaybolursa ve kimse formu dolduramıyorsa bu büyük bir sorun olabilir! Bunun yerine, CSS görünür şekillerde taşar. Böylece bir sorun olduğunu görme olasılığınız yükselir. En kötü ihtimalle, bir site ziyaretçisi içeriğin çakıştığını size bildirir.

Bir kutuyu width veya height ile kısıtlarsanız, CSS ne yaptığınızı bildiğiniz konusunda size güvenir. CSS, taşma potansiyelini yönettiğinizi varsayar. Genel olarak, kutu metin içerdiğinde kutunun boyutunu kısıtlamak sorunludur. Siteyi tasarlarken beklediğinizden daha fazla metin olabilir veya metin fontu daha büyük olabilir. (örneğin, kullanıcı yazı tipi boyutunu büyütmüşse)

Sonraki iki yazıda boyutlandırmayı kontrol etmeye yönelik farklı yaklaşımlara bakacağız. Ancak, sabit bir boyutta çalışıyorsak taşmanın nasıl davranacağını da kontrol edebilirsiniz. Hadi okumaya devam edelim!

Taşma özelliği

overflow özelliği ile bir elemanın taşma kontrolünü sağlarsınız. Tarayıcıya nasıl davranması gerektiği konusunda talimat verirsiniz. Taşmanın varsayılan değeri visible‘dır. Bu default ile içeriği taştığında da görebiliriz.

İçeriği taştığında kırpmak için de ayarlayabilirsiniz, bunun için overflow:hidden kullanırız. Bu tam olarak söylediklerini yapar: taşmayı gizler. Bunun bazı içerikleri görünmez yapabileceğine dikkat etmeniz gerekir. Bunu yalnızca içeriği gizlemek sorun yaratmayacaksa yapmalısınız.

.box {
  border: 1px solid #333333;
  width: 200px;
  height: 100px;
  overflow: hidden;
}
<div class="box">This box has a height and a width. This means that if there is too much content to be displayed within the assigned height, there will be an overflow situation. If overflow is set to hidden then any overflow will not be visible.</div>

<p>This content is outside of the box.</p>

Ya da bunun yerine, içerik taştığında kaydırma çubukları ekleyebiliriz. overflow: scroll kullanıldığında kaydırma çubukları görüntülenir. Görünür kaydırma çubukları olan tarayıcılar, taşacak kadar içerik olmasa bile kaydırma çubuklarını her zaman görüntüler. Bu, kaptaki içerik miktarına bağlı olarak kaydırma çubuklarının görünmesi veya kaybolması yerine, düzeni tutarlı tutma avantajını sunar.

Aşağıdaki kutudan bazı içerikleri kaldırın. Kaydırma gerekmese bile kaydırma çubuklarının nasıl kaldığına dikkat edin.

.box {
  border: 1px solid #333333;
  width: 200px;
  height: 100px;
  overflow: scroll;
}
<div class="box">This box has a height and a width. This means that if there is too much content to be displayed within the assigned height, there will be an overflow situation. If overflow is set to hidden then any overflow will not be visible.</div>

<p>This content is outside of the box.</p>

Yukarıdaki örnekte sadece y ekseninde kaydırma yapmamız gerekiyor, ancak her iki eksende de kaydırma çubukları görüntülüyoruz. Sadece y ekseninde kaydırmak için overflow-y özelliğini kullanabilirsiniz; overflow-y: scroll.

.box {
  border: 1px solid #333333;
  width: 200px;
  height: 100px;
  overflow-y: scroll;
}
<div class="box">This box has a height and a width. This means that if there is too much content to be displayed within the assigned height, there will be an overflow situation. If overflow is set to hidden then any overflow will not be visible.</div>

<p>This content is outside of the box.</p>

Uzun sözcükleri yerleştirmek için önerilen bir yol olmasa da, overflow-x kullanarak x ekseninde de overflow kullanabiliriz. Küçük bir kutuda uzun bir kelimeniz varsa, word-break veya overflow-wrap özelliklerini kullanmayı düşünebilirsiniz. Ek olarak, CSS’de öğeleri boyutlandırma bölümünde tartışılan yöntemlerden bazıları, değişen miktarlarda içerikle daha iyi ölçeklenen kutular oluşturmanıza da yardımcı olabilir.

.word {
  border: 5px solid #333333;
  width: 100px;
  font-size: 250%;
  overflow-x: scroll;
}
<div class="word">Overflow</div>

scroll ile olduğu gibi, kaydırma çubuğu yeterli içerik olup olmadığına bakılmaksızın görüntülenir.

Not : overflow özelliğini kullanarak x ve y kaydırmasını iki değer ileterek belirtebilirsiniz. İki anahtar kelime belirtilirse, ilki için overflow-x geçerlidir ve ikincisi için overflow-y geçerlidir. Tek değer verildiğinde ise, hem overflow-x ve hem overflow-y de aynı değere ayarlanır. Örneğin, overflow: scroll hidden kullanılırsa overflow-x‘in değeri scroll ve overflow-y‘nin değeri hidden olur.

Kaydırma çubuklarının yalnızca kutuya sığamayacak kadar fazla içerik olduğunda görünmesini istiyorsanız overflow: auto kullanın. Bu, tarayıcının kaydırma çubuklarını gösterip göstermeyeceğini belirlemesini sağlar.

Aşağıdaki örnekte, içeriği kutuya sığana kadar kaldırın. Kaydırma çubuklarının kaybolduğunu görmelisiniz.

.box {
  border: 1px solid #333333;
  width: 200px;
  height: 100px;
  overflow: auto;
}
<div class="box">This box has a height and a width. This means that if there is too much content to be displayed within the assigned height, there will be an overflow situation. If overflow is set to hidden then any overflow will not be visible.</div>

<p>This content is outside of the box.</p>

Taşma, bir Blok Biçimlendirme Bağlamı oluşturur

scroll veya auto gibi bir taşma değeri kullandığınızda, bir Blok Biçimlendirme Bağlamı (BFC) oluşturursunuz. overflow değerini değiştirdiğiniz kutunun içeriği, bağımsız bir düzen elde eder. Kapsayıcının dışındaki içerik, kapsayıcıya giremez ve bu kapsayıcıdan çevredeki yerleşime de hiçbir şey geçemez. Bu, kaydırma davranışını etkinleştirir. Tutarlı bir kaydırma düzeni oluşturmak için tüm kutu içeriği ile dış içerik üst üste gelmemelidir.

Web tasarımında istenmeyen taşma

Modern düzen yöntemleri (sonraki yazılarda bakacağız) taşmayı yönetir. Bir web sayfasında ne kadar içerik olacağına dair varsayımlar veya bağımlılıklar olmadan büyük ölçüde doğru çalışırlar.

Bir site geliştirirken, taşmayı daima aklınızda bulundurun. Büyük ve küçük miktarlarda içerik içeren tasarımları test edin. Metnin yazı tipi boyutlarını artırın. Genel olarak CSS’nizin sağlam bir şekilde çalıştığından emin olun. Kaydırma çubuklarını özellikle istemiyorsanız taşma değerini muhtemelen değiştirmek istemeyeceksiniz.

Becerilerinizi test edin!

Bu yazıdan alınacak çok şey var! En önemli bilgiyi hatırlayabiliyor musunuz? 

Özet

Bu yazı taşma kavramını tanıttı. Varsayılan CSS’nin taşan içeriği görünmez yapmaktan kaçındığını anlamalısınız. Olası taşmayı yönetebileceğinizi, ve ayrıca, çalışmayı yanlışlıkla sorunlu taşmaya neden olmadığından emin olmak için test etmeniz gerektiğini unutmayın.

Bir yanıt yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir

Back to top