CSS ile Menü Yapmak I – Dikey Menüler

Web sitelerinin vazgeçilmez öğelerinde biridir menüler. Menüler kullanıcının oluşturduğumuz sayfalara hızlı erişimini sağlar. Bir çok site de Ürünler, İletişim, Hakkımızda vb. bölümlerini menü öğesi olarak görürüz. Bu makalede sırasız listeler(<ul>)ve CSS yardımı ile menü yapımını anlatacağız. CSS ile yapılan menüler esnek, kolay düzenlenebilir, güzel görünen ve rollover efekti uygulana bilen menülerdir.

Sırasız listeler(<ul>) ilk olarak listeleme işlemleri için kullanılsa da CSS’in yükselişi ile birlikte menü oluşturmak için kullanılmaya başlandı. Aslında menülerde bir bakıma link listeleri olduğu düşünülürse işlevinin dışında kullanılmadığı da doğru bir tespittir. Kodumuzu yazmaya başlayalım:

<ul class="menu">
    <li><a href="index.html">Ana Sayfa </a></li>
    <li><a href="hakkimizda.html">Hakkımızda</a></li>
    <li><a href="urunler.html">Ürünler</a></li>
</ul>

Kodlama sonucu görüntü aşağıdaki gibi olacaktır.

Her linkin başındaki imgeleri kaldırmak için:

ul.menu {
	list-style-type: none;
}

Bir çok web tarayıcısı sırasız listeleri(<ul>) yorumlarken yukarıda görüldüğü gibi otomatik olarak soldan bir padding/margin(bazı tarayıcılarda padding uygularken bazılarında margin uygular) mesafesi uygular bu mesafeyi sıfırlamak için:

ul.menu {
    list-style-type: none;
    padding: 0;
    margin: 0;
}

Bu bölüme kadar yazılan kodlamalar hem dikey menüler hem de yatay menüler içinde aynıdır. Ancak bundan sonra dikey menü ve yatay menü için kodlar değişecektir.

Dikey Menüler

Dikey menülerde linkler yukarıdan aşağı doğru sıralanmıştır. Link elementi(a) inline-elementtir, her linke rollover özelliği kazandırmak için:

ul.menu a {
	display: block;
}

Biraz görselliği arttırırsak:

ul.menu a {
    display: block;
    color: #1B1B1B;
    background-color: #E2E2E2;
}

Linkler web tarayıcısının genişliği kadar uzayacaktır, kendi istediğimiz genişliğe sahip olmak için:

ul.menu a {
    display: block;
    color: #1B1B1B;
    background-color: #E2E2E2;
    width:8em;
}

Linkler arasına biraz boşluk verelim:

ul.menu a {
    display: block;
    color: #1B1B1B;
    background-color: #E2E2E2;
    width:8em;
    padding: .2em .8em;
}

Linklerin altındaki çizgileri kaldıralım:

ul.menu a {
    display: block;
    color: #1B1B1B;
    background-color: #E2E2E2;
    width:8em;
    padding: .2em .8em;
    text-decoration: none;
}

şžimdi linklerimize rollover efekti vermek için a:hover kullanacağız:

ul.menu a:hover
{
	background-color: #999;
}

son olarak linklerin arasını ayıralım:

ul.menu li {
	margin: 0 0 .2em 0;
}

İşte menümüzün son hali

71 Yorum (Yorum Ekle)

  • fatih.hayrioglu diyor ki:

    bunu .aktif diye bir sınıf oluşturup. javascript ile seçili olan linke bu aktif class ını uygularsak olacaktır

  • SerdarK diyor ki:

    Merhaba,
    Ben bu menüyü kullanıcam ama bir şeyi yapamadım. Yardımcı olurmusunuz?

    Bu menude “hover” olarak kullanılan kodu aynı zamanda “active” olarak kullanmak istiyorum… Yani menudeki mesela 2. linke tıklandığında sayfa refresh olacak ama 2 link üzerindeki tablo rengi “hover” daki gibi olacak.. Açılan sayfada hangi linke tıkladıysak o sayfanın linki “active” belirttiğimiz gibi olmasını nasıl sağlarım ?

    Ben active kodu tanımlıyorum ama sadece tıkladığımda tablo rengi değişiyor, sayfa açıldığında yine mouseout şeklinde tanımlı kodu çekiyor..

    Yardımcı olabilirmisiniz?

  • Murat diyor ki:

    #menu {
    float:left;
    }
    #menu li, #menu ul {
    padding:0px;
    margin:0px;
    list-style:none;
    }
    #menu li a {
    padding:10px 0px 0px 45px;
    font-family:”Comic Sans MS”;
    font-size:13px;
    text-decoration:none;
    color:#FFFFFF;
    font-weight:bold;
    background:url(../image/buttona.gif) no-repeat;
    width:99px;
    height:27px;
    display:block;
    }
    #menu li a:hover {
    background:url(../image/buttonahover.gif) no-repeat;
    }

    Anasayfa
    Forum
    Müzik
    Video

    Bunu Kendim Yaptım Biraz acemilimik Var tabi Sormak istediğim Burda Gereksiz Kodlama Yapıp yapmadığım Cevap Yazarsanız Sevinirim…Siteniz Bu Arada Çok ii Anlatımı Var..Elinize sağlık.. Herşey İçin Teşekkürler

  • fatih.hayrioglu diyor ki:

    ikinci kolono geçecek(3. 4. linkten sonrası) listeye bir sınıf atarsanız ve bu sınafa ikinci kolonun konumunu yazarsanız olur.

  • Pardus007 diyor ki:

    diyelimki 10-15 adet link için bu menüden yapacağız. Bunaları elle girmek yerine veritabanından çekeceğiz.
    Fakat alt alta uzunca listelemek yerine her 3-4 linkte ikinci sutuna geçmesini istiyoruz.
    Bunu sadece Css ile yapmak mümkünmü veya bu nasıl mümkün olabilir?

  • fatih diyor ki:

    merhaba ben css ile menu yaptım fakat bi turlu ie6 acılmıyor herseyi denedim acaba kodlarda bi yanlışlik mı var

    Anasayfa
    Çelik yapılar
    Güçlendirme

    Güçlendirme nedir?
    Kolonu Güçlendirme
    Kirişi Güçlendirme
    Kolon-Kiriş Bölgesi
    Döşemeyi Güçlendirme
    Perdeyi Güçlendirme
    Temeli Güçlendirme

    Onarım
    Onarım Nedir?
    Çatlakların Onarımı
    Püskürtme Beton
    Epoksi Reçinesi

    Hasar tespit
    İnşaat Teknik Terimleri
    Beton nedir?
    Deprem
    Firma ekle
    İnşaatta işçi güvenliği
    Yalıtım
    Linkler
    Anket
    Fuar takvimi
    Ben Kimim?

    ve style ise

    /* Root = Vertical, Secondary = Vertical */
    ul#navmenu,
    ul#navmenu li,
    ul#navmenu ul {
    margin: 0;
    border: 0 none;
    padding: 0;
    width: 203px; /*For KHTML*/
    list-style: none;
    }

    ul#navmenu:after /*From IE 7 lack of compliance*/{
    clear: both;
    display: block;
    font: 2px/0px serif;
    content: “.”;
    height: 0;
    visibility: hidden;
    }

    ul#navmenu li {
    float: left; /*For IE 7 lack of compliance*/
    display: block !important; /*For GOOD browsers*/
    display: inline; /*For IE*/
    position: relative;
    }

    /* Root Menu */
    ul#navmenu a {
    border: 1px solid #FFF;
    border-right-color: #90B4CF;
    border-bottom-color: #90B4CF;
    padding: 0 6px;
    display: block;
    background: #90B4CF;
    color: #ffffff;
    font: bold 12px/22px Verdana, Arial, Helvetica, sans-serif;
    text-decoration: none;
    height: auto !important;
    height: 1%; /*For IE*/
    ul#navmenu li:hover ul { display: block; }
    }

    /* Root Menu Hover Persistence */
    ul#navmenu a:hover,
    ul#navmenu li:hover a,
    ul#navmenu li.iehover a {
    background: #9EC630;
    color: #ffffff;
    }

    /* 2nd Menu */
    ul#navmenu li:hover li a,
    ul#navmenu li.iehover li a {
    background: #90B4CF;
    color: #ffffff;
    }

    /* 2nd Menu Hover Persistence */
    ul#navmenu li:hover li a:hover,
    ul#navmenu li:hover li:hover a,
    ul#navmenu li.iehover li a:hover,
    ul#navmenu li.iehover li.iehover a {
    background: #9EC630;
    color: #ffffff;
    }

    /* 3rd Menu */
    ul#navmenu li:hover li:hover li a,
    ul#navmenu li.iehover li.iehover li a {
    background: #90B4CF;
    color: #ffffff;
    }

    /* 3rd Menu Hover Persistence */
    ul#navmenu li:hover li:hover li a:hover,
    ul#navmenu li:hover li:hover li:hover a,
    ul#navmenu li.iehover li.iehover li a:hover,
    ul#navmenu li.iehover li.iehover li.iehover a {
    background: #9EC630;
    color: #ffffff;
    }

    /* 4th Menu */
    ul#navmenu li:hover li:hover li:hover li a,
    ul#navmenu li.iehover li.iehover li.iehover li a {
    background: #90B4CF;
    color: #ffffff;
    }

    /* 4th Menu Hover */
    ul#navmenu li:hover li:hover li:hover li a:hover,
    ul#navmenu li.iehover li.iehover li.iehover li a:hover {
    background: #9EC630;
    color: #ffffff;
    }

    ul#navmenu ul,
    ul#navmenu ul ul,
    ul#navmenu ul ul ul {
    display: none;
    position: absolute;
    top: 0;
    left: 204px;
    }

    /* Do Not Move – Must Come Before display:block for Gecko */
    ul#navmenu li:hover ul ul,
    ul#navmenu li:hover ul ul ul,
    ul#navmenu li.iehover ul ul,
    ul#navmenu li.iehover ul ul ul {
    display: none;
    }

    ul#navmenu li:hover ul,
    ul#navmenu ul li:hover ul,
    ul#navmenu ul ul li:hover ul,
    ul#navmenu li.iehover ul,
    ul#navmenu ul li.iehover ul,
    ul#navmenu ul ul li.iehover ul {
    display: block;
    }

    startList = function() {
    if (document.all && document.getElementById) {
    navRoot = document.getElementById(“navmenu”);
    for (i=0; i

  • fatih.hayrioglu diyor ki:

    display:none;

    görünmez yapacaktır.

    • nemesis diyor ki:

      abi ben bu kodları yazıyorum fakat sadece bastakı alt alta olan bolum
      .Anasayfa
      .İletişim
      şeklınde kalıyo butonlar ve hover background sayfada cıkmıyor bunun nedenı nedır.

      • fatihhayri diyor ki:

        Eğer kodların tamamını alırsanız ve onun üzerinden giderseniz olacaktır. Sizin yazdığını kodları görebilirsek belki daha çok yardımcı olabiliriz belki

  • Pasifik diyor ki:

    Acaba menüyü- kökten kaldırmam için bir kod varmı?

  • fatih.hayrioglu diyor ki:

    tüm sayfalarda aynı css dosyasına link verip değişikliklerinizi de bu css dosyasında yaparsanız. Menü için css de yatığınız değişiklikler otomatik olarak tüm sayfalarda olacaktır.

  • serdar diyor ki:

    merhaba paylaşımınız için teşekkür ederim.cssyi sizden öğreniyorum,html ve diğer dilleride yeni öğreniyorum.Css kullanarak bir menü oluşturduğumda ve üzerinde değişiklik yaptığımda bütün sayfalara bü menüyü nasıl entegre edebilirim? yardımınız için şimdiden teşekkürler.

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>

?