Bu makalemizde Css ve Jquery ile açılır menü yapacağız. Amacım yeni başlayan arkadaşlara ulaşmak olduğu için çok basit bir menü yaptım. İlk olarak Html kodlarımızı yazıyoruz.
<ul id="menu"> <li><a href="#">Menü 1</a></li> <li><a href="#">Menü 2</a></li> <li><a href="#">Menü 3</a> <ul> <li><a href="#">Alt Menü 1</a></li> <li><a href="#">Alt Menü 2</a> <ul> <li><a href="#">Alt Menü 2-1</a></li> <li><a href="#">Alt Menü 2-2</a></li> </ul> </li> <li><a href="#">Alt Menü 3</a> <ul> <li><a href="#">Alt Menü 3-1</a></li> <li><a href="#">Alt Menü 3-2</a></li> </ul> </li> </ul> </li> <li><a href="#">Menü 4</a></li> </ul>
Html kodlarımızın ardından şöyle bir görüntü oluştu.
Şimdi listemizin imgelerini ve satır boşluklarını kaldırmak için aşağıdaki css kodlarımızı sayfamıza ekliyoruz.
ul { /*Satır boşluklarını kaldır*/ margin: 0px; padding: 0px; /*imgeleri kaldır*/ list-style: none; }
Css kodumuzu eklediğimizde menümüz aşağıdaki hale geldi.
menu id'li ul'mizin uzunluk ve arka plan renklerini belirlemek için css kodlarını ekliyoruz.
#menu { width: 420px; height: 42px; background-color: #000000; position: relative; }
Şimdi ise menu id'li ul'mizin içindeki li'lerin özelliklerini belirleyen ve alt menüleri görünmez özelliğini veren Css kodlarımızı sayfamıza ekleyelim.
#menu li{ float: left; line-height: 42px; } #menu li a{ width: 100px; display: block; text-decoration: none; padding-left: 5px; color: #FFFFFF; } #menu li a:hover{ background-color: #FFFFFF; color: #000000; } #menu li ul{ background-color: #000000; visibility: hidden; position: absolute; }
Son eklediğimiz Css kodlarımız hakkında biraz açıklama yapalım. float: left ile li'lerimizin sola dayalı bir şekilde sıralanmasını sağladık. Linklerimizn genişliğini 100px olarak belirledik ama display:block özelliğini eklemediğiniz zaman göreceksinizki linklerimizin genişliği ne yaparsanız yapın değişmeyecek. Çünkü linkler default olarak display:inline olarak ayarlanmıştır ve width özelliğini uygulamamız için linklerimizi display:block özelliği ekliyoruz. visibility: hidden ile alt menülerin görünmemesini sağlıyoruz. Buraya kadarki kısımda menümüz şu hali aldı.
Gizlediğimiz alt menülere ait Css kodumuzu sayfamıza ekleyelim.
#menu li ul li{ float: none; line-height: 24px; position:relative; } #menu li ul li ul{ left: 100%; top:0px; }
Daha önce yazdığımız Css kodlarını incelerseniz li'lerimizin yanyana görünmesi için #menu li' ye ait float: left özelliği eklemiştik. Alt menülerimizin alt alta görünmesini sağlamak için float: none özelliğini ekleyerek float:left özelliğini kaldırıyoruz. İkinci açılan alt menülerimiz pozisyon olarak ilk açılan menü ile aynı hizada olması için position:relative, sağında olması içince left: 100% özelliğini atıyoruz. Geriye sadece jquery kodumuzu eklemek kaldı.
$(document).ready(function(){ //menu id'li tag'in içindeki ul tag'ına sahip li'leri bul $('#menu').find('li:has(ul)').hover( function(){ //Üzerine gelinen ul'lerden ilkini görünür yap $(this).find('ul:eq(0)').css('visibility','visible'); } ,function(){ //Üzerinde gelmediğim ul'leri görünmez yap $(this).find('ul').css('visibility','hidden'); } ); });
Css kodlarını değiştirerek menüyü istediğiniz görünümde yapmak sizin elinizde. İyi çalışmalar .
Çok güzel bi anlatım olmuş elineze sağlık teşekkürler..
Bu kodu sayfada kullandığımda neden tarayıcıda engelleyici çıkıyor… engelleyiciyi ok lemediğimiz takdirde bu kod çalışmıyor Bu kodun engelleme penceresine takılmaması için ne yapmak gerekiyor?
internet explorer ilemi açıyorsun ?
evet IE de… firefox da böyle bir sorun yok… Şimdi ben bu şekilde siteme yerleştirdiğimde IE kullanan ziyaretçi için hiç de hoş bir durum olmayacak…
kendi bilgisayarından çalıştırdığın için oluyor büyük ihtimalle nedenini bilmiyorum ama ie ye özel birşey bu ... istersen benim sitede ki demo sayfasını çalıştır ie de öyle bir sorun olmayacaktır. yani sitene eklediğinde öyle bir uyarı olmayacak.
Demoyu şimdi denedim gerçekten çalıştı... O zaman bu javascript kodları IE de Lokalde mi bu sorunu veriyor…
Bu arada emeğine sağlık… Çok net bir anlatımla hazırlamışsın.
Teşekkür ederim.
Bu linkten soruna büyük ihtimal cevap bulabilirsin. http://forum.ceviz.net/web-tasarim/22315-javascript-olan-web-sayfasina-explorer-engeli.html">http://forum.ceviz.net/web-tasarim/22315-javascript-olan-web-sayfasina-explorer-engeli.html
Siteye yükledim ve çalıştı... Benim amacım sitede sorun çıkartmamasıydı. Zaten vermiş olduğun linktede bu sorunun cevabı net bir şekilde verilmiş... Paylaşımın için tekrar tşk ederim…
Hocam ellerinize sağlık. İnanılmaz bir menü. Üstelik o kadar güzel olmuş ki süper fantastik. Üstatsınız.
Üstad olmak için çok şey öğrenmem lazım. Yine de güzel yorumun için teşekkür ederim.
elinize sağlık, anlaşılır olmuş.
Fakat , ” Alt menu 1 ” linki uzun olursa ikinci satıra geçiyor, kötü bir görüntü oluşuyor. onu nasıl engelleriz.
Demek istediğim menu 1 , 2,3,4 ün boyları eşit, fakat ” alt menu1 ” linkinin boyu uzun olacak.
http://imageshack.us/photo/my-images/222/14393979.jpg/
bunu nasıl düzeltiriz acaba?
genişliği en uzun olan text’in genişliğinden büyük olacak şekilde verirseniz bu sorunu çözebilirsiniz.
ben 150px olarak verdim ama sizin text’in genişliğine göre siz farklı değerler verebilirsiniz.
Aklıma ilk gelen çözüm bu.