‘adım adım kodlama’ etiketi için sonuçlar
PSD’den HTML’e – fanatikmarslar.com Sitesinin Kodlaması III
Şubat 9th, 2010 • 13 yorum CSS, Javascript, Web Standartları, XHTML
Etiketler: adım adım kodlama, alt sayfa, css-kodlama-düzeni, CSS-Layout, farklı tarayıcılara göre kod yazmak, psdtohtml, site-kodlama, tezahürat dinle, tezahürat ekle
Alt Sayfaların Kodlanması
Genelde siteler yapılırken ana sayfa ve alt sayfa olarak kodlanır. Bunun sebebi ana sayfalar tekildir, alt sayfalar ise birbirine benzeyen yapılardan oluşur. Bu nedenle alt sayfaların bir tanesi kodlanınca diğer sayfaların kodlanması daha az zaman alır. Bir çok freelance işinde ana sayfa farklı alt sayfalar farklı olarak ücretlendirilir. Neyse işin bu kısmına girmeyelim.
Eksiden sadece bir alt sayfa şablonu hazırlayıp diğer sayfa içeriklerini o şablondaki içerik kısmına girerek tüm siteyi oluştururduk. Şimdilerde ise neredeyse her sayfa için bir tasarım çıkıyor ve her birini ayrı ayrı kodluyoruz.
Fanatikmarslar.com sitesini düşünürsek; bana gönderilen alt sayfa tasarımlarından 4 tane farklı tasarıma sahip sayfa vardı. Diğerleri bunların kopyası gibi olduğu için ben burada sizlere bu 4 alt sayfayı nasıl kodladığımı anlatacağım.




Yukarıdaki 4 sayfada gördüğümüzü özetlersek; ilk olarak üst kısım ve alt kısmın ana sayfa ile aynı olduğunu görüyoruz. Orta kısım ise tüm alt sayfalarda aynı. İki kolonlu bir yapı ve sağ kolon sabit. Sol içerik kolonu içeriği değişiyor.
Kategori Listeleme Sayfasının Kodlanması

Orta kısmı iki kolona ayırıyorum. solOrtaAlan ve icerikalaniSag adını verdim. İki kolonu yan yana koymak için float ve genişlik tanımlarını yapıyoruz.
<div id="solOrtaAlan">
...
</div>
<div id="icerikalaniSag">
...
</div>
CSS kodunu yazalım
#solOrtaAlan{float:left; width:650px; margin:0 20px 0 10px; font:14px Arial, Helvetica, sans-serif; display:inline}
#icerikalaniSag {float:left; width:300px}
Sol Orta Alan
#solOrtaAlan tanımına margin tanımlarını yapıyorum. Burada "IE’da İkikat görülen Margin Problemi ve Çözümü" sorunu ile karşılaştığım için display:inline tanımı atadım.
Kodlamaya sol orta alandan devam ediyorum.
Başlık
<h1>Marşlar</h1>
Başlığımızı h1 ile tanımlıyoruz. Hem anlamlı kodlama hemde arama motorlarına uygun kodlama açısından sayfa başlığını h1 ile tanımlıyoruz. Diğer başlıklarıda sırası ile h2, h3, vd. şeklinde tanımlamalıyız. Şimdi burada gerekmediği için tanımları yapmadık.
Sıralama Alanı
Sıralama kısmına yaparken bu alanı sırasız listeler ile yapmayı düşündüm.
<div id="siralamAlani">
<ul>
<li><strong>Sıralama:</strong></li>
<li><a href="">Karışık</a></li>
<li><a href="">Popüler</a></li>
<li><a href="">Oley!</a></li>
<li><a href="" class="secili">Alfabetik</a></li>
<li><a href="">En Çok Tıklanan</a></li>
<li><a href="">En Son Eklenen</a></li>
</ul>
</div>
Dışına bir katman atamamın nedeni ardalan resmi ve diğer öğeler ile olan ilişkileri ayarlamak içindir. Sıralama öğelerinden bir tanesine göre sıralama yapılacak ve başındaki ok ikonu aşağı bakacağı için bu öğeye bir sınıf tanımlıyorum diğerlerinden ayırmak için
div#siralamAlani{ background:url(../images/siralama_ard.gif) 0 0 no-repeat; height:38px;}
div#siralamAlani ul{padding:10px 0 0 10px}
div#siralamAlani ul li{display:inline;}
div#siralamAlani ul li strong{display:block; float:left; color:#828282; font:bold 14px Arial, Helvetica, sans-serif; margin-right:3px}
div#siralamAlani ul li a{display:block; background:url(../images/genel_resim.gif) right -388px no-repeat; float:left; font:bold 14px Arial, Helvetica, sans-serif; color:#0c2b90; padding-right:15px; margin-right:10px}
div#siralamAlani ul li a.secili{background:url(../images/genel_resim.gif) right -354px no-repeat;}
Listeleme Tablosu
Listeleme tablosunun bir kaç kolonu hariç ana sayfadaki tablodan bir farkı yoktur. Benzer bir anlayış ile burayı kodlayalım.
table.genelTablo{border-collapse:collapse; }
table.genelTablo th{font:bold 14px Arial, Helvetica, sans-serif; color:#000; padding:5px 2px; text-align:left}
table.genelTablo th.ortala{text-align:center}
table.genelTablo tr.enAlt td{border:0}
table.genelTablo td{padding:1px 2px; font:14px Arial, Helvetica, sans-serif; color:#828282; border-bottom:1px solid #d5d5d5;}
Listeleme tablosunun ana sayfadan farklı olan kısmı en sağdaki oylama gösterme alanı
<td><p class="oley"><strong class="ucKupa">3 Kupa</strong></p></td>
Sadece oyu göstereceğimiz için bu şekilde kodladık.
#solOrtaAlan table td p.oley{background:url(../images/genel_resim.gif) 0 -483px no-repeat; width:93px; height:21px; margin:0}
table td p.oley strong{display:block; background:url(../images/genel_resim.gif) 0 -459px no-repeat; text-indent:-9999px; height:21px}
table td p.oley strong.birKupa{ width:18px;}
table td p.oley strong.ikiKupa{ width:37px;}
table td p.oley strong.ucKupa{ width:56px;}
table td p.oley strong.dortKupa{ width:75px;}
table td p.oley strong.besKupa{ width:95px;}
#solOrtaAlan table td p.oley tanımını niye p.oley şeklinde yapmıyoruzda bu kadar uzun yapıyoruz derseniz, üstten gelen kalıtsal tanımlar alt elemanları da etkiliyor bu etkiyi kaldırmak için bu şekilde tanımını uzatarak bu tanımı daha etkin yapıyoruz. Konu hakkında detaylı bilgi almak için tıklayınız.
Ana sayfadaki tablo ile yapının aynısı olduğu için bu kadar anlatarak tablo faslını geçiyorum ve sayfalama kısmının kodlamasını anlatmaya başlıyorum.
Sayfalama
Sayfalama kodlamalarını bir kaç tipi var ben burada daha önce kodladığım bir kodu kopyalıyorum. Bu yöntemi seçmemde programcı arkadaşım Mustafa’nın etkiside var.
<div class="sayfalama">
<ul>
<li><span>|<</span></li>
<li><span>Önceki</span></li>
<li><span>1</span></li>
<li><a href="#">2</a></li>
<li ><a href="#">3</a></li>
<li ><a href="#">4</a></li>
<li ><a href="#">5</a></li>
<li ><a href="#">6</a></li>
<li ><a href="#">7</a></li>
<li ><a href="#">8</a></li>
<li ><a href="#">9</a></li>
<li ><a href="#">10</a></li>
<li ><a href="#">Sonraki</a></li>
<li class="sayfalmaSonu"><a href="#">>|</a></li>
</ul>
</div>
Sayısız listeler ile listelediğimiz sayfa sayılarının farklı bölümlerini belirlemek için <li><span>1</span></li> şeklinde tanımlama yapıyoruz. Normal bağlantılarıda <li><a href="">2</a></li> şeklinde tanımlıyoruz. CSS kodunu yazalım.
/* sayfalama */
div.sayfalama ul{margin:0 auto; width:530px; padding:10px 0 0 0; clear:left}
div.sayfalama ul li{font:bold 12px Tahoma, Geneva, sans-serif; color:#fff; float:left; list-style:none; margin:0 2px; background:#80a3b7;}
div.sayfalama ul li span{padding:5px 8px; display:block}
div.sayfalama ul li a{font:bold 12px Tahoma, Geneva, sans-serif ; color:#80a3b7; text-decoration:none; background-color:#f0f0f0; padding:5px 8px; display:block}
div.sayfalama ul li a:hover{background-color:#80a3b7; color:#f0f0f0;}
İçerik Alanı Sağ
İçerik alanının sağ kısmı aslında pek bir şey içermiyor bir banner alanı ve kategori listesi. Her iki alanda ana sayfada mevcut olduğu için aynı kodları buraya taşıyoruz.
<div id="sagBannerAlani"><img src="images/band_website_banner.jpg" width="300" height="250" alt="Web" /></div>
Sağ banner alanı diye ayrı bir isim vermemin nedeni, kodlaması aynı olsa da site yayına girdikten sonra ana sayfa ve alt sayfaya farklı bannerlar atanma ihtimali olduğu için buraya farklı bir isim veriyorum ve tanımlamamı yapıyorum.
Kategori Listeleme Alanı
Kategori listeleme alanı da ana sayfa ile birebir aynıdır. Kodu aynen taşıyorum. Bu tip modülleri kodlarken eğer esnek kodlar isek modül nereye konursa konsun sorun çıkarmaz. Site kodlamaya başlanmadan önce bu tip modülleri belirleyip sabit bir genişlik vermekten kaçınmalıyız. Burada genişlikleri aynı olduğu için sorun çıkarmazdı zaten ama farklı projeler için söylüyorum bunu, aklınızın bir kenarında bulunsun.
Tezahürat Ekle Sayfasının Kodlanması

Sayfamızı incelediğimizde sol içerik alanında bir tezahürat ekleme formunun diğer sayfadan farklı olduğunu görüyoruz.
Eskiden form alanlarını kodlarken tabloları kullanırdım daha rahat gelirdi. Ancak listeler(ul) ve tanımlayıcı listeleri(dl dd dt) kullanmaya başladıktan sonra artık tabloları kullanmıyorum.
Bu sayfadaki form yapıları iki kolonlu bir yapı olduğu için listeler ile sayfa form yapısını oluşturabiliriz. Başlık ve altındaki paragrafı ekliyoruz.
Tezahürat Ekle Formunun Kodlanması
Her satırın altında bir çizgi olduğu için her satırı bir katman içine alıp bu katmanada bir sınıf tanılayarak bu işi çözebiliriz.
.formAlani{border-top:1px solid #e0e0e0; border-bottom:1px solid #e0e0e0; padding:10px; margin:10px 0; clear:left;}
clear:left; tanımı her satırın soldan başlaması için yapıldı.
İlk form alanı için bir label ve birde select alanımız var
<div class="formAlani"><label>Lig Seçiniz:</label><select><option>--------------</option><option>Turkcell Süper Lig</option></select></div>
CSS kodunu yazalım
.formAlani label{margin-right:10px; width:135px; display:block; float:left;}
.formAlani select{width:180px; font:12px Arial, Helvetica, sans-serif;}
Seçilen Ligdeki Takımlar Alanı
Bu alanı kodlarken sayısız listeleri kullandım. Listelere bir genişlik ve float tanımı yaparak yan yana dize bilirim. Genişlikleri verirken 3 tanesini yan yana duracak şekilde ayarladım.
<ul class="secilenLigler">
<li> <input type="radio" name="takimSec" /><div class="logoTrabzon">Trabzon</div> <label>Trabzon Spor Klubü Tesisleri</label></li>
<li> <input type="radio" name="takimSec" /><div class="logoFenerbahce">Fenerbahçe</div> <label>Fenerbahçe</label></li>
<li> <input type="radio" name="takimSec" /><div class="logoAnkara">Ankaraspor</div> <label>Ankaraspor</label></li>
.......
</ul>
CSS kodları
ul.secilenLigler{width:575px; margin:0 auto}
ul.secilenLigler li{float:left; width:170px; margin:0 20px 10px 0; color:#828282;}
ul.secilenLigler li div{float:left}
ul.secilenLigler li label{position:relative; top:8px}
ul.secilenLigler li input{float:left; position:relative; top:8px; margin-right:10px}
Her takım alanı için radyo butonu, logo için bir katman, takım adı için bir label tanımladım ve bunları yan yana dizmek için float:left tanımı kullandım. label ve input için kullandığım postion:relative tanımı ve top değerleri bu öğeleri diğer öğeler ile yatayda aynı hizaya getirmek içindir.
Yukarıda bahsettiğim gibi form alanlarını kodlarken sayısız listeleri(ul) kullanıyorum burada da
<div class="formAlani">
<ul>
<li><label>Kategori Seçiniz:</label><select><option>--------------</option><option>Turkcell Süper Lig</option></select></li>
<li><label>Tezahüratın Adı:</label><input type="text" /></li>
<li><label>Youtube linki:</label><input type="text" /></li>
<li><label>Tezahüratın sözleri:</label></li>
<li><textarea></textarea></li>
<li><label>Kısa tanıtım:</label><input type="text" /></li>
<li><label class="genisEtiket">Kayıtlı bir tezahüratınız varsa buradan yükleyiniz:</label> <input type="file" /></li>
</ul>
</div>
CSS kodu
.formAlani p{margin-bottom:10px}
.formAlani label{margin-right:10px; width:135px; display:block; float:left;}
.formAlani label.genisEtiket{width:310px}
.formAlani textarea{width:625px; height:210px; border:1px solid #e8e8e8; margin-top:8px; font:12px Arial, Helvetica, sans-serif; padding:3px;}
.formAlani ul li{margin-bottom:10px}
.formAlani input{border:1px solid #e8e8e8; font:12px Arial, Helvetica, sans-serif; padding:3px; width:300px}
.formAlani select{width:180px; font:12px Arial, Helvetica, sans-serif;}
.formAlani select.darSelect{width:75px;}
Son olarakta gönder düğmesini koyuyorum.
<input type="button" value="Gönder" class="gonderBut" />
CSS kodu
input.gonderBut{width:170px; height:45px; float:right; font:bold italic 24px Arial, Helvetica, sans-serif; color:#434343; cursor:pointer}
Böylece Tezahürat Ekle sayfamızı bitirmiş oluyoruz.
Tezahürat Dinle Sayfasının Kodlaması

Tezahürat dinle sayfası iki sekmeli bir yapıdan oluşuyor ve dinleme ve izleme seçenekleri iki ayrı sekme içinde yer alıyor.
Başlık ve açıklama kısmını kodluyoruz. Başlık ve ilk paragraf bir önceki sayfa ile aynı. Başlık yanındaki logo ve takım ismi kısmına biraz değinelim.
<div id="dinleTakimi"><div class="logoTrabzon">Trabzon</div> <span>Trabzon</span>
Logo için iki ayrı katman oluşturuyorum. Bunun nedeni logoların geneli için bir sınıf tanımlıyorum. Ayrıca ikinci katmanda her bir takım için tanımlanacak özellikler için. CSS kodunu yazarsak;
div#dinleTakimi{float:left; width:180px; margin-left:20px; position:relative; top:-4px}
div#dinleTakimi div{float:left;}
div#dinleTakimi span{ position:relative; bottom:-10px; font:14px Arial, Helvetica, sans-serif; color:#828282; padding-left:6px}
Burada şöyle bir şey var. Başlığın uzunluğu belli olmadığı için sadece logo ve takım adına float tanımı ve genişlik tanımı yaptık. Böylece başlık uzunluğu ne olursa olsun başlık ve logo kısmı devamlı yan yana duracaktır.
Sekmeleri kodlarken daha önce yazdığım jquery ile sekme yapımını anlattığım makaledeki gibi yapacağız.
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.3.2/jquery.min.js"></script>
<script type="text/javascript">
$(document).ready(function() {
$('div.sekmeAlani ul#tezahuratSekme li a').not("div.sekmeAlani ul#tezahuratSekme li#favEkle a, div.sekmeAlani ul#tezahuratSekme li.pasif a").click(function(){
$(this).parent('li').addClass('normal').siblings().removeClass('normal');
var mevcutSinif = this.className.slice(0,2);
$('div.sekmeAlani > div').hide().filter('div.'+mevcutSinif).show();
});
$('.sekmeAlani ul#tezahuratSekme li a:first').click();
});
</script>
Buradaki tek fark favoriler kısmını sekmeli yapının dışında tutmak için. jquery’nin :not() fonksiyonunu kullandık. Bu fonksiyonun anlamı bu elementlere uygula not fonksiyonu ile belirtilen elemana uygulamadır.
<div class="sekmeAlani">
<ul id="tezahuratSekme" class="kapsayamamaSorunu">
<li class="s1 normal"><a href="javascript:void(0);" class="s1 dinle">Tezahürat Dinle</a></li>
<li class="s2 pasif"><a href="javascript:void(0);" class="s2 izle">Tezahürat İzle</a></li>
<li id="favEkle"><a href="javascript:void(0);" id="favorimedenCikar">Favorilerine Ekle</a></li>
</ul>
<div class="s1">
<div id="sesOynatici"><img src="images/ses_oynatici.gif" width="333" height="50" alt="ses" /></div>
</div>
<div class="s2">
<div id="videoOynatici"><img src="images/video_player.gif" width="320" height="260" alt="video" /></div>
</div>
</div>
CSS kodlarını yazarsak;
ul#tezahuratSekme{border-bottom:1px solid #ccc; padding-left:30px}
ul#tezahuratSekme li{float:left; height:39px;}
ul#tezahuratSekme li a{display:block; padding:15px 45px 0 50px; color:#000; font-size:14px}
ul#tezahuratSekme li.normal{background:url(../images/normal_seme_ard.gif) 0 0 no-repeat; }
ul#tezahuratSekme li.pasif{background:url(../images/sekme_pasif.gif) 0 0 no-repeat; }
ul#tezahuratSekme li.pasif a{ cursor:default;}
ul#tezahuratSekme li.normal a.dinle{ background:url(../images/tez_din_ikon.gif) 15px -220px no-repeat; }
ul#tezahuratSekme li.normal a.izle{ background:url(../images/tez_din_ikon.gif) 15px -270px no-repeat;}
ul#tezahuratSekme li{background:url(../images/kapali_sekme.gif) 0 0 no-repeat;}
ul#tezahuratSekme li a.dinle{ background:url(../images/tez_din_ikon.gif) 15px -220px no-repeat;}
ul#tezahuratSekme li a.izle{ background:url(../images/tez_din_ikon.gif) 15px -268px no-repeat;}
ul#tezahuratSekme li#favEkle{float:left; height:39px; background:none}
ul#tezahuratSekme li#favEkle a{background:url(../images/tez_din_ikon.gif) 18px -318px no-repeat;}
ul#tezahuratSekme li#favEkle a:hover{background:url(../images/tez_din_ikon.gif) 18px -419px no-repeat;}
ul#tezahuratSekme li#favEkle a#favorimedenCikar, ul#tezahuratSekme li#favEkle a#favorimedenCikar:hover{background:url(../images/tez_din_ikon.gif) 18px -368px no-repeat;}
Tezahürat Bilgi Alanı
Tezahürat bilgi alanında; ekleyen, kaç kez dinlendiği veya izlendiği, paylaşım linki ve kaç kişinin oley çektiği bilgileri yan yana yer alıyor.
Bu alanı bir katman içine alıp ardalan rengini bu katman veriyoruz. İçine sol ve sağ kolonlar için iki katman oluşturup içerikleri buraya koyuyoruz. İçerikleride bir paragraf içinde kodluyoruz.
<div id="tezahuratBilgi" class="kapsayamamaSorunu">
<div id="tezahuratBilgiSol">
<p>Ekleyen: <a href="">Hasan</a> <span>27 Ağustos 2009'da Eklendi</span></p>
<p>Link Paylaş: <input type="text" value="htpp:www..ewrwerwerwerewrra" /></p>
</div>
<div id="tezahuratBilgiSag">
<p>123.288 kez dinlendi</p>
<p><span>16.258 kişi Oley! çekti!</span> <ul class='oleyCek'><li class='mevcutOy' style="width:54px">3/5 Yıldız</li><li><a href='#' title='1 puan' class='birYildiz'>1</a></li><li><a href='#' title='2 puan' class='ikiYildiz'>2</a></li><li><a href='#' title='3 puan' class='ucYildiz'>3</a></li><li><a href='#' title='4 puan' class='dortYildiz'>4</a></li><li><a href='#' title='5puan' class='besYildiz'>5</a></li></ul></p>
</div>
</div>
CSS koduda şöyle olacak;
#tezahuratBilgi{margin:1px 0; background-color:#eee; padding:13px 10px 0 10px}
#tezahuratBilgiSol{float:left; width:390px}
#tezahuratBilgiSol a{ color:#0c2b90}
#tezahuratBilgiSol p{margin-bottom:10px}
#tezahuratBilgiSol input{border:1px solid #cbcbcb; font:14px Arial, Helvetica, sans-serif; color:#cccccc; width:200px}
#tezahuratBilgiSag{float:left; width:240px}
#tezahuratBilgiSag p{margin:0 0 15px 0}
#tezahuratBilgiSag p span{float:left;}
Etiketler, Önce Söyle, Sonra Yorumla vb. başlıkların ikonlarını sprite tekniği ile resimlerini hazırlayıp başlıkların başına ardalan resmi ile koyuyoruz.
Etiketler için padding ve ardalan rengi tanımlıyoruz. hover hallerini hazırlıyoruz.
div#etiketler a{padding:2px 4px; background-color:#eee; color:#666; font-size:14px}
div#etiketler a:hover{background-color:#666; color:#eee;}
Önce Söyle
Önce söyle başlığınıda diğer başlıklar gibi hazırlıyoruz. İçeriği blockquote içine koydum. Aslında bunun için de bir katman açıp koyabilirdik, tercih meselesi. Ardalan resmini sağ alta sabitliyoruz.
blockquote.tezahuratMetni{ background:#eee url(../images/tezahurat_zem.gif) right bottom no-repeat; padding:20px 50px 20px 30px; margin-bottom:1px; font-style:italic}
Yorum Alanı
Yorum alanın solda avatar’ın(küçük resim) ve sağda alt alta içeriklerin bulunduğu iki kolonlu bir yapıya sahip .
float ve genişlik tanımlarını yaparak öğeleri yerleştiriyoruz. Burada farklı durumda olan kısım yorum oylama kısmıdır. Yorum oylama kısmını ayrı bir katman içine alıp yorum yazanın yanında durması için position:relative ve float:left tanımı ile ile ayırıyoruz. Artı, eksi ve puan kısmını bir liste şeklinde kodluyoruz.
Son olarakta "Sende Yaz" kısmını kodluyoruz. Başlığı yukarıdaki başlıklar gibi yazıyoruz. Yorum yazma kısmına bir textarea yapıp genişlik, yükseklik ve kenar çizgisi tanımlarını yapıyoruz.
div.yorumalani{border-bottom:1px solid #e0e0e0; margin-bottom:12px}
div.yAvatar{float:left; width:60px}
div.yorumAlaniSag{float:left; width:590px}
div.yorumAlaniSag strong{color:#a1a1a1; display:block; clear:left; margin:10px 0 5px 0}
#solOrtaAlan div.yorumAlaniSag p{margin-bottom:10px}
div.yorumYazari{float:left; font-weight:bold;}
div.yorumYazari a{color:#2a459d}
div.comment-rate{float:left; width:75px; margin-left:20px; position:relative;}
div.comment-rate-num{float: left; padding-right: 5px; color:#088f02; font-weight:bold;}
ul.yorumOyla{float:left; width:75px; margin-left:20px; position:relative; top:-5px;}
ul.yorumOyla li{float:left;}
li.yorumArti a{ background:url(../images/genel_resim.gif) -15px -530px no-repeat; display:block; text-indent:-9999px; width:16px; height:20px}
li.yorumEksi a{ background:url(../images/genel_resim.gif) 0 -530px no-repeat; display:block; text-indent:-9999px; width:16px; height:20px}
li.olumlu{color:#088f02; font-weight:bold;}
li.olumsuz{color:#c00; font-weight:bold;}
li.notr{color:#000; font-weight:bold;}
h3.senYaz{background:url(../images/tez_din_ikon.gif) 0 -168px no-repeat; padding:15px 0 3px 32px}
#solOrtaAlan textarea{border:1px solid #e1e1e1; width:642px; margin-bottom:20px; height:100px}
Tezahürat Dinle/İzle sayfasınıda tamamlamış oluyoruz.
Site Genel Şablonu Sayfasının Kodlanması

Site kodlarken site içerisinde genelde bir şablon sayfası oluşturulur. Bu sayfa site içinde olabilmesi mümkün elemanların bulunduğu bir sayfadır. Tasarımcı bu sayfayı daha sonra eklenmesi durumunda hazırlayarak sitenin gelişmesi durumlarınıda düşünmüş olur. Böyle site yapısından kopmamış oluruz.
Fanatikmarşlar.com’un şablon sayfası biraz daha sade oldu. Normalde paragraflar, tablo yapısı, resimler, listeler, vb. yapıları içerir.
Fanatikmarşlar.com’un şablon sayfasına baktığımızda başlık, paragraf ve uyarı mesajları şeklinde oluşmaktadır.
#anaKapsul h1.hata{color:#e40000}
#anaKapsul h1.onay{color:#1f6600}
Bilgi kutusunu oluştururken yuvarlak kenarlı olduğu için, iki elamana ihtiyaç var. Bunun için kapsayıcı div ve içine paragrafa koyduk.
<div class="bilgiKutusu"> <p><strong>Bu kullanıcı adı zaten alınmış, başka bir tane deneyin. </strong></p> </div>
CSS Kodları
div.bilgiKutusu{ background:#2d2d2d url(../images/bilgi_kutusu.gif) 0 0 no-repeat; margin-bottom:20px; font:bold 14px Arial, Helvetica, sans-serif; color:#fff}
div.bilgiKutusu p{background:url(../images/bilgi_kutusu.gif) -650px bottom no-repeat; padding:10px;}
div.bilgiKutusu p strong{color:#ffc000}
Alt sayfaların kodlamasını böylelikle bitirdik. Site kodlarken değişik tasarımlarda olsa genelde benzer yapılar olduğu için yaklaşık olarak kodlarımız bu şekilde olacaktır.
Sonuç
Site kodlarken kodlarımı Adobe Dreamweaver ile yazıyorum. Kodlamanın bir çok yerinde FireBug kullanıyorum, daha doğrusu firebug’ı kapatmıyorum. Ayrıca test amaçlı ietester programını kullandım. Daima ie6′da test ettim.
Site kodlarken bir çok yöntem kullanılabilir. Ben kodlarımı yazarken devamlı bu alanı kodlarken nasıl daha iyi kodlarım, ileriye yönelik değişikliklerde nasıl sorun yaşamam, arama motorları standartlarına nasıl uyarım düşüncesi ile kodluyorum. Yazdığım kodlara genellikle daha sonra baktığımda beğenmiyorum. Devamlı en iyi hedefleyince eski kodlarımı beğenmiyorum. Bence olması gereken bu çünkü sektör daima kendini yeniliyor ve yeni özellikler çıkıyor biz devamlı bunları takip edip yeni projelerimizde kullanmalıyız.
Çok uzun süredir tasarladığım ama ancak nasip olan bir işi bitirmenin sevinci ile bu makalemide bitiriyorum. Daha güzel makalelerde buluşmak dileğiyle kendinize iyi bakın.
Projede yer alan tüm dosyaları sıkıştırıp attım. Tüm dosyaları indirmek için tıklayınız.
PSD’den HTML’e – fanatikmarslar.com Sitesinin Kodlaması II
Ocak 6th, 2010 • 35 yorum CSS, Web Standartları, XHTML
Etiketler: adım adım kodlama, CSS, css-kodlama-düzeni, CSS-Layout, farklı tarayıcılara göre kod yazmak, ie6, kapsayamama-sorunu, Kutu-Modeli, psdtohtml, site-kodlama
Ana Sayfa Kodlaması
Bir önceki makalemde sizlere kodlamaya başlamadan önceki süreci anlattım. Şimdi sizlerle sitenin Ana Sayfasını nasıl kodladığımı anlatmaya çalışacağım. Bu makaleye yazacağımı düşünerek kodlama yaparken notlar tutmuştum, bu makale biraz da o notların derlemiş hali şeklinde olacaktır.
- I -Kodlama Öncesi Hazırlıklar
- II – Ana Sayfa Kodlaması (bu sayfa)
- III – Alt Sayfaların Kodlaması (yayına hazırlanıyor…)
PSD’den HTML’e – fanatikmarslar.com Sitesinin Kodlaması
Aralık 29th, 2009 • 35 yorum CSS, XHTML
Etiketler: adım adım kodlama, CSS, css-kodlama-düzeni, CSS-Layout, Dreamweaver, fanatikmarslar.com, psdtohtml
Yaptığım bir projeyi baştan sonra anlatmak uzun süredir düşündüğüm ama yapamadığım bir işti. Son denememde direkten döndü bu sefer inşallah tamamına erdireceğiz.
Fanatik Marşlar Nedir?
Fanatik Marşlar, taraftar marşlarının toplantığı tüm fanatiklerin buluşma noktasıdır. Barlarda, sahalarda, tirübünlerde, maç yolunda otobüslerde, trenlerde, salonlarda, stadyumlarda kısacası taraftarların her yerde söylediği tezahüratları bulabileceğiniz, sizin de takımınız için marşınızı paylaşabileceğiniz bir taraftar sitesidir.
Ayrıca Mustafa’nın siteyi tanıttığı televidyon’daki etohum programınıda izleminizi öneririm.
Bu projede Mustafa Özyurt ve Hasan Yalçın ile birilikte çalıştım. İki arkadaşımada teşekkürlerimi sunarak yazıma başlıyorum. Mustafa Özyurt hem projenin sahibi, hemde programlamasını yaptı. Tasarımlarda sevgili dostum Hasan Yalçın’a ait. Bende html, css ve javascript kodunu yazdım.
Yazının biraz uzun olacağı ve derlemesi zaman alacağı için makaleyi üçe böldüm
- I -Kodlama Öncesi Hazırlıklar
- II – Ana Sayfa Kodlaması
- III – Alt Sayfaların Kodlaması
I – Kodlama Öncesi Hazırlıklar
Projelere başlamadan önce tüm projelerde kullandığım klasör yapısını sizlerle paylaşmak isterim. İkonlar Windows Vista’nın kütüphanesinden, farklı ikonlar olabilirdi ama o zaman farklı bilgisayarlara o ikonları taşımak gerekiyor. İkon kullanmanın avantajı seçmek daha kolay oluyor. Her klasör isminden önce rakamlar koymamın nedeni sıralamayı istediğim gibi yapmak. Klasör ismi verirken Türkçe karakter kullanmamaya dikkat ediyoruz. Gerçi dosyalara, klasörlere isim verirken Türkçe kullanmayacağımızı biliyoruz.
00 – Gonderilen: Bu klasöre proje için gönderilen dosyaları koyuyorum. Projenin şablon psd’leri, içerik dokümanları(doc), resimler (jpeg, gif, png vd.), projede geçen yazı tiplerini(ttf) bu klasöre koyuyorum.
10 – Program: Bu kısma eskiden projede yazdığım program kodlarını koyuyordum. Son zamanlarda pek program yazmıyorum genelde css, xhtml ve javascript kısmını yapıyorum projelerin. Bu klasörü şimdilerde kullandığım eklentileri koymak için kullanıyorum. Örneğin akordiyon eklentisi, lightbox eklentisi, galeri eklentisi vb.
20 – Arsiv: Arşiv kısmında proje adımlarını belli aralıklarla arşivleyerek bu klasöre koyuyorum. Ayrıca devamlı güncelleme yaptığım projelerde güncellediğim her sayfa veya dokümanın yedeğini alıp bu klasöre koyuyorum. Bu mesleği iş olarak edinmek isteyen herkes yedek almayı bir görev bilmeli kendine. Yedeksiz çalışmanın bedeli çok ağır sonuçlar doğura bilir.
30 – Musteriye: Müşteriye klasörünü yaptığım projenin, işin, güncellemenin son dosyalarının sıkıştırılmış hallerini koyuyorum. Böylelikle çalıştığım ve müşteriye gönderdiğim dosyaların ayrımını daha kolay yapabiliyorum. Devamlı güncelleme yaptığım sitelerde bu klasörü daha yoğun kullanıyorum.
40 – HTML: Projede çalıştığım dosyaları bu klasöre koyuyorum. html, css, javascript, resimler ve flash dosyaları. Bu klasör içinde de bir düzenim var.
images: resimleri(jpeg, gif ve png) ve flash dosyalarını(.swf) buraya koyuyorum.
scripts: javascript dosyalarını(.js) buraya koyuyorum.
style: css dosyalarımı buraya koyuyorum.
html dosyalarıda HTML klasörü içinde kalıyor.
Bu genel proje standardım. Bazı projelerde bu klasör yapısı değişik olabiliyor. Mesela resim galerisinin olduğu sitelerde images/galeri/ klasörü açıp resimleri onun içine koyuyorum. Xml’leri yoğun olarak kullandığım projelerde bunlara ek olarak /xml/ klasörü oluşturuyorum. Flash yoğunluklu projelerde /swf/ klasörü açıyorum. Yani projeden proje farklılıklar gösterebiliyor, ama standardım bu.
Buraya kadar anlattıklarım hazır klasör yapısıdır, bundan sonra projeyi kodlamaya başlamadan önceki hazırlıklar olacak.
1- İlk olarak tüm psd’leri kontrol ederek hangi bölümlerin tüm sayfalarda aynı olduğu belirleyip ona göre kodlama yapmayı düşünüyorum. Genel bir değerlendirme bakışıda diyebiliriz buna.
2- İkinci olarak genel yapıyı görebileceğimiz bir eskiz çiziyoruz. Çizim her zaman bize neyin nasıl olacağı ve hangi alanlarda hangi teknikleri kullanacağımızı göstermesi bakımından önemlidir.
Her ne kadar sanal dünyada çalışıyor olsak da gerçek çizimler bize yardımcı olacaktır.
3- Eskizini çıkardığımız bu yapıyı sırası ile kodlamaya başlayacağız. İlk olarak boş bir html sayfası açıp index.html adı ile kaydederiz. Sonra boş bir css dosyası açarız. Aslında ilk açtığım bu boş dokümanlar bile bir şeyler içerir.
XHTML sayfamız
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title>FanatikMarşlar.Com</title> </head> <body> </body> </html>
Bu dokümanı Adobe DreamWeaver ile oluşturduğumda dw benim için oluşturuyor.
- DocType olarak xhtml-strict kullanıyoruz. Doküman tipleri hakkında ayrıntılı bil için tıklayınız.
- Karakter kodumuz utf-8. uft-8 seçimi bizim karakter kodu konusunda sorunsuz çalışmamız için önemlidir. Ayrıntılı bilgi için tıklayınız.
- Genel html kodları (html, head ve body)
İlk yaptığım iş başlık kısmını değiştirmek olur.
<title>FanatikMarşlar.Com</title>
Daha sonra boş bir css dokümanı oluştururum. Genelde isim verirken ana, main, iskelet, veya sirket_adi nokta css şeklinde tanımlarım bu seferde site ismini tanımlıyorum fanatikmarslar.css Oluşturduğum bu dokümana sırası ile imza alanımı ve sıfırlama kodlarını ekliyorum.
/************************ ************************ Fanatik Marşlar - http://fanatikmarslar.com/ fatih hayrioglu 24 Eylul 2009 ie6, ff, opera, chrome, safari ************************ ************************/
Bunu benim imzam olarak nitelendirebilirsiniz. Genelde tüm projelerime eklerim. Bazılarında unuttuğumda oluyor. Daha sonra css sıfırlama kodlarını ekleyelim. Ben genelde standart sıfırlama tekniklerini kullanmam kendi ufak bir iki tekniğim vardır onları yazar geçerim. Ama bu sefer bazı sıfırlama kodlarının elenmiş halini kullandım ve koduma ekledim. Bide kapsayamama sorunu kodunu ekledim.
/* Css Sifirlama */
html, body, div, span, applet, object, iframe, h1, h2, h3, h4, h5, h6, p, blockquote, pre, a, abbr, acronym, address, big, cite, code, del, dfn, em, font, img, ins, kbd, q, s, samp, small, strike, strong, sub, sup, tt, var, b, u, i, center, dl, dt, dd, ol, ul, li, fieldset, form, label, legend, table, caption, tbody, tfoot, thead, tr, th, td {margin: 0; padding: 0; border: 0; outline: 0; font-size: 100%; text-decoration:none;}
body { line-height: 1; }
ol, ul { list-style: none; }
blockquote, q { quotes: none; }
/* remember to define focus styles! */
:focus, a:focus, a:active{ outline: 0; }
/* remember to highlight inserts somehow! */
ins{ text-decoration: none; }
del{ text-decoration: line-through; }
/* tables still need 'cellspacing="0"' in the markup */
table{border-collapse: collapse; border-spacing: 0;}
/* float uygulanan elemanları kapsayamama sorunu */
.kapsayamamaSorunu:after {content: "."; display: block; height: 0; clear: both; visibility: hidden;}
.kapsayamamaSorunu {display: inline-block;}
/* IE-mac de bu bolumu sakla \ */
* html .kapsayamamaSorunu {height: 1%;}
.kapsayamamaSorunu {display: block;}
/* IE-mac bu bolumu saklam artik */
/* Css Sifirlama */
CSS sıfırlama tekniğini kısaca açıklarsak; Farklı tarayıcılarda farklı şekillerde yorumlanan html elemanlarının özelliklerini her tarayıcıda aynı görünmesini sağlayacak kodlara sıfırlama denir. Bu sayede her tarayıcıda bu elemanlar aynı sıfır noktasına gelecektir. Örneğin p{margin:0; padding:0}
Daha sonra xhtml sayfamıza css kodumuzu ekleyelim.
<style type="text/css">
<!--
@import url("style/fanatikmarslar.css");
-->
</style>
Bundan sonra genelde ben psd’yi açıp sırası ile eskizde çizdiğim yapıya uygun olarak kodlamama başlarım. Bunun dışında bir yöntem daha vardır ki ben genelde bu yönteme başvurmuyorum. Genel sayfa yapısını içeren kısımlar(üst alan, promo alanı, içerik alanı alt alan vb.) kodlanır ve içleri doldurulur. Dediğim gibi ben psd yi açarak sırası ile kodlamaya başlarım.
Tasarımlara bakınca site genel olarak anasayfadaki üç kolonlu yapı ve alt sayfadaki iki kolonlu yapı olarak ikiye ayrılıyor. Ana Sayfa kodlaması ile başlayalım
Bir sonraki makalede kaldığımız yerden devam edeceğiz.
30 Nisan 2008 web’den seçme haberler
Nisan 30th, 2008 • 2 yorum Haberler
Etiketler: adım adım kodlama, arama motoru, CSS maskeleme, css teknikleri, Dragon Fly, efektif web sayfaları, javascript desteği, jquery, lightbox, mesaj popupları, Opera, safari, WebKit
- jQuery ile veri süzme ve sıralama işlemi yapıla bilen güzel bir uygulama. Bağlantı
- WebKit(Safari) geliştiricileri işi biraz da abarttı mı ne? Şimdide resimlere CSS ile alfa maske uygulamışlar. Bağlantı
- Javascript ajax ile birlikte çok önem kazandı. Bir çok projede javascript kullanıyoruz, peki kullanıcının tarayıcısının javascript açık mı kapalı mı olduğunu nasıl anlarız. Bağlantı
- Arama motorlarına uygun asp.net sayfaları oluşturmak. Bağlantı
- Apple firması son zamanalarda bayağı bir atağa geçti. İnternet tarayıcısı Safari’de kendini bayağı geliştiriyor. Niye Safari kullanayım diyenler. Bağlantı
- Lightbox ile özel diyalog kutuları oluşturmak. Bağlantı
- 51′den fazla jQuery uygulaması ve makalesi. Bağlantı
- Opera Firefox’un Firebug’u gibi bir hata ayıklama aracı geliştirmiş Dragon fly ve 6 Mayıs’da bizlere sunacakmış. Bağlantı
- Genelde günlüklerde kullandığımız tarih alanı için CSS ile yapılmış güzel örnekler. Bu arada bende değiştirmeyi düşünüyordum. Bağlantı
- Adım adım web sitesi kodlama. Bağlantı
- 4 adet güzel CSS tekniği. Bağlantı
- 30 adet güzel css kodu. Bağlantı
- Google Dokümanlara CSS düzenleme seçeneği eklemiş. Bağlantı
- Efektif web sayfaları hazırlamak için 5 önemli bilgi. Bağlantı







