jQuery MagicLine menü
Egy menü alapvető feladata, hogy könnyű navigációt biztosítson, azonban nem utolsó szempont a felhasználói élmény sem amit nyújthat. Ez a cikk egy ilyen animált menü elkészítésén vezet végig.
Az alap ötlet
A menünkbe szeretnénk mindig aláhúzni azt az elemet, ami fölé visszük az elemet, és itt egy kis jQuery varázslatot is teszünk bele: a vonal nem csak egyszerűen megjelenik, hanem mindig az aktuálisan kiválasztott menüelemtől, elúszik addig az elemig ami fölé húztuk az egerünk, onmouseout-ra pedig újra visszacsúszik alaphelyzetbe.
HTML
1 2 3 4 5 6 7 8 9 10 11 12 | <div class="nav-wrap">
<ul class="group" id="example-one">
<li class="current_page_item"><a href="#">Home</a></li>
<li><a href="#">Buy Tickets</a></li>
<li><a href="#">Group Sales</a></li>
<li><a href="#">Reviews</a></li>
<li><a href="#">The Show</a></li>
<li><a href="#">Videos</a></li>
<li><a href="#">Photos</a></li>
<li><a href="#">Magic Shop</a></li>
</ul>
</div> |
CSS
1 2 3 4 5 6 | .nav-wrap { margin: 50px auto; background-color: rgba(0,0,0,0.6); border-top: 2px solid white; border-bottom: 2px solid white; } #example-one { margin: 0 auto; list-style: none; position: relative; width: 960px; } #example-one li { display: inline; } #example-one li a { color: #bbb; font-size: 14px; display: block; float: left; padding: 6px 10px 4px 10px; text-decoration: none; text-transform: uppercase; } #example-one li a:hover { color: white; } #magic-line { position: absolute; bottom: -2px; left: 0; width: 100px; height: 2px; background: #fe4902; } |
jQuery JavaScript
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 | $(function() { var $el, leftPos, newWidth, $mainNav = $("#example-one"); $mainNav.append("<li id='magic-line'></li>"); var $magicLine = $("#magic-line"); $magicLine .width($(".current_page_item").width()) .css("left", $(".current_page_item a").position().left) .data("origLeft", $magicLine.position().left) .data("origWidth", $magicLine.width()); $("#example-one li a").hover(function() { $el = $(this); leftPos = $el.position().left; newWidth = $el.parent().width(); $magicLine.stop().animate({ left: leftPos, width: newWidth }); }, function() { $magicLine.stop().animate({ left: $magicLine.data("origLeft"), width: $magicLine.data("origWidth") }); }); }); |
Mőködő demo
Ezt a menüt használom a kollégiumom oldalán is, nézd meg:


