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.

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.

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

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

Daha sonra kod yazarken bu kodlara ihtiyaç duyduğumuzda

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

Bilinçlendirme konusundanda bende hem fikirim. Ama yeterli olurmu orası şüpheli.
Zaman her şeyin ilacı nasıl ie5.5 silinip gitti ise zamanla ie6′da silinip gidecektir. Zamanı kısaltmak için bilinçlendirme güzel bir öneri.
Örneğin, microsoftun x86 mimarisi var ve program, oyun yapımcılarının bu standarda göre yaptıkları oyun ve programlar microsoft tabanlı sistmelerde birebir çalışıyor, web tarayıcısı alanında da tek bir standardın çıkıp bu standarda göre yazılan kodlar her tarayıcıda çalışır ekstra hile yapmanıza gerek yok denilmesini sabırla bekleyenlerdenim. Her tarayıcı farklı css özelliklerini destekliyor veya desteklemiyor, mozilla firefox css3 e geçmişken bildiğim kadarıyla internet explorer birçok özelliği desteklemiyor. Tek bir standart çıkana kadar hilelerle kastırmaya devam…
@Murat Beşer,
Bilinçlendirmek gerekli diyorsun ama millet bu kadar fazla kaçak-kopya windows kullanırken nasıl bilinçlendireceksin :D
Son Kullanıcı IE 6 kullanıyor diye ilerlememek anlamsız olur.
Son kullanıcının bilinçlendirilmesi gerekmekte. IE6 kullanıyorsa güvenlik sebeblerinden dolayı IE7 yi yükletirsiniz. Yurt dışında bir çok sitede bu yöntem ile karşılaşabilirsiniz.
Bknz: Adobe Flash … Sisteminizde flash kurulu değil ise sizi kurmaya yönlendirir.
Müşterilerinizi bilinçlendiremezsiniz elbetteki ama yöneticilerinizi bilinçlendirebilirsiniz.
Bir çok müşterinin basit bir savunması şudur: “Ben hadi şimdi yükledim peki diğerleri ?” onlarada bunun açıklaması yapılması gerekmekte IE6′nın piyasadan kalkamasıyla bir çok güvenlik sorunuda ortadan kalkacaktır zaten.
Bilinçlendirme için aslında bir yazı group oluşturulabilir… Öneri tabi beni uzak tutun :D zamanında başım çok ağrıdı :D
Yine harika bir paylaşım yapmışsınız. Teşekkürler.
Ahmet Burak Bal, çok haklısın. Kendi sitemin analizini yaptığımda görüyorum ki %60 oranında IE6 tarayıcısı ile girilmiş.
Ama bence artık IE6′ nın tamamen kalkması lazım. CSS3 diyoruz yeni özelliklerden bahsediyoruz halen IE6 kullanıcıları için kod yazıyoruz.
Büyük sitelerin bir çoğu destek vermediklerini belirtiyorlar.
Teşekkürler Fatih abi. Her zaman söylediğimi yine söylüyorum. Web yöneticileri her ne kadar IE6 düşmanı olsa da IE6′nın kullanıcı sayısı karşısında ona göre şekil almak zorundalardır.
Paylaşım için teşekkürler.
CSS 2.1 de geçiyor hocam önceki sürümlerde geçmiyor.
@Kadir Günay _ hilesinin sorunu w3c validator un dan geçmemesi idi. Ama yanlış hatırlıyor olabilirim.
Fatih hocam müsadenizle ben de kendi kullandığım bir hack örneğini eklemek istiyorum;
IE6 için _ hackini örnek vereyim
#deneme {margin:10px 0 0 15px;}örneğimizde deneme divi için üstten 10px sağ ve alttan 0px soldan ise 15px margin değeri atadık. Fakat IE6′ da bu değerlerin tam istediğimiz gibi olmadığını gördük. Bunu düzenlemek için ben#deneme {margin:10px 0 0 15px; _margin:10px 0 0 10px}_ hack’ini kullanıyorum. İkinci örnekte _margin değerine soldan 15px yerine 10px atayarak IE6′ da istediğim sonucu elde edebiliyorum. Bu hack hemen hemen tüm değerler için uygulanabiliyor.
Hocam teşekkürler.