Poniżej prezentujemy bardzo prosty i szybki sposób na rozwijane menu mobilne. Nasz przykład zawiera jedynie mechanikę działania – wszelkie aspekty wizualne zostaną pominięte.
#wiemyjak prowadzić skuteczną strategię SEO i SXO
POZNAJ naszą ofertę na POZYCJONOWANIE
- Szkielet dokumentu zawierający jedynie podstawowe elementy oraz nasze menu:
<!DOCTYPE html> <html lang="pl"> <head> <meta charset="UTF-8"> <title>Menu mobilne</title> <script src="http://code.jquery.com/jquery-2.2.2.min.js"></script> </head> <body> <div id="wrapper"> <div id="header"> <button id="menu-button">MENU</button> <ul id="menu"> <li><a href="#">Strona główna</a></li> <li><a href="#">Oferta</a></li> <li><a href="#">O nas</a></li> <li><a href="#">Projekty</a></li> <li><a href="#">Kontakt</a></li> </ul> </div> </div> </body> </html>
Menu zostało stworzone w oparciu o listę nienumerowaną.
W przypadku pracy na własnym kodzie należy koniecznie pamiętać o podpięciu biblioteki jQuery ponieważ to dzięki niej będziemy mogli poprawnie rozwijać menu na mniejszych rozdzielczościach.
- Style:
#menu-button {display: none;} #menu {list-style: none; float: left; width: 100%;} #menu li {float: left; display: block; padding: 0 1%;} #menu li a {text-decoration: none; color: #222;} @media screen and (min-width: 480px) { #menu {display: block !important;} } @media screen and (max-width: 480px) { #menu {display: none;} #menu li {width: 100%; padding: 2% 0;} #menu-button {display: block;} }
Dzięki powyższym stylom, a konkretniej regułom „media” przycisk odpowiadający za pokazywanie/ukrywanie naszego menu pojawi się dopiero na ekranach o rozdzielczości mniejszej niż 480 pikseli, a elementy listy menu ułożą się jeden pod drugim.
- Kod jQuery odpowiadający za rozwijanie menu:
$(document).ready(function(){ $('#menu-button').click(function(){ $('#menu').stop().slideToggle(300); }); });
Mechanizm jest bardzo prosty. Po kliknięciu przycisku, który na powyższym przykładzie ma id = „menu-button” następuje rozwinięcie elementu menu o id = „menu”. Po ponownym kliknięciu przycisku menu zostanie schowane. Wartość podana w nawiasie po funkcji „slideToggle” pozwala na określenie szybkości pokazywania i chowania elementu. Funkcja „stop()” zapobiega powielaniu się animacji po szybkim, wielokrotnym wciśnięciu przycisku.
Poniżej link do działającego przykładu na CodePen (należy zmniejszyć okno do rozmiaru mniejszego niż 480px):
https://codepen.io/Eactive/pen/WwpJNE
Divy nie są potrzebne do działania menu. W tym przypadku zostały wstawione jako „przedstawienie” struktury stron.
A gdzie są zdefiniowane divy „header” i „wrapper”?
@kuba
kod należy umieścić pomiędzy znacznikami <script type=”text/javascript”> … </script> tuż przed znacznikiem zamykającym </body>
Witam, mam pytanie w którym miejscu mam umieścić dany kod do rozwijania menu?
$(document).ready(function(){
$(’#menu-button’).click(function(){
$(’#menu’).stop().slideToggle(300);
});
});