IE6 içinde yaşanan iframe horizontal scrollbar problemi

Günümüzde ajax kullanımı ile birlikte iframe kullanımı azımsanmayacak şekilde azaltılmış olsada, bazı durumlarda iframe kullanmamız gerekiyor.

Iframe varsayılan olarak atamış olduğumuz yükseklik ve genişlik değerinden daha yüksek yada geniş bir içerik ile karşılaştığında scroll çıkartarak bize içeriği gezme imkanı sunar. Fakat IE6 burada bize yine bir oyun oynuyor ve içeriğin yüksekliği iframe için atamış olduğumuz yüksekliği aştığı anda iframe’in genişliği iframe için atamış olduğumuz içerikten daha düşük olduğu halde yatayda scroll çıkartıyor. Karışık bir tanımlama oldu ama umarım hatanın ne olduğunu anlatabilmişimdir.

Çözüm ise basit. Iframe içinde açılacak olan sayfamızın <head> tagları içinde aşağıdaki style tanımlamasını eklememiz sorunun çözülmesi için yeterli olacaktır.

<!--[if IE 6]>
<style type="text/css">
  html {overflow-x:hidden}
  body {overflow-y:hidden}
</style>
<![endif]-->

Yukarıdaki style tanımını incelerseniz başında ve sonunda <!–[if IE 6]>…<![endif]–> benzer bir tanım olduğunu görüceksiniz. Bu tanımlamayı kullanmamın nedeni eklemiş olduğum kuralın sadece IE6 için işletildiğine emin olmak ve bu hataya rastlanmayan diğer tarayıcıları etkilememesini sağlamaktır.

Tarayıcılara özel kapsamlı CSS Hack listesi

Arayüz kodlayan bir çok kişinin ihtiyacı olacağını düşündüğüm Tarayıcılara özel olarak kullanacabileceğimiz CSS Hack yöntemlerinin bir çoğunu görebileceğiniz listeyi sizlerle paylaşmak istedim. Her ne kadar CSS Hack yapmadan arayüz hazırlamak hayalim olsada umarım bu listedeki Hack yöntemleri hayatınızı kolaylaştırırır.

Seçici Hackleri (Selector Hacks)

IE6 ve alt sürümleri

[css]* html #test { color: red }[/css]

IE7

[css]*:first-child+html #test { color: red }[/css]

IE7, FF, Saf, Opera

[css]html>body #test { color: red }[/css]

IE8, FF, Saf, Opera (IE 6,7 hariç)

[css]html>/**/body #test { color: red }[/css]

Opera 9.27 ve alt sürümleri, safari 2

[css]html:first-child #test { color: red }[/css]

Safari 2-3

[css]html[xmlns*=""] body:last-child #test { color: red }[/css]

safari 3+, chrome 1+, opera9+, ff 3.5+

[css]body:nth-of-type(1) #test { color: red }[/css]

safari 3+, chrome 1+, opera9+, ff 3.5+

[css]body:first-of-type #test { color: red }[/css]

saf3+, chrome1+

[css]
@media screen and (-webkit-min-device-pixel-ratio:0) {
#test { color: red }
}
[/css]

Safari 2 – 3.1

[css]html[xmlns*=""]:root #test { color: red }[/css]

Safari 2 – 3.1, Opera 9.25

[css]*|html[xmlns*=""] #test { color: red }[/css]

IE6-8 hariç

[css]:root *> #test { color: red }[/css]

IE7

[css]*+html #test { color: red }[/css]

Sadece Firefox. 1+

[css]#test, x:-moz-any-link { color: red }[/css]

Firefox 3.0+

[css]#test, x:-moz-any-link, x:default { color: red }[/css]

Öznitelik Hackleri (Attribute Hacks)

IE6

[css]#test { _color: blue }[/css]

IE6, IE7

[css]#test { *color: blue }[/css]

IE6 Hariç

[css]#test { color/**/: blue }[/css]

IE6, IE7, IE8

[css]#test { color: blue\9; }[/css]

IE7, IE8

[css]#test { color/*\**/: blue\9; }[/css]

IE8 Hakkında Bilmeniz Gerekenler

IE8 uyumluluk modu / IE8 tarayıcısının IE7 gibi render etmesini önlemek

IE8 içinde bir düğmeye basarak sayfamızı IE7 içinde çalışır gibi davranmasını sağlayabiliyoruz. Bu düğmeye tıklandığında sayfamız bundan sonra IE7 gibi davranmaya başlayacaktır. Peki, IE7 modunda sayfamızın IE8 gibi davranma şansı varmı? Maalesef bunu yapmak mümkün değil. Eğer sayfalarımızı IE8 içinde çalışacak şekilde tasarlamış ve kesinlikle bu modda çalışmasını sağlamak istiyorsak sayfamızın içine aşağıdaki parametreyi eklemek yeterli olacaktır.

<meta http-equiv="X-UA-Compatible" content="IE=8" />

Alternatif olarak, eğer tarayıcımızın IE7 gibi davranmasını istiyorsak aşağıdaki kodu eklememiz yeterli olacaktır.

<meta http-equiv="X-UA-Compatible" content="IE=7" />

Her ne kadar bu etiketleri ekleyerek IE8’in IE7 gibi davranmasını sağlasakta bu gerçek bir IE7 gibi olmayacaktır. Bu nedenden meta etiketlerinin kullanımını önermiyorum.

IE8 CSS Hack

IE8 için kullanacağım hack yöntemi star hack yöntemini kullarak IE7 ve daha düşük versiyonları hedef alır. Fakat eski IE tarayıcıları için daha farklı hack yöntemleride kullanılabilir.

p.myclass {
color: green;
*color: red;
}

body:last-child p.myclass {
color: blue;
}

Bu hack yöntemi kullanıldığında myclass sınıfına sahip paragraflar;

Görselliği Zenginleştirilmiş Selectbox (Custom Selectbox)

Web tasarımı ile ilgilenen herkezin bir kerede olsa görsel olarak düzenlemeye çalışmış olduğunu düşündüğüm ve ama her seferinde hüsranla sonuçlanan, tarayıcılar içinde görsel olarak belirli bir standarta oturmamış olan SELECTBOX‘tan bahsediyorum.

Hazırladığım projenin amacı sayfamızda bulunan ama ısrarla görsel olarak mudahaleye cevap vermeyen selectboxları bir javascript dosyası yardımı ile görsel olarak biçimleyebilmek.

Evet yanlış duymadınız. Artık sayfamızda bulunan selectboxlar üzerinden görsel olarak mudahale şansınız olacak. Tabiki bu bir ilk değil. Web dünyasında aşağıda linklerini verdiğim siteler gibi daha bir çok örneğini görebilirsiniz.

Peki Volkan neden bu kastın, zaten alem yapmış neden Amerikayı baştan keşfetmek istiyorsun diyen çıkacaktır aranızda. Belki haklısınız! Belkide;

Biraz BEN yaptım, hazırladım diyerek kendimi iyi hissetmem haricinde Türkiye içinde bu tarzda uygulamaları hazırlayan ve dahada iyilerini hazırlayabilecek bir çok insan tanıyorum. Ama üretmenin yanında hep tüketen, takip eden insanlar olacağımıza birazda üreten ve takip edilen insanlar olmak hoşunuza gitmezmi? Açıkcası benim gidiyor ve fırsatlar oldukça bu tarzda uygulamaları yazmaya devam edicem.

Hazırlamış olduğum kod şu anda tam anlamı ile bitmiş ve optimize değil. İşlerimden kalan zamanlarda kodlamaya devam ediyorum. Yaptığım çalışmaya aşağıdaki linklerden ulaşabilirsiniz.

Kendileri deneme yapmak isteyen arkadaşlar Demo linkine tıklayıp proje ilgili dosyaları indirebilirler.

Sizlerden gelen görüşler doğrultusunda kodları iyileştirmeye ve geliştirmeye devam edicem. Bu proje ile ilgili gelişmeleri Projelerim bölümü altından izleyebilirsiniz.

Google Chrome ve Safari 3.1 için CSS Hack Yöntemi

Kullanılan yöntem aslında sadece Google Chrome ve Safari 3.1 tarayıcılarını hedef alan bir yöntem değildir. Fakat şu anda Google Chrome ve Safari 3.1 bilinen tüm seçicilere destek vermesi bu yöntemi sadece bu iki tarayıcı için kullanma imkanı sağlar.

body:nth-of-type(1) p{
color: #333333;
}

Yukarıdaki kuralı sayfamıza eklediğimizde sadece Google Chrome ve Safari 3.1 tarayıcılarında paragrafların renginin gri olduğunu göreceksiniz. Kod tam olarak nasıl çalışır anlatmak istersek:

Tüm bu pseduo’lara ait detaylı bilgiye http://www.w3.org/TR/CSS2/selector.html altından erişebilir ve daha fazla bilgi sahibi olabilirsiniz.

sonraki postalar »