En çok kullandığım CSS Hileleri(Hack)

Yaklaşık 3-4 senedir css ile web sayfası kodluyorum. CSS ile web sayfası kodlarken en çok sorun çıkaran konulardan biri farklı tarayıcılar için kod yazmaktır. CSS hileleri ile geçiştirdiğimiz bu farklı tarayıcılara göre kod yazma işi bize aslında CSS ile sayfa kodlama imkanı sunması bakımından önemlidir. Eğer CSS hileleri olması idi biz farklı tarayıcılar için değil belirli tarayıcılar için kod yazmış olacaktık ki bu erişebilirlik açısından ve müşteri istekleri açısından sorun oluşturan bir durumdur.

Başta dediğim gibi 3-4 senedir CSS ile sayfa kodluyorum ve en çok kullandığım css hilelerini burada yazmamın uygun olacağını düşündüm. Çünkü birçok bu işi yeni başlayan arkadaş için önemli bir bilgi olacağını düşünüyorum. Lafı fazla uzatmadan listemiz açıklayalım.

1- Kutu Modeli ve CSS hillesi

Kutu modeli sorunları ve çözüm önerilerinden bahsettiğimiz makale ve bu konunun önemi açısından bu css hilesini başa aldık. Gerçekten birçok yerde karşılaştığımız bu sorun kullanılması en karmaşık gelen bir sorundur. Genel mantık olarak ie’nin özellikle 6 ve garip mod daki diğer tarayıcılarında farklı görünmesini engellemek için tantek çelik tarafından oluşturulan bir hiledir.

Kutu genişliği tanımlanmışsa ve padding veya kenar çizgiside tanımladığımızda uygulanan bu yöntem için yazdığımız kod aşağıdadır

#icerik{
width:230px;
padding:10px;
margin:5px; /* Bundan sonraki kısmı ie5win sakla */
voice-family: "\"}\"";
voice-family:inherit;
width:200px;
}
html>body #icerik {
width:200px;
}

Sorun olan kodumuza biz sadece

voice-family: "\"}\"";
voice-family:inherit;
width:200px;
}
html>body #icerik {
width:200px;
} 

Bölümünü uygulamamız yeterlidir. Daha sonra eğer genişlik ise genişliği yükseklik ise yüksekliği ayarlamamız gerekir. Daha sonra html>body #icerik kısmından #icerik yerine kendi nesne adımızı yazmalıyız.

2- Float uygulanmış nesnelerin kapsayamama sorunu

Aslında clearfix olarakta adlandırılan bu sorun bir çok yerde başımıza dert olur. Alıştıktan sonra hemen uygular ve geçeriz.

Sorunumuzun genel tanımı Float uygulanmış bir elementi içeren kapsayıcı element içeriğine göre genişlememesidir.

float sorunu

Kodumuz;

.kapsul:after {
content: ".";
display: block;
height: 0;
clear: both;
visibility: hidden;
} 

.kapsul {display: inline-block;} 

/* IE-mac de bu bolumu sakla \ */
* html .kapsul {height: 1%;} 

.kapsul {display: block;}
/* IE-mac bu bolumu saklam artik */ 

Bu kodda .kapsul yerine kendi nesne ismimizi yazmamız yeterlidir.

3. IE6′un Tekrarlayan Karakter Sorunu

Bu hata birden fazla float uygulanmış iç içe elementlerde meydana gelir. Son float uygulanmış elementin son karakterleri tekrarlar. Soruna nedeni html yorum satırlarıdır ve çözüm için

<!--[if !IE]>Yorumunu buraya yaz <![endif]--> 

Kodunu yazarız. Ben burada yorum yazarken bu sorunla karşılaşabilirim diye tüm yorumlarımı bu şekilde yazarak bu sorundan kaçınmaya çalışıyorum.

4. IE6′nın min-height Sorunu

Son zamanlarda gelen işlerde çok rastlamam nedeni ile bu listeye son anda ilave ettim. IE6′nın desteklemediği min-height özelliği için

min-height:500px;
height:auto !important;
height:500px;

yazmamız yeterli.

Bunun dışında CSS Derslerindeki sayfasındaki CSS Problemleri ve Çözüm Önerileri kısmında birçok problem görünse de yukarıda saydıklarım problemlerle çok sık karşılaşıyorum. Bu sorunlarla karşılaştığımda her defasında siteye girip bu kodları kopyalamak sorun oluyor, bu nedenle Adobe Dreamweaver’ın Snippets Aracı ile bu sorunu giderdim.

Dreamweaver’da Snippets eklemek çok basit. İlk olarak eğer açık değilse Snippets penceresini açmak için üst menüden Window -> Sineppets veya shift+F9 kısayolu ile açabiliriz. Açtıktan sonra farenin sağ tuşuna basarak New Sineppet tıklayalım.

Dreamweaver Sineppet Penceresi

Açılan pencerede Name kısmına ismini yazalım(Örne: kutu hilesi) Insert Code kısmına da kodumuzu ekleyelim.

Dreamweaver Sineppet Penceresi

Evet kodumuzu eklemiş olduk. Bu şekilde devamlı kullandığımız kodları Sineppets penceresine ekleyerek kolaylık sağlayabiliriz.

Dreamweaver Sineppet Penceresi

Daha sonra kod yazarken bu kodlara ihtiyaç duyduğumuzda

Dreamweaver Sineppet Penceresi

Hemen bu pencereden ilgili başlığa çift tıklayarak kodumuzun içine ekleyebiliriz.

Dreamweaver Sineppet Penceresi

24 Yorum (Yorum Ekle)

  • [...] CSS konusunda bilmeniz gereken diğer bir husus clearfix gibi en çok bilinen CSS hileleri hakkında bilgi sahibi olmak. Bu konuyu da işin duayeninden öğrenebilirsiniz: En çok kullandığım CSS Hileleri(Hack). [...]

  • Query diyor ki:

    Fatih Hocam eline beynine sağlık sitenden çok şey öğrendim. Hakkını helal et …

  • [...] CSS konusunda bilmeniz gereken diğer bir husus clearfix gibi en çok bilinen CSS hileleri hakkında bilgi sahibi olmak. Bu konuyu da işin duayeninden öğrenebilirsiniz: En çok kullandığım CSS Hileleri(Hack). [...]

  • onur diyor ki:

    alico’nun yorumunu da siteyi de okudum. bence bi kod koyun. eger biri ie6 ile girise, ya orta parmak gösterip, o tarayici ie7nin indirilebildigi bi siteye yollasin, ya da pencere uyari verip kapansin =)) ie yi savunanlari anlamiyorum. ben de ie8 var suan =)) deneme amacli. ben fanatik bi mozilla kullanicisiyim. ienin fontlari grafikleri (kötü demiyorum) ama koyu ve birazda sanki dolma kalemle yazmista, harfler kagit üstünde biraz dagilmis gibi. ie’nin güvenlik sorunu ve addonlara ulasim, addon eklendiginde, bir tek addon bile eklense, yarim saate tarayicinin acilmasi, vs cileden cikariyo.

    siteme giren de, ya ie 8 sahibi olacak, yada mozilla2 ve yukarisi =)) yok ie6 yok safari, yok su yok bu. tanimiyom ben öyle bisi. siteye giren girer. girmeyen, update yapip gelsin.

    Hayri Bey’e de tesekkür ederim. sitesi cok yararli

  • onur diyor ki:

    =)) barin bi tanesinde w-lan vardi :P amcanin biri laptop kullanmadan bi haber.. nete giriyo =)) gül gül ölüyorum hala :D neyse… baktim amca antivir programi ariyo nette. dedim niye yok makinada. tonla siteye girip cikiyosun antivirin yok. (o arada antivir de ariyo tabii. asil amac da oymus zaten =)) neyse. baktim makinaya hakkaten antivir falan hic bisi yok. dedim dur ben kurayim yoksa virüs falan kapicaksin =)) dedi ki: ” bisi olmaz. baglanti nasil olsa güvenli (sifreli)… xDD w-lan dan bahsediyor.. xDDD bende güvenlik manyagi olmusum. megerse bu tipler kaybediyo nette kredi karti sifresini :D ben arkadasa hak veriyorum. insanlarin artik ie6 yi silmesi lazim. kacak windows bile kullanilsa, Win Future kurulur. ve ie6dan kurtulursun.. millet akla karayi seciyo, 2000 tarihli browserlar yüzünden. browser madem eski, prog. dilini niye gelistirdin?

  • Yusuf etli diyor ki:

    Fatih bey, bi türlü beceremedim.
    ben css deki body i ie6 ve alt sürümlerinde farklı bir bg atamak istiyorum.
    örnek bi kod yazabilirmisin.
    karmaşık geldi bana biraz.

  • Metin METE diyor ki:

    hocam makale güzelde
    min-height:500px;
    height:auto !important;
    height:500px;

    bu kodu zaten başka bir sitede görmüştüm! deneyemedim ama senin sitede de görünce deneyeyim dedim…

    AMAÇ:
    ie6′da “min-height” kodunun çalışmaması!

    SONUÇ:
    firefox ve ie7′de sorun yok!
    ie6′da ise son belirlenen yükseklikte sabit kalıyor! tablonun altında kalan yazılar otomatikman pert…

    **********************************************************

    benim anlamadığım kısım “min-height” kodu çalışmıyor! yükseklik belirtmek istemiyorum! çünkü tablonun içi değişken! burda 2 kez neden yükseklik belirtiyoruz ayrıca yükseklik belirtmek zorundamıyız? dediğim gibi benim tabloların içi değişken ve bir ton alt alta öle tablo var! yükseklik belirtmeden “min-height” ile en düşük bir yükseklik belirtmek istiyorum fakat ie6 yan çiziyor :@

    • fatih.hayrioglu diyor ki:

      min-height tanımını biz ie7 ve ff gibi yeni nesil tarayıcılar için yapıyoruz.

      height tanımı ise ie6 için yapıyoruz. tabi yeni nesil tarayıcıların bu height de netkilenmemesi içinde height:auto !important diyoruz.

      Burada bir nokta da çok önemli ie6 height değerini zaten min-height gibi yorumluyor :D

  • alico diyor ki:

    @Kadir GÜNAY

    Geçenlerde aşağıdaki adreste baya bir münazere yapmıştık, acı olan gelişticilerden çoğunluk olmasada ie’nin davranışını makbül görmelerini anlamak gerçekten mümkün değil.

    vallhi çıldırtmada üstüne yok, İyi bir üfürükçüye gidip tüm ie6 kullananıcılarına muska yazdırmak dahi geldi aklıma

    http://forum.perfectgate.net/ie-8-beta-gercekten-hizli-t1588.html?p=12359#post12359

  • Eray USTA diyor ki:

    Hocam bende birton insanı İE7 ye yada firefox a yönlendiriyorum fakat gelin görünkü ben alıştım buna mantığıyla hareket ediyoruz birazda, hileler için teşekkürler. Bende CSS kullanıyorum fakat böyle ipuçlarına ihtiyacım var.

  • Kadir GÜNAY diyor ki:

    Fatih hocam yapmayın. Elbette silinecek ilelebet kalmayacak ama 8 senedir hayatımızda ya. Yeter yani. Benim insanları bilinçlendirmek adına bir site açasım var. Mikro site. Neden IE6 kullanmamalarını anlatmak ve sitelerin IE6 ekran görüntülerini göstermek gibi :D

Yorum yaz

Format: Yorum içinde kullanılabilecek HTML kodları: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>

?