CSS İle Web Sayfası Oluşturma

CSS’in en büyük avantajlarından biri ve en önemlisi başka bir koda(XHTML hariç) ihtiyaç duymaksızın sayfa iskeleti ve stilini oluştumamıza olanak sağlamasıdır. CSS 1996′dan beri kullanıla gelen bir standart olsa da popülaretesini Zen Garden’ın sayfa planlaması için kullanmaya başlamasından sonra arttırmıştır. Eskiden sayfayapısını tablolarla oluştururduk. Bu kullanımın bir çok sorunları vardı. Bunları aşmak için CSS ile sayfa planlama metodları kullanılmaya başlanmıştır. Biz burada bu konudan bahsedeceğiz.

CSS ile sayfa planlaması yaparken bazı problemlerle karşılaşacağız, ancak buradan şu anlaşılmamalı CSS’de sorun var. Aksine sorun CSS’den değilde standartları kendine göre yorumlayan web tarayıcılarından kaynaklanmaktadır. Zamanla bu web tarayıcıları kendine çeki düzen vermeye başladı(Örn: İE7 de CSS sorunlarının bir çoğunu halletti) Amaç körü körüne tablosuz web sayfası tasarlamak değil, sayfalarımızı standartlara ve web tarayıcılarına en uygun şekilde kodlamaktır. Hiç tablo kullanmayayım diye tablo kullanılması gerek yerlerde de tablo kullanmamak abesle iştigaldir.

Aslında şimdiye kadar ki makaleler de bu konunun temellerini attık.CSS ile konumlandırma(positioning) , Float ve Clear özellikler ile konumlandırma vd. makaleler bu işin temellerine değindik. Burada daha elle tutulur örneklerle bu metodu anlatmaya çalışacağız.

CSS sayfa planlama metodları üç temel konu üzerine inşa edilmiştir. Konumlandırma, floating ve margin farklılıkları. Bu üç temel konu anlaşıldıktan sonra CSS ile sayfa planlamayı anlamamız çok kolaydır. Biz burada floating metodu ile sayfa oluşturmayı göreceğiz. Bunun dışında konumlandırma öğeleleri kullanarak sayfa oluşturma ve eksi margin değeri ile sayfa oluşturma metodlarıda vardır. Ancak biz burada bunlara değinmeyeceğiz.

Sabit Genişlikteki Sayfalarda İki Kolonlu Yapı

İlk olarak XHTML kodlarını yazalım.

<div id="sayfa">
<div id="ustAlan">
...
</div>
<div id="icerik">
...
</div>
<div id="anaMenu">
...
</div>
<div id="altAlan">
...
</div>
</div>

Önemli bir nokta varki oda icerik alanının anaMenu‘den önce gelmesi gerekmektedir. Erişebilirlilik(yani tüm araçlarda sayfamızın en iyi şekilde görünmesi) için icerik alanının anaMenu‘den önce gelmesi gerekir. Çünkü pda ve cep telefonu gibi araçlarda katmanların sıralamasına göre ekranda görüneceğinden, ilk olarak içerik alanının görünmesi tercih sebebidir. şžimdi css kodumuzu yazarsak:

#sayfa
{
	width:768px;
}

#ustAlan
{
	width: 768px;
} 

#icerik
{
    float: right;
    width: 568px;
}

#anaMenu
{
    float: left;
    width: 200px;
}

#altAlan
{
    width: 768px;
    clear: both;
}

Bu kodu yazdıktan sonra sayfamız başta gördüğümüz şekildeki duruma gelmiş bulunmaktadır. Burada yazdığımız kodda “icerik” alanının sağa, “anaMenu” alanının sola yerleşmesi için genişlik değeri ve float değerleri tanınmlanmıştır. Ayrıca altAlan‘ın bu iki bölümün altında kalması için clear:both tanımlaması yapılmıştır.

CSS ile sayfalarımızı ve elementlerimizi ortalamak bölümündeki metodu uygulayarak sayfamızı ortalayabilriz.

#sayfa{
    width: 768px;
    margin:0 auto;
}

Örnek kodları görmek için tıklayınız.

Sabit Genişlikteki Sayfalarda en çok rastlanan problemler sabit genişlik uygulanan katmanlara pading, margin ve border değeri atandığında IE5 de sorunlu görünmesidir bu problemi aşmak için iki yöntem vardır. Birinci yöntem CSS ile Kutu modeli, sorunları ve çözümleri bölümünde anlatılmıştır. ikinci yöntem ise kapsayıcı katmanlara(icerik, anaMenu vb.) padding ve margin vermek yerine kapsayıcı katman içindeki elementlere bu atamaları yapmaktır.

Basit yapılı sayfalarda ikinci yöntemi, karmaşık yapılı sayfalarda ise birinci yöntemi denemenizi öneririm.

Likit Sayfalarda İki Kolonlu Yapı

Likit Sayfalarda Sabit Genişlikteki Sayfalar’dan farklı olarak genişlik değerleri piksel(px) olarak değil yüzde(%) olarak verilmesidir. Bu tür sayfalarda sayfa genişliği web tarayıcısının boyutu ile bağlantılıdır. Web tarayıcısının genişliği arttırıldığında sayfa genişliği artacak, web tarayıcısının genişliği azaltıldığında sayfa genişli azalacaktır. Kodu yazarsak:

#sayfa{
    width:83%;
    margin:0 auto;
}

#ustAlan
{
	width: 100%;
} 

#anaMenu
{
    float: left;
    width: 30%;
}

#icerik
{
    float: right;
    width: 70%;
}

#altAlan
{
    width: 100%;
    clear: both;
}

Örnek kodu görmek için tıklayınız.

3 Kolonlu Yapı

Bir çok sitede üç kolonlu yapı kullanılmaktadır. 3 kolonlu yapı ile iki kolonlu yapının kodlamasında fazla bir fark yoktur. Tek yapamız gereken yapıyı iki kolonlu bölümlere ayırmaktır, bunun için sağdaki iki kolonu bir kapsayıcı katman(KapsayiciAlan) içine alarak yapıyı iki kolonlu hale getirdik(anaMenu ve KapsayiciAlan)

#sayfa{
    width:768px;
    margin:0 auto;
}

#ustAlan
{
	width:768px;
} 

#anaMenu
{
    float: left;
    width: 200px;
}

#KapsayiciAlan
{
    float: right;
    width: 568px;
}

#icerik
{
    float: left;
    width: 368px;
}

#BannerAlani{
    float: right;
    width: 200px;
}

#altAlan
{
    width:768px;
    clear: both;
}

Ve ayrıca xhtml koda da aşağıdaki değişiklikleri yaptığımızda üç kolonlu yapıyı elde ederiz.

<div id="sayfa">
<div id="ustAlan">
...
</div>
<div id="KapsayiciAlan">
<div id="icerik">
...
</div>
<div id="BannerAlani">
...
</div>
</div>
<div id="anaMenu">
...
</div>
<div id="altAlan">
...
</div>
</div>

Örneği görmek için tıklayınız.

Aynı şekilde Likit sayfalarda üç kolonlu yapı oluşturabiliriz. Yapmamız gerek tek şey değerleri (%) olarak vermektir.

4,5 vd. kolonlu yapıyı da aynı şekilde yapabiliriz. Bence 3 kolonlu yapıdan sonraki kadamelerde(4,5 vd.) tüm katmanlara float:left verilerek oluşturmak daha mantıklı ve kolay olur.

This website uses IntenseDebate comments, but they are not currently loaded because either your browser doesn't support JavaScript, or they didn't load fast enough.

84 Yorum (Yorum Ekle)

  • cmL diyor ki:

    Merak ettiğim bir konuydu. Çok güzel anlatmışsınız. Teşekkür ediyorum..

  • fatih.hayrioglu diyor ki:

    1- width:83%; yazmamızın nedeni likit tasarımlarda yüksek çöznürlükte satır yükseklik değeri yükseleceğinden yazılarımız okunaksız bir hal alacaktır. Bu durumu engellemk için yapılan çözümlerden birisidir wisth:83%; değeri atamka.(bunu niye yazmadığımı bilmiyorum açıkçası gözümden kaçmış olmalı.)

    2- Aslında bu bir önerdir. Bri çok araç(cep tel, pda ve küçük ekranlı araçlarda) düşünülerek verilen bir öneri. menünün üst kısımda olması durumunda bir seçeneğimizin kalmadığı doğru. Ama menün ile içerik yanyana ise belirttiğimiz öneri uymak daha avantajlıdır.

  • Yunus diyor ki:

    2 sorum olacak.

    1. likit tasarım çalışırken örnek kodlarda

    #sayfa{
    width:83%;
    margin:0 auto;
    text-align:left;
    }

    sayfa elemetinin width değeri neden %83 verdik?

    2. erişebilirlik açısından xhtml tarafında içerik alanının menü alanının üstünde olması gerekiyor demişiz. Bu örnekte menü solda olduğu için herhangi bir problem yaşamamışız ama menü üstte olsaydıda bizde xhtml de menüyü içeriğin altına yazsa idik menü altta içerik üstte gözükecekti buda abest bir görüntü alacaktı?:)

  • amca diyor ki:

    Çok güzel bir çalışma,Tebrik ederim senin gibi gençlerle
    iftihar ediyorum.Çok yararlandım teşekkürler.

  • fatih.hayrioglu diyor ki:

    Genelde kodları yazarken html kodlamayı bilenlere göre yazıyorum. Ama CSS dersleri bölümündeki makaleleri sıra ile okumanız durumunda bu sorunu halledeceğinizi düşünüyorum. Kodları http://www.fatihhayrioglu.com/?p=178 bahsettiğim editörlerden biri ile yazabilrisin(bunların içinde notepad’de var) ama benim tercihim Dreamweaver kullanman her neyse html kodları ile arasına css kodlarını ise http://www.fatihhayrioglu.com/?p=91 bahsettiğim gibi ekleyebilirsin en kolayı ile arasına

    ile arasına yazmaktır.

  • enes diyor ki:

    Merhaba
    Gerçekten bilgiler çok güzel ama ben bir kaç bir şey anlayamadım bu kodların bir sayfa halinde yazılışını da gösterseydiniz ne diye kaydediyoruz html diye mi kusura bakmayın benim öğrenmek istediğim şey daha çok div oluşturma olduğu için bu kodları nasıl yazmalıyız notepad veya notebook a mail adresime atarsanız olmazsa daha cok sevinirim.
    Her şey çok güzel teşekkürler…

  • fatih.hayrioglu diyor ki:

    likit genişlikte sayfalar : Genişilikleri sabit olmayan(değerleri yüzde- % olarak atanmış) web tarayıcısına veya ekran çözünürlüğüne göre genişliği değişe bilen sayfalardır.

  • metin diyor ki:

    merhabala öncelikle böyle faydalı bir çalımadan ötürü size çok teşekkür ederim. Yalnız bu makalede “Likit Sayfa” deyimini anlaymadım biraz açıklama yapabilriseniz sevinirim.

  • yunus diyor ki:

    Erinç senin ne işin var burda :D

  • Erinç Kuzu diyor ki:

    Hocam çok başarılı makalelerin var zengin içeriğe sahip olan tebrik ederim seni.

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>

?