CSS ile Menü Yapmak IV – Yatay Açılır Menüler
Bir önceki makalede dikey açılır menüleri gördük. Bu makalede yatay açılır menülere bir örnek vereceğiz. Html kodumuz aynı olsun
<ul id="menu" >
<li><a href="#">Anasayfa</a></li>
<li><a href="#">Haberler</a>
<ul>
<li><a href="#">şirket Haberleri </a></li>
<li><a href="#">Yurt içi Haberleri </a></li>
<li><a href="#">Yurt dışı Haberleri</a></li>
</ul>
</li>
<li><a href="#">Ürünler</a>
<ul>
<li><a href="#">Tencere</a></li>
<li><a href="#">Tava</a></li>
<li><a href="#">Ütü</a></li>
<li><a href="#">Tost Makinesi </a></li>
<li><a href="#">El Süpürgesi </a></li>
</ul>
</li>
</ul>

İlk olarak satır başı boşluklarını ve imgeleri kaldıralım. Dikey menüde olduğu gibi.
ul#menu, ul#menu ul {
list-style: none;
margin: 0;
padding: 0;
}
Daha sonra menümüzü yatay hale getirmek için float özelliğini kullanalım. Normalde bunun için display:inline kodunu da kullanabiliriz.(Bkz. CSS ile Menü Yapmak II – Yatay Menüler) Sonra ilk linkleri göreceli olarak konumlandırmalıyız. Bu konumlandırma aslında ikinci kademe açılacak menüye mutlak konumlandırma yapılması için kullanılır.
ul#menu li {
float: left;
position: relative;
width: 150px;
}
Sonra ikincil linkleri sayfaya ilk açıldığında görünmez(display:none) yapalım. Birincil linklere göre konumlandırmak için postion:absolute özelliği ve top:19px (satır yüksekliği 15px + 2px alttan(sonra ekleyeceğiz) + 2px üstten(sonra ekleyeceğiz)) özelliğini kullanalım.
ul#menu li ul {
display: none;
position: absolute;
top: 19px; /* yukseklik 15px + sonradan eklenecek paddingler 4px toplam 19px */
left: 0;
}
Yalnız burada IE sorun çıkaracaktır. IE ve Opera ikincil menüleri konumlandırmasında sorun çıkarır, bunu engellemek için:
ul#menu li > ul {
top: auto;
left: auto;
}
![]()
Görünümü biraz güzelleştirelim:
ul#menu li a {
font: bold 11px arial, helvetica, sans-serif;
display: block;
border-width: 1px;
border-style: solid;
border-color: #ccc #888 #555 #bbb;
margin: 0;
padding: 2px 3px;
color: #000;
background: #efefef;
text-decoration: none;
}
ve rollover hali için:
ul#menu li a:hover {
color: #a00;
background: #fff;
}
Sonra birincil linklerin üzerine gelince ikincil linklerin görünmesi için:
ul#menu li:hover ul {
display: block;
}
Önceki makalede belirttiğimiz gibi bu kod IE’de çalışmayacaktır. IE’de çalışması için aşağıdaki kodları yazmalıyız.
startList = function() {
if (document.all&&document.getElementById) {
navRoot = document.getElementById("menu");
for (i=0; i<navRoot.childNodes.length; i++) {
node = navRoot.childNodes[i];
if (node.nodeName=="LI") {
node.onmouseover=function() {
this.className+=" over";
}
node.onmouseout=function() {
this.className=this.className.replace(" over", "");
}
}
}
}
}
window.onload=startList;
Ayrıca aşağıdaki kodu da eklemeliyiz.
ul#menu li:hover ul, ul#menu li.over ul{
display: block;
}
Önemli bir not olarak koddaki <ul id="menu" > ve javascriptteki navRoot = document.getElementById("menu"); aynı olmasına dikkat edelim.
işte sonuç:
şimdiye kadar anlatılan menü kodlarında işin yapısı öğretilmeye çalışılmıştır. Bu kodları kullanarak çok çeşitli menüler yapılabilir, bunu gerek internette arayarak ve gerekse kaynaklar bölümündeki linklere göz atarak görebilirsiniz. Bir çok menü türü bu şekilde tasarlanabilir. alt kademeli, değişik renklerde ve değişik ebatlarda menü yapılabilir.
Örnek kodları indir
wordpress ne işe yarar?
wordpress de eklerken sorun çıkacağınız annetmiyorum. Eğer
ile başlayan veile biten kısmı body içine javascript ve ve css lerideiçine koayrsan sorun olmayacaktırFatih kardeş wordpresse entegre edemedim bunları
nasıl yapabileceğim hakkında ufak bir bilgi verebilirmisin
İyi çalışmalar
Bu faydalı makale için ellerine sağlık. Ayrıca siteni çok beğendim ;) İçerik tam benim ayarımda diyebilirim :) Çalışmalarında başarılar dilerim…
ilk soruya cevap
li:hover ul, li.over ulbu kodun virgülden önceki birinci bölümü fare imlecinin ana menü başlıkları üzerine gelince alt menülerin açılmasını sağlamak. Virgülden sonraki ikinci kısım ise belirtildiği gibi ie tüm sürümlerinde bu imkanı sağlamk içindir.
İkinci soruna gelince, evet kod ile sonda verdiğimiz kaynak kod arasında bir iki fark var onları düzeltip ekledim. Ancak kodda renk değişimi ile düzelcek bir hatay ratlamadım .
Selamlar,
Hatayı buldum ama ilginç geldi size de anlatayım.
Aşağıda verdiğiniz örnek ile yukarıda yazdığınız arasında çok küçük bir fark var.
açılır menude ki rengi belirtmemişsiniz.
Bende yukarıdaki kodları alarak oluşturmuştum bu yüzden çalışmamış,Baştan aşağıdaki örnek dosyayı görmemiştim, sonra onu indirdim ve rengi verince çalıştı.Renkle ne alakası var anlayamadım
Teşekkürler…
kodunuzu aynen aldım ve deniyorum,
firefox ve operada çalışıyorken
explorer’da menuler aşağı doğru açılıyorlar fakat birinci linke geldikten sonra kapanıyorlar.Yani anlayacağınız açılır menude 1. linkten sonraki linklere erişemiyorum.Scriptteki “menu” lerde aynı, sadece css ve js yi extrenal yaptım.
birde
li:hover ul, li.over ul{ display: block; }
ne işe yarıyor anlayamadım
arkadaşım oda menu için verilen değerlerr onlarıda girmen lazım
sorun css path lerinde cssleri yazarken tam yol belirtiyorum (#main .header .nav ul li gibi) bununla alakalı sorun cok tesekkur ederim ii calısmalar
kodlar
ie5.5+
Firefox1.5
Opera9.0
da denenmiştir. Sorun yok.
Hata görüntüsü veya kodunu gönderebilrimisin
java script kodunda
if (node.nodeName==”LI”) { satırı ile alakalımı explorerda calısmıyor bende bu satır tam olarak ne iş goruyor burda