CSS FIR Teknigi
09 Mart 2005
Gecenlerde yazdigim CSS Diyeti ile ilgili yazima yorumunu yazan Onur Ozan (Cemshid’in yazari), belki de bircok kisinin bilmedigi ya da farkinda olmadigi fakat bence onemli olan olan bir konuya benim dikkatimi cekti. Tesekkurler Ozan.
Kisaca meseleyi ozetlemek gerekirse, CSS icinde kullanilan display:none; biz tasarimcilara cok yardimci olmakta. display:none; ile istedigimiz bir HTML elementini ya da tasarim icindeki gorsel bir ogeyi, CSS’i destekleyen browserlarda gorunmez yapabiliyoruz. Bir nevi "gorunmezlik iksiri"
display:none; bircok HTML elementi icin kullanilabilir fakat en cok kullanildigi yer, bir tekstin, resim ile degistirilmesi teknigidir. Bu teknige "FIR"(Fahrner Image Replacement) adi veriliyor.
Kanadali Joe Clark (nam-i diger webin erişilebilirlik avukati) display:none; elementinin yanlizca browserlara degil ayrica engellilerin kullandigi ekran okuyucularina da gorunmez oldugunu soyledi (en populer olan JAWS disindaki diger programlara).
Bu yazida birkac degisik FIR teknigini inceleyecegiz:
Diyelim ki bir yazinin basligini CSS ile belirtmek istiyorsunuz ve ayrica bu yaziyi FIR teknigini kullanarak, bir resim ile degistirmek istiyorsunuz. Basliginiz asagidaki gibi olsun:
<h2>Sitenizin Basligi</h2>
Gelin yukaridaki teksti birkac degisik metod ile resime donusturelim. Asagida 3 tane degisik teknikten bahsedecegim. Bu tekniklerin nasil bir sonuc yarattigini gormek isterseniz, buradaki sayfaya goz atabilirsiniz.
1. Teknik
Ilk metod, yukarida bahsettigimiz display:none; elementini kullanacak. Iste yazmamiz gereken CSS:
- #baslik1 {background: url(images/baslik.gif) no-repeat; width:403px; height:64px;}
- #baslik1 span {display:none;}
Bu CSS’in calismasini saglayacak HTML ise su sekilde olacaktir:
- <h2 id="baslik1"><span>Sitenizin Basligi</span></h2>
Gordugunuz gibi, CSS icindeki #baslik1 icin bir arkaplan resmi verdik. Resmin dosya ismi baslik.gif ve boyutlari ise 403px'e 64 piksel. Bu arkaplan resimi, bizim degistirmek istedigimiz tekstin yerini aldi. Teksti ise <span> elementi icine aldik. CSS icinde de #baslik1 id’si icinde gordugun her <span> icin display:none; uygula yani "gorunmez yap" dedik. Bu metod en yaygin kullanilan FIR metodu olmasina ragmen, hem Joe Clark’in dedigi gibi ekran okuyucularinda gorunmuyor hem de herhangi bir nedenle resim erisimini browserlarinda kapatmis kisiler, hem yaziyi hem de resmi goremiyorlar. Bu teknik erişilebilir bir teknik degil.
2. Teknik
Bu teknik ise display:none; ve <span> elementini kullanmadan, bir teksti, resim ile degistirilmesini sagliyor.
Bu teknik icin gerekli CSS asagidaki gibi:
- #baslik2 {background: url(images/baslik.gif) no-repeat; width:403px; height:64px; text-indent: -999px;}
Bu CSS’in calismasini saglayacak HTML ise:
- <h2 id="baslik2">Sitenizin Basligi</h2>
Gordugunuz gibi, bu teknikte, display:none; ya da <span> kullanmadik. Yukaridaki CSS’de yapilan is, <H2> icin bir arkaplan resmi verilmesi ve <H2> elementi icinde kalan yazilar text-indent:-999px; ile ekran goruntusunden disari cikarilmasi. Tekst, -999px, eksi degeri nedeniyle browserinizin gorunen kisminda yer almayacagindan, teks, resim ile yer degistirmis gibi gorunur. Bu teknik, ekran okuyucularina dost iken, resimleri kapatarak sitenize gelecekler, ne yaziyi ne de resmi goreceklerdir. Yani erişilebilir degil.
3. Teknik
Bu teknik, display:none; kullanmaz iken, <span> kullanmaktadir. <span>’i web standartlari ile tasarim yapan bircok kisi, joker olarak kullanir. Bizde bu joker elemani kullanicagiz bu teknikte. Iste bu teknigin CSS’i:
- #baslik3 {position:relative; width:403px; height:64px; overflow:hidden;}
- #baslik3 span {display:block; position:absolute; width:403px; height:64px; background:url (baslik.gif) no-repeat;}
Ve yukaridaki CSS’in calismasini saglayacak HTML ise:
- <h2 id="baslik3"><span></span>Sitenizin Basligi</h2>
Gordugunuz gibi, <span> kullaniyoruz fakat <span> degerinin icine hicbir sey yazmiyoruz. Yukaridaki CSS bize sunlari soyluyor. #baslik3 id’si icinde tekst olabilir ve fakat bu tekst verilen sinirlari yani 403 ile 64 pikseli asamamalidir. Bunu saglayan CSS ise overflow:hidden elementidir. Ayrica yine CSS’de sunlar deniyor, eger #baslik3 <span> iceriyorsa, bu <span> icin arkaplan uygula. Iste boylece, bizim resmimiz, tekstin tam uzerine yer almis oluyor. Bunu saglayan ise position:absolute; oluyor. Bu metod hem ekran okuyucularina hem de browserlarinda resmin fonksiyonunu kapatmis kullanicilara iyi bir sonuc veren bir teknik. Yani erişilebilir.
Fakat bu metodun bos, anlamsiz, ekstra bir <span> elementi ile gerceklestirilmesi, "web anlamliligi" bakimindan iyi bir davranis degil. "Web Anlamliligi" bize her HTML elementinin bir gorevi olmasi gerektigi ve gereksiz kodlamadan kacmamizi soyluyor. Fakat maalesef simdilik, FIR'i hem erişilebilir hem de anlamli yapacak cok fazla bir secenek yok.
Son olarak, yukaridaki uc teknigin sonuclarini gormek isterseniz, bu sayfayi ziyaret edebilirsiniz.
Yeniden tesekkurler Ozan. Siteni (www.cemshid.com) dort-gozle bekliyorum.


Bu yazıya ait 9 yorum var.
Bu yazı yorumlara kapatılmıştır.Anlamsiz tablolardan henuz kurtulmusken spanlara bulasmaya hic mi hiiic niyetim. Soylemek icin firsat kolluyordum; sitenizin basliklarindaki sIFR sisteminden kurtuldugunuza sevindim. O da flash kullanilan bir FIR teknigi. Gorundugu gibi flash kullanmadiginizda da siteniz gorselliginden birsey kaybetmedi. FIR gibi cabalari katma deger saglamadikca -hele ki gorsel kaygilar ile erisilebilirligi tehlikeye attiyorsa- hos karsilamiyorum.
Ilk cumlenin sonunda "yok" sozcugu olmali. Gece birden sonra yazilan yorum boyle sakat oluyor iste :)
Tuncer,
Soylediklerine katiliyorum. Gorsel kaygilar on plana cikarsa, sitenin diger kisimlarinda sorunlar cikacaktir.
Bir websitenin piramit oldugunu dusunursek, bu piramitin en buyuk kismi yani taban kismi sitenin icerigi olan bilgiler, onun bir uzerinde erisebilirlik ve kullanilabilirlik, onun uzerinde CSS tasarim ve en uzerindeki katmanda ucgenin tamamlayan fakat kucuk bir kisim olan gorsel gelistirme (FIR vb) olmali. Eger piramitin yapisini bozmuyorsa, piramiti tamamlayan son kisim olan gorsel gelistirmenin kullanilmasinin bir sakincasi olduguna inanmiyorum. Ornegin CSS Zen Garden, eger FIR olmasaydi, gorsel bakimdan kimseyi bu kadar etkilemeyecekti. Bu demek degildir ki gorsellik on planda. Tam tersi. Gorselligin yanlizca kucuk bir parcasi piramitin. Zaten bu nedenle bende sFIR'i kaldirdim siteden. Cunku bir ziyaretci bana sitede ki sFIR ile ilgili sorunu oldugunu belirtti ve bende kaldirdim.
Soylediklerinize bolca katilmakla beraber sIFR'in bir yana atilamayacak bir ozellik oldugunu dusunmuyorum. Velakin bu elbette ki web ortamindaki icerigin daha temiz gorunebilmesi icin anti-aliasing teknikleri "erisilebilirligi" kisitlayan cozumlerden olusmak zorunda degil.
Keza sIFR'i gelistiren Mike Davidson ve Shaun Inman bu isi bitirdiklerinde dileklerinde sunu belirtmisler:
Ah bu arada, yazi muazzam, ellerinize saglik. :thumbsup:
sitemize arayüz kodlarını nerden alcaz:15:
sIFR uygulamasini Mike Davidson'in sitesinde bulabilirsin.
sFIR'in dokumanlarini sIFR Wiki/Documentation sitesinde bulabilirsin.
Ayrica sFIR ile ilgili bir tartisma/yardim forumuda var.
Bu tekniği pek çok sayfada görmeme rağmen uzun süre bir mana verememiştim. Yeni tasarımlarda bu ve bunun gibi yöntemleri kullanmaya başladım..
Merhaba Mehmet hocam,
CSS ile ilgili, hatta css xml xhtml ile ilgili türkçe (ingilizce bilmiyorum) kaynak konusunda sorun yaşıyorum. Önerebileceğiniz bir kaynak varmı. Lakin sizin sitenizden yararlanıryorum. Ancak daha yeniyim. :)
Bazen anlayamayabiliyorum.
internet explorer 7 sürümünde 2. teknik çalışmıyor, bana en temizi 1. teknik gibi geldi.
Not: bu siteyi yeni keşfettim. uzun zamandır web standartları ve erişilebilirlik üzerine öğrencilerime çok tavsiyede bulunmuş ama hiç bir yerli sitede söylediklerimi haklı çıkaran içerik sunamamıştım. Benimle aynı düşünen birilerinin varlığını görmek çok güzel. Sitenizi sürekli takip edeceğim. Elinize sağlık, iyi günler.
Bu yazı yorumlara kapatılmıştır.
Kitabımı satın almak ister misiniz?