‘CSS’ etiketi için sonuçlar
PSD’den HTML’e – fanatikmarslar.com Sitesinin Kodlaması II
Ocak 6th, 2010 • 30 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…)
Fatih Hayrioğlu’nun not defteri – 2009
Ocak 2nd, 2010 • 5 yorum CSS, Haberler
Etiketler: 2009, CSS, ie6
Geçen seneyi değerlendirirsem. Genel manada pek verimli bir sene olmadı. Çok fazla makale yayımlayamadım. Umarım 2010 daha iyi geçer.
Ocak
- Kuleli 1919 – Şeref Tipi Senenin ilk yazısı bir hatıra kitabı.
- sIFR, Flash Player10 ve Firefox sorunu Sorunlarla daha ilk günlerden boğuşmaya başlamışız.
- Operasyon Ergenekon – Şamil Tayyar Şimdi anlıyorum ki eskiden daha çok kitap okuyormuşum.
- WordPress 2.7′ye geçtikten sonraki sorunlarım – 1 En çok sorun yaşadığım sürümlerden birisi idi 2.7
- Windows Vista / Windows Defender Güncellemesindeki Sorunu ve Çözümü 2009 sorunlarla başlamış, orası kesin.
Şubat
- Şâh-ı Cihan Fatih Sultan Mehmed Han – Ahmet Çoşkun Tarih kitapları ile devam ediyor süreç.
- Float Uygulanmış Elementleri Tam Kapsayamama Sorunu İpuçları Bir çok projede defalarca karşılaştığımız float uygulanmış nesnelerin kapsayamama sorunu için ipuçları.
- CSS İpucu 18: Optimizasyon İçin CSS Medya Dosyalarını Birleştirmek Daha önceleri projemizde farklı bölümler için farklı css dosyaları kullanmayı önerir iken sonradan fazla dosya çağırmanın optimizasyon bakımından dezavantajlı olduğunu öğrendik.
- CSS İpucu 19: Tüm Tarayıcılar İçin CSS İle Saydamlık(Opacity) Ard arda ipuçları. saydamlık için css tanımları.
Mart
- Basit Resimli Menü Yapmak Ardalan kaydırma yöntemi ile menü oluşturmayı daha önce anlatmıştım ancak çoğu insana o anlatım karmaşık geldi. Bende daha basit nasıl anlatırım diyerek bu yazıyı yazmıştım.
- Internet Explorer 8′in Nihai Sürümü Çıktı O zaman yazmışım bu tarayıcının yetersiz olduğunu. İE9 seslerinin çıktı bu günlerde daha iyi anlıyoruz durumu.
- Internet Explorer 8′i 7 gibi yorumlama kodu İE8′in bize kaznadırdığı en güzel özelliklerden birisi bu galiba. Sen 7 gibi yorumla.
- RSS Adresimi Google’a Taşıdım Google’un feedburner’ı almasından sonraki bir değişiklik. Ben google’dan bu aracı daha da geliştirmesini beklerdim ama çok atıl kaldı bence.
- Futbol ve Küreselleşme – Pascal Boniface Seyretmek için çok zmana harcasamda hakkında pek kitap okumadığımı bir kez daha gördüm. Futbol hakkında okuduğum ilk ve tek kitap. Şimdilik
Nisan
- Tablo Satırına Verilen Ardalan Resminin Tekrarlama Sorunu Genel itibari ile sorun ve çözüm önerileri hakkında makalelerle geçmiş.
- CSS İpucu 20: Firefox’da Kaydırma Çubuğu Çıkarma Bazıları için bir sorun olarak görünsede bence bir sorun olmayan bir özellik.
- Sessiz sedasız 3. seneyi aştık Seneler çok çabuk geçiyor.
Mayıs
- Jquery İle IFrame Yüksekliğini İçeriğine Göre Otomatik Ayarlamak Çok kullanışlı ve güzel bir eklenti, bence tek sorunu yavaş çalışması.
- jQuery ile Basit Sekme Yapımı jQuery ile ilgili ilk makalem. jQuery 2009′da benim için tavan yaptı.
- CSS ile sayfalama görselliğini ayarlama Bir metot ve görselliği arttırma yöntemini anlattığım bir makale
Haziran
- CSS İpucu 21: CSS ile Seçilen Metinlerin Rengini Değiştirmek Tamamen görselliğe yönelik bir özellik ve hala ie desteklemiyor.
- CSS Kod Yazma Düzeni 2009′da yazdığım makaleler arasında en çok beğendiğim yazılarımdan bir tanesi. Genelde kodlardan bahsederim, ama bu sefer işin farklı ama önemli bir kısmını anlattığım bir makale.
- IE 8 için CSS Düzeltmesi(Hack) Bu düzeltmeyi pek kullanmadım. Bunun yerine ie gibi yorumla kodunu kullandım.
- Sayfa Dibine Yapışık Alt Alanlar(Sticky Footer) Bir çok kere kullandım ve sonunda yazdım.
- CSS ile Ziyaret Edilen Sayfa Bağlantılarına Şekil Vermek Pek kullanmasak dahi önemli bir özellik.
- Windows Vista .net Framework güncelleme sorunu ve çözümü Vista sorunları sene boyu bizi zorladı, ama yinede idare etti.
- Firefox’un Negatif Değerli z-index Desteği Firefox’un en büyük artılarından birisi sorunları olsada çabuk hallediyor ve bizleri uğraştırmıyor.
- Dış hat çizgisi(outline) özellikleri outline bir kişinin gözünden kaçan bir özellik. Bizimde gözümüze fazla batmamış ki yazmamız bu kadar gece kalmış.
- Dış Hat Çizgilerini(outline) Kaldırmak Her nekadar makale ismi kaldırmak diye geçsede içinde kaldırıp kaldırmamayı tartıştık ve alternarif yöntemleri sunduk.
- Firefox 3.5 çıktı Şimdilerde hız artışını daha iyi anladığım Firefox 3.5 sürümünün çıkışı önemli idi. Şu aralar dünyada lider.
Temmuz
- FireBug 1.4 sürümü çıktı Sadece görsellik olduğunu ve bayağı bir sorun çıkardığını şimdilerde görüyorum. Beni bu sürümü ile çok üzdü. Ama yinede kalbimizdesin FireBug
- CSS İpucu 22: iPhone için CSS Yazmak iPhone için web siteleri yaptık ama sonrasında biraz durağanlaştık.
- Safari ve Chrome’da metin girdi(textbox) alanlarını kenar çizgileri kaldıralım outline üzerine bir çok yazı yazmışız. Farklı tasarım uygulandığında kötü sonuçlar doğuruyor.
Ağustos
- iframe virüsü ve Saldırgan Site damgalamasından kurtulmanın yolu Virüslerin artık şekil değiştirdiği artık sistemler yerine sitelere yöneldiği şu günlerde bizim gibi arayüz geliştiricilerin daha dikkatli olması gerektiğini öğrendik.
Eylül
- VMware Kurarken “Setup failed to write data to the registry” hatası aldım Farklı yerlede ama yine sorunlar konumuz.
Ekim
- İE 6 iki CSS seçicisi Sorunu ve Çözümü ie6 ve sorun. ie6′dan bana çok ekmek çıkmış. Ama olmasa daha çok sevinirim.
- İnternet Explorer 6 ve 7 için Tablo tr elementine kenar çizgisi atamak sorunlar, sorunlar, sorunlar = ie
- Jquery ipuçları jquery çalışma hayatımı çok fazla etkilesede makalelerime fazla konu olamadığı kesin. 2010′da daha fazla değinmeye çalışacağım.
- @font-face kullanımı Çok güzel bir özellik hala bazı sorunlarıda olsa yakında daha cesurca kullanabileceğiz. Bu makale için çok zaman harcadığımı hatırlıyorum.
Kasım
- Arayüz Geliştiricilerin Görev Tanımı Bu makaleyi ilk başta yazmam gerekirdi ama sistemin oturması ve anlaşılması için zaman gerekti. Hala tam anlamıyla gerçekleşmese dahi büyük mesafe katettiğimizi düşünüyorum.
- Eksi Margin Kullanımı Çok eski süredir bekleyen bir makale konusu idi. Önemli bir konu anlaşılması ve derinlemesine bilinmesi gereken.
- CSS Yorumlarında Türkçe Karakter Kullandığımızda İE6′da Sorun Çıkarıyor Sosyal medyanın etkilerini yavaş yavaş hissettiğim bu senede friendfeed’de boy göstermeye ve geri dönüşlerden makale çıkarmaya başladım. İkinci makalem.
Aralık
- IE6′da Liste Ardalan Görmeme Sorunu Bilmiyorum bir şey yazmaya gerek var mı? ie6 = sorun
- PSD’den HTML’e – fanatikmarslar.com Sitesinin Kodlaması 2 senelik bir isteğin sonucunda sene sonunda anca çıkarabildim. Devamı 2010′da gelecek.
PSD’den HTML’e – fanatikmarslar.com Sitesinin Kodlaması
Aralık 29th, 2009 • 31 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.
Arayüz Geliştiricilerin Görev Tanımı
Kasım 2nd, 2009 • 21 yorum CSS, Web Standartları, XHTML
Etiketler: arama motoru, arayüz-geliştiriciler, CSS, Erişebilirlik, Javascript
Şu anki bulunduğum durum ve FirendFeed’deki Arayüz Geliştiricileri grubunun etkisi ile bu yazıyı yazmayı düşündüm. Bir çok şirket eleman ararken bazı şartları ileri sürüyor, peki bunlar ne kadar gerçekçi. Bir listede ben çıkardım, sizlerde katkıda bulunursanız Arayüz Geliştiricilerini Görev Tanımı’nı çıkarmış oluruz.
Aslında bundan önce bir web ajansının yapısını ve iş akışını çıkarmak gerekir ve buna göre görev tanımları yapılmalıdır, ama o biraz daha kapsamlı bir iş.
Bizim memlekette genelde bir iş yapılır daha sonra standartları yerleşir. Aynı durum web mecrasında da var. Bir çok kişi bu mecrada çalışmasına ve bir sektör oluşmasına rağmen iş akışı ve görev tanımları tam olarak oturmamıştır. Ben yaklaşık 10 senelik bir çalışma hayatımdaki yaşadıklarım ve okuduklarım ile Arayüz Geliştiricileri için şöyle bir liste çıkardım;
- HTML bilmek: Çok iyi derecede HTML bilmelidir ve uygulamada gereksiz kod yığınlarında kaçınmalıdır.
- CSS Bilmek: Çok iyi derecede CSS bilmelidir. Katman tabanlı kodlamayı bilmelidir. Tablosuz sayfa yapısını tasarlamalıdır.
- Javascript: Çok iyi derecede javascript bilmelidir. Ajax ve javascript kütüphanelerinden birine(jquery, mootools, vd.) hakim olmalı ve uygulama geliştirebilmelidir.
- Gelişmiş Kod Yazma: Arama motorlarına, erişebilirlik ilkelerine, farklı platform ve tarayıcılara uygun kod yazmalıdır. En az kod ile en yüksek performansı almalıdır.
- İçerik Yönetim Sistemleri: Şirket içi CMS vb. içerik yönetim sistemlerini bilmeli ve kullanmalıdır.
- Mailing: Mailing standartların bilemeli ve buna uygun mailing kodları hazırlamalıdır.
- Görsel Araçlar: Adobe Photoshop, Firework veya benzeri bir programı kendi işini yapacak kadar bilmelidir.
- Takım Çalışması: Takım çalışmalarına uyumlu olmalıdır. Proje Yöneticisi, tasarımcı, flashçı ve programcılar ile etkileşimli çalışmalıdır.
- Yenilikçi: Web mecrasındaki gelişmeleri takip etmeli ve uygulamalarında bu yenilikleri gerektiğinde kullanmalıdır.
- Yabancı Dil: En az yenilikleri takip edecek kadar İngilizce bilmelidir.
- Sunucu Taraflı Diller: Asp.Net, PHP vb. sunucu taraflı dillerin genel mantığını bilmelidir.
Bu liste tasarımcı, programcı, flashçı ve Arayüz geliştirici ayrımını yapabilmiş şirketler için geçerlidir. Memlekette hala bu ayrımı yapmamış şirketlerin olması üzücü. Ayrıca yukarıda tanımladığımız Arayüz Geliştiricilerinin Görev Tanımı zamanla gelişebilir. Örneğin Arama motoruna uygunluk ve erişebilirlik ve javascript için gelecekte ayrı birimler kurulabilir. Daha da ileri gidip jquery geliştirici bile aranabilir. Malum sektör hızlı gelişiyor.
CSS İpucu 22: iPhone için CSS Yazmak
Temmuz 22nd, 2009 • 7 yorum CSS
Etiketler: CSS, iPhone
Gelişen ve yaygınlaşan mobil cihazlar bizlere bir mecra daha açacağa benziyor. Gelecekte etkisini daha çok hissettirecek cep telefonu vb. ürünlerden internete girme isteği. Şimdilerde kendini gösteriyor. Benim size burada bahsedeceğim ipucu küçük ama kullanışlı bir ipucu olacaktır.
Bir kaç sitede gördükten sonra ve bende bir iphone projesine başlayacak olmamdan dolayı buraya eklemeyi uygun gördüm. Daha önce çıktı almak için(print) benzer bir yapıyı kullanmıştık.
Kodumuz çok basit
<!--[if !IE]>–> <link media="only screen and (max-device-width: 480px)" href="iPhone.css" type="text/css" rel="stylesheet" /> <!–<![endif]–>
veyahut
@media only screen and (max-device-width: 480px) {
body {color:#000;}
}
şeklinde bir tanımlamada yapabiliyoruz. İlk koddaki ie şartlı koşulu bazı eski ie sürümlerinde bu kodu algılama durumu içindir.
Yukarıdaki tanımlar sadece iPhone’da görünecektir. İşin püf noktasını max-device-width: 480px kısmı oluşturuyor.
Kaynaklar
Sayfa Dibine Yapışık Alt Alanlar(Sticky Footer)
Haziran 12th, 2009 • 11 yorum CSS, Web Standartları, XHTML
Etiketler: alta-yapışık-alanlar, CSS, kapsayamama-sorunu, sticky-footer
Bir çok sitede karşılaştığımız sayfanın dibine yapışık alt kısımları bu makalede anlatmaya çalışacağım. Bunu hiç javascript kullanmadan sadece css yardımı ile yapacağız.
Site içeriğinin az olduğu durumlarda sayfanın alt kısımları normal akış içerisinde ise yukarı doğru kayacaktır ve hoş olmayan görüntülere neden olacaktır. Bu gibi durumları engellemek için sayfamızın alt kısımlarını sayfa dibine yapıştırmalıyız, böylece sayfa içeriğinin az olması ve çok olması durumunda alt kısmın yerini aynı olacaktır.
Bu işi yapmak için bir kaç türlü yöntem geliştirilmiştir, mantık olarak aynı olan bu yöntemlerde farklı tarayıcılardaki sorunlara çözüm bulmak için farklılıklar içerir. Ben bunlarda bazıları çeşitli projelerimde uyguladım, ancak makaleyi yazarken en iyisi hangisi ise onu yazmaya karar verdim. cssstickyfooter.com‘um anlattığı yöntem benim gördüğüm en iyi yöntem.
Kodumuzu yazmaya başlarsak.
XHTML kodu:
<div id="kapsul">
<div id="ustAlan">
<h1>Lorem ipsum dolor sit amet</h1>
</div>
<div id="icerikAlani">
<div id="icerik">
</div>
<div id="icerikSagAlani">
</div>
</div>
</div>
<div id="altAlan">
</div>
XHTML kodunda dikkate değer olan kısım içerik alanı ve alt alanı iki farklı bölüm olarak kodlamamız. altAlan ve diğer alanları kapsayan bir kapsayıcı katmandan(#kapsul) oluşuyor kodumuz. Bizim yaptığımız örnekte üst alanı ve iki kolonlu içerik kısmını kapsayıcı katman içine alıyoruz.
CSS Kodu
html, body, #kapsul {height: 100%;}
body > #kapsul {height: auto; min-height: 100%;}
#icerik {padding-bottom: 133px;} /* altAlan yukseligi ile ayni olmali */
#altAlan {
position: relative;
margin-top: -133px; /* altAlan yuksekliginin eksi degeri */
height: 133px;
clear:both;
}
Buradaki 133px tanımına dikkat etmemiz gerekiyor. 133px altAlan yüksekliğidir ve 3 yerde birden aynı değeri kullandığımıza dikkat edeniz.
Kodu incelersek birinci ve ikinci satırda yüksekliklerin tüm alanı kapsaması için farklı tarayıcılar için %100 tanımını yapıyoruz.
3. satırda alta yapışık alan kadar padding değeri vererek içerik kısmının alt kısmın altında kalmasını engelliyoruz.
4-8 satır arasında alt alan tanımlarımızı yapıyoruz. Göreceli konumlandırdığımız alanı içerik alanında padding-bottom değeri ile açtığımız boşluğa yerleştirmek için negatif üst kenar boşluğu değeri veriyoruz.
Bu yöntemde float uygulanmış içerik kısmında tam alanı kapsayamama sorunu ile karşılaşıyoruz. Float uygulanmış alanların kapsayamama sorunu çözmek için http://www.fatihhayrioglu.com/float-uygulanmis-elementleri-tam-kapsayamama-sorunu/ makalemiz anlattığımız yöntemi kullanıyoruz.
.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 */
Bu sınıfı tanımlıyoruz ve içeriği kapsayan(#icerikAlani) katmana atıyoruz.
<div id="kapsul">
<div id="ustAlan" class="kapsayamamaSorunu">
<h1>Lorem ipsum dolor sit amet</h1>
</div>
<div id="icerikAlani" class="kapsayamamaSorunu">
<div id="icerik">
</div>
<div id="icerikSagAlani">
</div>
</div>
</div>
<div id="altAlan">
</div>
Bu yöntemin ryanfait.com’un yöntemine göre en büyük avantajı bence ryanfait.com’un yöntemindeki anlamsız tampon katmanı gibi bir fazla kodlamadan kaçınış oluyoruz.
Örneği görüntülemek için tıklayınız.
Sorunlar ve Çözümleri
- Benim kullandığım projede body ve üstAlan’daki margin-top değeri sorun çıkardı. Bunun yerine padding kullanarak sorunu çözdüm. Üst kısım body’deki margin-top ve margin-bottom tanımları sorun çıkarıyor, bunun yerine padding kullanın.
- Ayrıca yazı tipi boyutunu büyük kullanmak isteyen kullanıcılarda sorun çıkabileceği söyleniyor. Eğer yazı tipi boyutunu piksel(px) vb. kesin değerler ile belirlerseniz bu tip sorunları engelleyebilirsiniz.
- Son olarakta asp.net ile oluşturulan sayfalarda <form> elemanı ile kapsanan sayfanızda sorun çıkabilir. Bunu engellemek için kodunuzu
html, body, form, #kapsul {height: 100%;}
Kaynaklar
- http://www.cssstickyfooter.com/
- http://www.lwis.net/journal/2008/02/08/pure-css-sticky-footer/
- http://ryanfait.com/resources/footer-stick-to-bottom-of-page/
- http://cokbasit.blogspot.com/2009/01/yapkan-taban-sticky-footer.html
- http://css-tricks.com/sticky-footer/
- http://www.waycoolwebdesign.com/Blog/2008/11/15/CSS-Sticky-Footer
- http://stever.ca/web-design/css-sticky-footer/
- http://brassblogs.com/blog/sticky-footer
- http://www.davidjrush.com/blog/2009/01/css-sticky-footer/







