Słowem wstępu
Czasami tworząc stronę internetową musimy w menu stworzyć meny rozwijane. Można je zrobić w czystym CSS3 lub można w kilku linijkach kodu stworzyć takie rozwijane animowane menu w jQuery. Jak będzie wyglądać nasz projekt przedstawia poniższy screen:
Struktura HTML
Nasza struktura będzie prosta. Całość zamkniemy w znacznikach <nav>
w formie listy <ul>
. Najważniejsze żeby dobrze oznaczyć nasze rozwijane menu poprzez odpowiednią klasę <li class="drop">
. Nasze menu będzie kolejną listą z odpowiednia klasą dropdown <ul class="dropdown">
.
<nav class="nav">
<ul>
<li><a href="#">Start</a>
<li><a href="#">O nas</a>
<li class="drop"><a href="#">Oferta</a>
<ul class="dropdown">
<li><a href="#">Oferta 01</a></li>
<li><a href="#">Oferta 02</a></li>
<li><a href="#">Oferta 03</a></li>
</ul>
</li>
<li><a href="#">Aktualności</a>
<li><a href="#">Kontakt</a>
</ul>
</nav>
Struktura CSS
Tutaj tak naprawdę nie ma żadnych cudów. Stylujemy wszystko wedle naszych upodobań. najważniejsze jest żeby nasze menu rozwijane .dropdown
zrobić ukryte poprzez display: none;
.
nav {
margin: 0 auto;
max-width: 800px;
background: #008FEA;
box-shadow:0 3px 15px rgba(0,0,0,.15);
}
nav::after {
display: block;
content: '';
clear: both;
}
nav ul {
padding: 0;
margin: 0;
list-style: none;
}
nav ul li {
float: left;
position: relative;
}
nav ul li a {
display: block;
color: rgba(255, 255, 255, .9);
text-decoration: none;
padding: 1rem 2rem;
border-top: 2px solid transparent;
border-bottom: 2px solid transparent;
transition: all .3s ease-in-out;
}
nav ul li a:hover,
nav ul li a:focus {
background: rgba(0, 0, 0, .15);
}
nav ul li a:focus {
color: white;
}
nav ul li a:not(:only-child)::after {
padding-left: 4px;
content: ' ▾';
}
nav ul li ul li {
min-width: 190px;
}
nav ul li ul li a {
background: transparent;
color: #555;
border-bottom: 1px solid #DDE0E7;
}
nav ul li ul li a:hover,
nav ul li ul li a:focus {
background: #eee;
color: #111;
}
.dropdown {
display: none;
position: absolute;
background: #fff;
box-shadow: 0 4px 10px rgba(10, 20, 30, .4);
}
jQuery
I teraz cała magia jQuery w kilku linijkach. Po najechaniu myszką na element z klasą .drop
będziemy pokazywać nasze menu z animacją 0.3 sekundy. Następnie po zjechaniu myszką będziemy je chować w taki sam sposób.
$(".drop")
.mouseover(function() {
$(".dropdown").show(300);
});
$(".drop")
.mouseleave(function() {
$(".dropdown").hide(300);
});
Jak widzicie użyliśmy zdarzeń .mouseover
oraz .mouseleave
i w prosty sposób dzięki .show(300)
oraz .hide(300)
pokazujemy i ukrywamy nasze menu rozwijane z odpowiednią animacją.
Cały kod można zobaczyć standardowo na codepen.io:
https://codepen.io/Naymapl/pen/zwdyyX
Mam nadzieję że ten prosty przykład może się komuś przydać i ułatwi życie ;) Jeśli macie inne patenty i pomysły na rozwijane menu zapraszam do podzielenia się w komentarzach.