CSS ile Web Sayfası Oluşturma III

Aksak Kolonlar(Faux Column)

CSS ile sayfa kodlaması yaparken karşımıza çıkan sorunlardan biridir Aksak Kolonlar(faux column). Genelde isimlendirme olarak Faux Kolon diye geçsede ben burada Aksak kolon olarak kullanacağım.

Basit bir örnek verecek olursak; içerik ve sağ kolon diye iki kolondan oluşan bir yapımız olsun. Bu kolonların zemin renklerinin farklı olduğunu düşünelim. Aşağıdaki şekildeki gibi

İçerik ile sağ kolonun farklı yükseklite olması bir sorundur ve sorunu çözmek için bir kaç yöntem mevcuttur. Biz burada en kolayı ve en kullanışlı olanı anlatmaya çalışacağız.

Bu metodda yapılan iki kolon bir kapsayıcı katman içine alınarak iki kolonun zemin resmi bu kapsayıcı katmana tanımlanmaktır.

#kapsayiciKolon
{
	background: #fff url(zemin_ard.gif) repeat-y left top;
}

Aynı şekilde üç kolonlu yapılar içinde çözüm üretilebilir. Sabit genişlikte sayfalarda Aksak Kolonları düzeltmek bu kadar kolaydır. Esnek yapılı sayfalarda Aksak Kolonları düzeltmek biraz daha zordur. Web tarayıcısının boyutları değiştiğinde kolon şekli ve kolon boyutu değişecektir. Likit tasarıma sahip bir sayfada Aksak Kolon sorunun çözümü zemin resmi konumlandırma değerlerini yüzde olarak vermektir.

Eğer zemin pozisyonunu belirlemek için piksel değeri kullanıyorsanız, elementin sol üst köşesine göre zemin resminizi piksel değeri vererek konumlandırırsınız. Yüzdesel konumlandırma ile zemin resmi konulandırıldığında, atanan değerler hem üst elemente göre, hem de elementin kendine göre konumunu belirler. Örneğin:

background: #fff url(resim.gif) no-repeat 25% 10%;

Yukarıdaki tanımlama sonucunda zemin resmi hem üst elementin %10 üst ve %25 solundan mesafe alacaktır, hemde kendi içinde %10 üst ve %25 soldan mesafe alacaktır. Aşağıdaki şekilde gösterilmiştir:

Likit içerikli üç kolonlu sayfalarda Aksak kolon sorununun çözümüne bakalım.

Bir örnek yapacak olursak;

Daha önce likit bir sayfanın nasıl yapılacağını bahsetmiştik. İsterseniz yine de bir göz atın Yukarıdaki ekranda da görüldüğü gibi orta kısıma birden fazla zemin rengi uygulamamız gerekiyor. Bunun için likit sayfa oluştururken yaptığımız Kapsayıcı katmana bir zemin resmi sağ taraftaki iki kolonumuzu kapsayana ikinci katmana da ikinci zemin resmimizi tanımlayarak güzel bir sayfa oluşturacağız.

2000 piksel genişliğinde ve 10 piksel yüksekliğinde bir zemin resmi hazırlayalım(Sol Alan Zemin resmi). Sonra 1.Aksak Kolonumuzu oluşturalım(#SolKolon) . Menü alanı bu kapsayıcı elementin 23% genişliğine sahip olacaktır. Ayrıca yine 23% genişliğe sahip bir alan daha oluşturmalıyız(Sağ İçerik Alanı). 2000px genişliğindeki zemin resmini kapsayan alandan Aksak Kolona atanan zemin renginin genişlik değeri 460 piksel olacaktır. Aksak alanın zemin renginin dışındaki alalanları(1540px) transparan yapmak için zemin resmimizi .gif formatında yapmalıyız.

#KapsayiciAlan {
    width: 85%;
    margin: 0 auto;
    text-align: left;
    background: #fff url(images/sol_zemin_resmi.gif) repeat-y 23% 0;
}

Benzer şekilde ikinci bir içerik oluşturarak sağda kalan iki kolona aynı metod uygulanabilir. Yine 2000 piksel genişliğinde 10 piksel yüksekliğinde bir zemin resmi hazırlayıp bu sefer resmin sağ tarafına sağ kolon zemin rengi doldurulur ve kalan bölge transparan olacak şekilde kaydedilir. ikinciAlan’ın KapsayiciAlan’a göre konumu karşılatırmak için Bu Aksak kolonun soldan mesafesi resmin soldan mesafesi %77(100-23)’den başlamalıdır. Çünkü KapsayiciAlan’ın zemin resmi zaten uygulanmıştır bu nedenle biz ilk Kapsayici alan içine bir tane daha ikinciKapsayiciAlan eklemeliyiz. Bu yeni ikinciKapsayiciAlan‘nınada zemin resmi atamalıyız.

#ikinciKapsayiciAlan
{
	background: url(images/sag_zemin_resmi.gif) repeat-y 77% 0;
}

Bu şekilde çok güzel bir 3 kolonlu likit bir sayfa elde ederiz.

Örnek çalışma için tıklayınız.

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.

29 Yorum (Yorum Ekle)

  • Alper diyor ki:

    Öncelikle böyle faydalı bir site hazırladığınız için sizi tüm içtenlikle kutluyorum.Türkçe kaynak bulmak gerçekten zor.Şimdi 3 tane kolon var diyelim ilk resimdekinin 3 lüsünü düşünün.Yanı son resimdeki gibi.Sol ve sağ menü olsun ve kısa olsun.Ortadaki yer de uzun bir yazı var.Şimdi menü varken yazı o genişlikte inecek.Fakat menüler bitince aynı yer aşağıya aynı genişlikte iniyor.Yanlar boş.Peki yan menüler bitince ortadaki alanı genişletebilir miyiz.Ya da bir menünün yeri hep boş kalacak.Diğer menü bitince yazı oraya açılacak.Umarım anlatabilmişimdir.

  • fatih.hayrioglu diyor ki:

    soldan sağ dan ve üstten borderları zemin resmine ekleyip alttan border ı alt kısmın üst kenarlığı olarak vererek çözülür diye düşünüyorum.

  • Volkan diyor ki:

    Merhaba,

    Siteni ilgi ile okuyorum, sayende tablosuz yapı hakkında birçok şeye hakim durumdayız.

    Bu konu ile ilgili sormak istediğim konu şu: Aksak kolonları arkaplan resmi vererek çözebiliyoruz ancak diyelim ki bu kolonlara border uygulamak istiyoruz. Bu durumda sorun yeniden karşımıza çıkacak.

    Bunu nasıl aşarız?

  • erman diyor ki:

    şimdi düzelmiş linkte. teşekkürler tekrardan

  • fatih.hayrioglu diyor ki:

    ben tıklıyorum sayfa açılıyor ilginç

    neyse pdf linkini aşağıya ekliyorum. Sorun için kusura bakmayın.

    http://www.fatihhayrioglu.com/pdf/CSS_ile_Web_Sayfasi_OlusturmaII.PDF

  • erman diyor ki:

    Daha önce likit bir sayfanın nasıl yapılacağını bahsetmiştik. İsterseniz yine de bir göz atın

    diyor;

    http://www.fatihhayrioglu.com/?p=179

    a link veriyor. ordada;

    Üzgünüm, sizin kriterlerinize uygun yazı yok.

    diyor :)

    cevap için teşekkürler.

  • fatih.hayrioglu diyor ki:

    link çalışıyor. bazen bana da oluyor linkler de kopma oluyor, ama şu an çalışıyor.

    İkinci sporuna evet diyorum. :D

  • erman diyor ki:

    hocam selam,

    öncelikle yukarıda yazıda geçen likit sayfa linki ölmüş.

    ikinci olarak farklı çözünürlüklerde sayfanın aynı görüntüyü vermesini nasıl sağlayacağız. bunun için araştırmamız gerekn konu nedir? likit sayfa kavramımıdır?

    bi aydınlatırsan sevinirim fatih (:

  • fatih.hayrioglu diyor ki:

    Aksak kolon olarak adlandırdığım sorun genelde iki veya üç kolondan meydana gelen sitelerde her iki kolonunda zemininde bir renk veya resim varsa ve bunların aynı yerde bitmesini istiyorsak görsel güzellik açısından bu yöntemi kullanırız.

    Bu yöntemle kolonların içerikleri uzunluğundan kaynaklanan yükseklik farkları giderilmiş oluyor. Görüntü bozukluğu gideriliyor.

  • Mert diyor ki:

    Hocam çok teşekkür ederim öncelikle.
    css ile yeni ilgileniyorum ve bu “aksak kolon” sorununun çözümünü anlayamadım. Sorun tabi ki benim acemiliğimden kaynaklı. Sizden ricam daha açık anlatmanız eğer mümkünse çok teşekkür ederim.

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>

?