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.
Peki siz üstmenünüzü(anasayfa banayazın vs.) her sayfanızın başına ekleyerek mi yaptınız
css ile bunu ilgisi yok açıkçası
eğer bu işi iframe ile yapacaksan yapman gerekn
içerik alanı içine bir iframe eklemek ve isim vermek
sonrada menüdeki linklerin target özelliğine bu iframe ismini yazarsan olur .
asdasdagibi
Merhabalar Fatih bey. Css derslerinizi inceledim. Öncelikle belirtmeliyim çok güzel anlatmışsınız. Ellerinize sağlık.
Benim bir sorum olacaktı.
Sayfa ust sol sag orta ve alt olarak bölümlere böldük. Sol kısımda anasayfa resimler iletisim diye menü seceneklerini yerleştirdik. Buraya kadar tamam. Ama Sol taraftaki menüden iletişim linkine tıklandığında aynı pencerede orta bölümde açılmasını yapamadım. Yeni pencerede açıyor.Yani iframe olayını css de nasıl yapabilirim.
Örnek:
body{
text-align:center;
}
#sayfa{
width:768px;
margin:0 auto;
text-align:left;
}
#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;
}
Sizin kodlarınız. #anamenü kısmındaki linke tıklanıldığı zaman $içerik bölümünde açılmasını nasıl sağlarım. Acilen yardıma ihtiyacım ve ilgilenirseniz sevinirim.
Kolay gelsin…
merhaba.. kodları bu şekilde yerleştirdim..
sonuc alamadım.. :( hatam ne acaba?
(HTML)
(HEAD) (TITLE>….
(/HEAD>
(BODY>
…
…
…
…
(/BODY>
(/HTML> (NOT:BUYUK ETIKETLERI BEN EKLEDIM..)
BUDA CSS BELGESI:
#sayfa
{
width:768px;
}
#ustAlan
{
width: 768px;
}
#icerik
{
float: right;
width: 568px;
}
#anaMenu
{
float: left;
width: 200px;
}
#altAlan
{
width: 768px;
clear: both;
}
.. evet bahsettiğiniz gibi style.css uzantısı ve sayfa bağlantısıda yazdım ancak oyle bi şablon elde
edemedim.. :( biliyorum hatam mutlak.. bu yüzden yazdım, açıklama yaparsanız sevinirim..
(örnek uygulama sayfaları eklerseniz bizler daha iyi anlarız kaynağı görüntüler kodların tam yerleşmesinide görebiliriz..) teşekkürler..
merhaba.. kodları bu şekilde yerleştirdim..
sonuc alamadım.. :( hatam ne acaba?
….
…
…
…
…
(NOT:BUYUK ETIKETLERI BEN EKLEDIM..)
BUDA CSS BELGESI:
#sayfa
{
width:768px;
}
#ustAlan
{
width: 768px;
}
#icerik
{
float: right;
width: 568px;
}
#anaMenu
{
float: left;
width: 200px;
}
#altAlan
{
width: 768px;
clear: both;
}
.. evet bahsettiğiniz gibi style.css uzantısı ve sayfa bağlantısıda yazdım ancak oyle bi şablon elde
edemedim.. :( biliyorum hatam mutlak.. bu yüzden yazdım, açıklama yaparsanız sevinirim..
(örnek uygulama sayfaları eklerseniz bizler daha iyi anlarız kaynağı görüntüler kodların tam yerleşmesinide görebiliriz..) teşekkürler..
merhaba.. öncelikle çalışmaların, paylaşımların-
için teşekkürler.. bu alanda en iyi türkçe kaynak-
web sitesi olduğuda bir gerçek..
ben bir amatör web tasarımcısı olarak senden tav-
siye edebileceğin türkçe kitap kaynak vs. bilgilen-
dirmeni rica ediyorum.. ayrıca sitendeki örnek kod-
ları uygulama sayfalarıyla desteklersen bizlerde -
sonucu daha iyi kavramış olabiliriz..
tekrar teşekkür eder, başarılar dilerim..
Merhabalar,
http://www.fatihhayrioglu.com/?p=179 adresinde bulununan makalenin ikinci bölümüne ulaşılamıyor…
yine aynı şekilde CSS’de Çıktı alma (Print) başlıklı http://www.fatihhayrioglu.com/?p=97 bölümüne de ulaşılamıyor.. Bilgine…
Ayrıca bu harika makaleler için sonsuz teşekkürler…
teşekürler hallettim ayrıcada hemen sorumu cevaplandırdıgınız icin. cok sagolun
css kodlarını .css uzantılı doküman açıp ona kaydetmemiz, XHTML kodlarınıda .html dokumanı içine yazmamız gerekiyor. Tabi html dokümanın içine oluşturduğumuz .css dosyasını eklemek gerekiyor.
merhaba emeginize saglık sizin gibi arkadaşlara toplumun iytiyacı var aslında devletin sizin gibi arkadaşlara destek vermesi gerikir diye düşünüyorum neden derseniz.bir iş veren birkac insan calıştırdıgı zaman vergiden bir cok şeyden kısmende olsa muaf tutuluyor.sizin gibi toplumumuzun gelişmesine katkıda bulunan arkadaşlara neden destek vermesinki.
inanıyorumki bu (tür forum vs) webden cok emek ve bilgi gerektiren işler duzenli geliri olmayan arkadaşlara devletin sahip çıkması lazım desteklemesi lazım.
bakınız ben 40 yaşımda bir şeyler ogrenipte hayatta
kalmanın mucadalasini vermeye calışıyorum.
şimdi kişisel soruma geleyim.yukarıda anlatılan
xhtml ve css kodlarını css sitil sayfasınamı yazıyoruz burada takıldım. anlatır iseniz veya anlatmaz isenizde .sizlere cok teşek ederim.