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
menü resmin altın da mı kalıyor
iyi çalışmalar;kodları dreamweaver8′de denedim. Bir satıra getirdim. Bu satırın bir alt satırında bir imajım var ve açılır liste bu imaja gelince açılan linklere ulaşamıyorum. Nasıl düzeltebilirim… Saygılarımla
Ortalamakdan vazgeçdim.
wp-contact pluginsindeki türkçe karakter sorunu nedeniyle kendi bulduğum bi iletişim formunu oluşturdum
önceden olduğu gibi yine yatay açılır menüleri entegre edemedim.
dosyayı ftp ye yükledim mümkünse header.php de yaptığınız gibi bu dosyayada yatay açılır menüleri entegre edebilirmisiniz.
http://www.srrnet.com/iletisim.rar
ortalmaka için dışa bir katman atayıp örneğin(#ortala)
#ortala{
text-align:center;
}
sonrada menü kodunda biraz değişiklikle bunu halledebilrsin.
ul#menu{
padding: 0;
margin:0 auto;
text-align:left;
width:500px;
list-style: none;
}
ul#menu ul{
padding: 0;
margin:0;
list-style: none;
}
gibi tabi menü geniliğini kendine göre ayarlayabilrisin
Son Olarak Ufak Bir Sorunum Var
Menüleri ortalayamazmıyım
teşekkürler kolay gelsin iyi çalışmalar
iki hata görünüyor.
birinci en büyük hata:
sadece üst menüye uygulaman gereken atamaları tüm ul lere uygulayarak tüm ul li yapıların bozlumasına neden olman. Ama bu benim hatam
yazmama rağmen css de bunu belirtmemişim ve bu tip hatalara yol açmışım. Yukarıda bunları düzeltiyorum sende css de ul yerine ul#menu yazarsan bir çok sorunun hallolmuş olacaktır.
Birde sol menüde katagorilerde ff de sorunlu onuda
.sidenav h1
tanımlamalarının sonuna clear:left; eklersen oda halloluyor.
kolay gelsin
şuan yeni bir tema üzerinde çalışıyorum http://www.srrnet.com/kurulum buradan bakabilirsin
http://www.srrnet.com/header.rar buda header dosyam nerede hata var bilmiyorum
acilen yardımınıza ihtiyacım var
Kod olmadan bişey söylemem yanlış olur. Üzgünüm
bir link verebilrisen yardımcı olamaya çalışırım.
Aynen dediğiniz gibi yapmıştım
Sorun şu
menüyü navigation kısmına koymak istiyorum . . .
gerekli yerlere ekleme yaptığım zaman menü navigation kısmına ekleniyor fakat
sidebardaki kategorilerin görünümü bozuluyor onu halledemedim