Kategoriler: Genel

CSS- IE’un 3 piksel Metin Öteleme Hatası

Bu hata IE5-6/Win versiyonlarında görünür. Float uygulanmış elementlere komşu metinlerin maruz kaldığı bir hatadır. Örneği bir elementinize float:left tanımı yaptınız ve yanına bir paraf yazı eklemek istediğinizde, ie5-6 versiyonlarında soldaki float uygulanmış element içeriği boyunda sağdaki metin soldan 3 piksel kadar içeriğini öteleyecektir.

  1. .solKolon {
  2. float: left;
  3. width: 200px;
  4. background-color:#00CCFF;
  5. }
  6. p {
  7. margin-left: 200px;
  8. background-color:#CCCCCC;
  9. }

Başlangıç olarak değişen içeriğine göre yükselik alan metin alanına(sağdaki metin) müdahale edeceğiz. Görünüm olarak 3 piksellik boşluğu kaldırabiliriz. IE5-6 yükseklik tanımını min-height gibi yorumlar, elementin yüksekliğine küçük bir değer(height:1%) atadığımızda bu elementin boyutunu değiştirmeyecektir. Bu atama diğer web tarayıcılarını etkileyecektir bu nedenle diğer web tarayıcılarından bu kodu gizlemeliyiz.

  1. /* E5-Mac gizleyelim. sadece IE-Win görsün bu kodu. */
  2. * html p {
  3. height: 1%;
  4. }
  5. /* IE5/Mac den gizlemeye son */

Ancak şöyle bir sorunumuz daha var ki önceki konulardan bildiğimiz gibi bu alana float uygulandığında margin-left:200px tanımını IE iki kat görecektir bunu engellemek için margin-left değerini sıfırlamalıyız.

  1. /* E5-Mac gizleyelim. sadece IE-Win görsün bu kodu. */
  2. * html p {
  3. height: 1%;
  4. margin-left: 0;
  5. }
  6. /* IE5/Mac den gizlemeye son */

İçerideki boşluğu aldık ancak elementler arasında boşluk kaldı bunu kaldırmak için sağ margin değerine -3 piksel atama yapmalıyız.

  1. /* E5-Mac gizleyelim. sadece IE-Win görsün bu kodu. */
  2. * html p {
  3. height: 1%;
  4. margin-left: 0;
  5. }
  6. * html .solKolon {
  7. margin-right: -3px;
  8. }
  9. /* IE5/Mac den gizlemeye son */

Bu tüm sorunlarımız çözecektir. Tabi float uygulanan elementin içinde resim yoksa. Resmin olduğu durumlarda sorun olacaktır. Bu sorunu çözmek için IE5/Win için resmin sağına ve soluna -3 piksel margin ataması yapmalıyız. IE6 bu margin’leri görmemelidir. Bunun için kodumuz şöyle olacaktır:

  1. /* E5-Mac gizleyelim. sadece IE-Win görsün bu kodu. */
  2. * html p {
  3. height: 1%;
  4. margin-left: 0;
  5. }
  6. * html img.solKolon {
  7. margin: 0 -3px;
  8. margin: 0;
  9. }
  10. /* IE5/Mac den gizlemeye son */

Biliyorum bu kod bizim sade ve temiz kod mantığımıza çok ters ama yapılabilecek pek bir şey de yok. Bu CSS’in sorunu değil tamamen IE’nin sorunundan kaynaklanıyor.

Microsoft bu hatasını sonunda anladı ve yeni versiyonu IE7‘de bu sorunu giderdi. Ama bu bizim hatayı ayıklamamız anlamına gelmiyor. En azında IE7 kullananlar çoğalana kadar. Hala 1999′da çıkan IE5 için kod yazdığımızı düşünürsek bayağı bir zaman daha bu kodları yazmamız gerekiyor:/
Bul-Tikla

Son Yazılar

Astronomi ve Astroloji Nedir? – Türk Dili ve Edebiyatı

Astronomi ve Astroloji Sema, insanlığın en eski merak alanlarından biridir. İnsanlar binlerce yıl süresince Güneş’i,…

5 saat ago

Üstkurmaca Tekniği Nedir? – Türk Dili ve Edebiyatı

Üstkurmaca Nedir? Bir roman okurken anlatıcının ansızın “Şimdi bu kahramanı buradan iyi mi çıkaracağımı düşünüyorum.”…

19 saat ago

Güvenilmez Anlatıcı Tekniği – Türk Dili ve Edebiyatı

Güvenilmez Anlatıcı Tekniği Bir romanı ya da hikâyeyi okurken anlatıcının söylediklerini bir çok süre doğru…

1 gün ago

Beni Asla Bırakma – Kazuo Ishiguro

Beni Asla Bırakma – Kazuo Ishiguro Bazı romanlar gelecekte yaşanabilecek büyük felaketleri göstererek okuru sarsar.…

3 gün ago

İlhan İrem – Türk Dili ve Edebiyatı

İlhan İrem İlhan İrem, Türk müziğinde yalnızca söylediği duygusal şarkılarla değil; besteci, söz yazarı, yorumcu,…

4 gün ago

Gamlı Baykuş Ne Demek? – Türk Dili ve Edebiyatı

Gamlı Baykuş “Gamlı baykuş” sözü; mutsuz, kederli, karamsar, içine kapanık yada devamlı negatif düşünen şahıs…

4 gün ago