Ce didacticiel vous guidera dans une rapide visite de jQuery.mmenu, un plugin jQuery qui permet de créer une navigation complète sur le site Web. À mesure que nous l'examinerons, nous verrons comment nous pouvons utiliser ce plugin pour créer un menu hors-toile à partir de zéro..
Pour une meilleure description de jQuery.mmenu, nous allons passer à sa page Github:
“Le meilleur plugin jQuery pour des menus sur et hors-toile similaires à des applications, avec des sous-menus coulissants pour votre site Web et votre application Web..
Le plug-in jQuery.mmenu est hautement personnalisable et vient avec de nombreux add-ons (par exemple des compteurs et des diviseurs) plus des extensions (par exemple des effets et des ombres de page). Pour ceux qui préfèrent, il est disponible sous forme de plugin Wordpress, et cela fonctionne bien dans un large éventail de navigateurs.!
Pour commencer, vous devrez vous procurer un exemplaire de la bibliothèque. Cela peut être fait en visitant sa page officielle, par l’intermédiaire d’un gestionnaire de paquets (par exemple Bower) ou d’un CDN (par exemple cdnjs)..
Une fois téléchargé, vous devrez inclure les fichiers CSS et JS nécessaires dans vos pages..
Veuillez noter que selon le menu que vous souhaitez créer, différents actifs peuvent être nécessaires. Par exemple, un menu hors-toile nécessite la jquery.mmenu.css
(ou sa version abrégée) et jquery.mmenu.js
(ou sa version minifiée) des fichiers. Si vous souhaitez modifier le comportement par défaut du menu (par exemple, déplacer sa position vers la droite), vous devez également inclure les fichiers associés au module complémentaire «hors-toile». Si cela semble déroutant et que vous ne voulez pas vous soucier des fichiers requis, continuez et utilisez les fichiers "tous" (c'est-à-dire. jquery.mmenu.all.css
et jquery.mmenu.min.all.js
) dans vos projets.
Dans notre démo, nous allons importer tous les fichiers via un CDN. le tête
L’élément de notre page référencera le fichier «all» CSS:
De la même manière, nous placerons le script “all” (et une copie de jQuery) avant la fermeture. étiquette:
Alors, commençons à construire le menu!
Commençons par comprendre la structure de notre page. Voici le code HTML correspondant:
Notez que nous plaçons tous les éléments, sauf le nav
élément, dans un contenant div
.
Nous pouvons utiliser un élément différent en tant que conteneur, mais nous devons alors informer le plug-in de cette modification via la propriété de configuration correspondante (c'est-à-dire, offCanvas.pageNodetype
propriété). De plus, si possible, nous devrions éviter de déclarer un certain nombre de propriétés CSS pour l'élément wrapper. Plus spécifiquement, le plugin recommande ce qui suit:
«Cette DIV est préférable sans une largeur et une hauteur (min / max), un rembourrage, une bordure et une marge.»
L'étape suivante consiste à examiner de plus près la structure du menu. Le code HTML pertinent ressemble à ceci:
Ici, nous avons utilisé du code HTML simple pour construire notre menu. Listes non ordonnées, avec des listes imbriquées et des liens. Le plugin n'attend pas de balisage spécifique; Heureusement, nous sommes en mesure d'utiliser les balises que nous voulons.
Nous attribuons un identifiant unique au menu, que nous utiliserons plus tard pour instancier le plugin. Enfin, dernier élément, nous le cachons jusqu'à ce que tous les styles aient été appliqués avec succès. Cette étape est importante car, en ajoutant le code CSS suivant, nous empêchons les FOUC saccadés:
nav display: none;
Maintenant que nous avons préparé notre page, il est temps d'initialiser le menu!
Avant de montrer comment nous pouvons activer le plugin, mettons d'abord en cache quelques-uns de nos sélecteurs:
var $ menu = $ ('# menu'); var $ btnMenu = $ ('. btn-menu'); var $ img = $ ('img');
Maintenant, nous l’initialisons en utilisant le code ci-dessous:
$ menu.mmenu (// les paramètres de configuration ici);
Nous pouvons personnaliser l'apparence par défaut et les fonctionnalités de notre menu via CSS et les paramètres de configuration disponibles. Nous verrons quelques exemples de cela dans un instant.
De plus, nous avons la possibilité d’ouvrir et de fermer le menu automatiquement ou manuellement. Dans notre cas, nous allons montrer le menu lorsque l'élément avec le btn
-menu
la classe est cliquée. Pour réaliser cette fonctionnalité, nous allons tirer parti de l'API disponible. Voici le code requis:
var api = $ menu.data ("mmenu"); $ btnMenu.click (function () api.open (););
En revanche, nous choisirons de cacher le menu automatiquement. Ceci est le comportement par défaut; déclenché lorsque l'on clique sur une partie de la page, à l'exception de la partie appartenant au menu.
Avant de poursuivre, il y a une dernière chose que je devrais mentionner. Si nous essayons d’ouvrir un sous-menu en cliquant sur l’option de menu cible (une
élément), cet élément ne sera pas entièrement cliquable. Plus précisément, le sous-menu ne s’ouvre que lorsque nous cliquons sur la partie droite de cet élément de menu (voir l’exemple en direct pour comprendre ce comportement). Pour faire le tout élément de menu cliquable, nous devons ajouter la ligne de code suivante:
$ menu.find (".mm-next") .addClass ("mm-fullsubopen");
Dans cette section, l'objectif est d'afficher une icône de navigation différente en fonction de l'état de notre menu. La capture d'écran ci-dessous montre ce que nous voulons réaliser:
Les deux états d'icônePour ce faire, nous allons travailler avec le ouverture
et fermeture
événements. Vous pouvez trouver la documentation de ces événements dans la page associée au module complémentaire "offCanvas". Voici l'extrait que nous utilisons pour changer les icônes:
api.bind ('opening', function () $ img.attr ('src', 'arrows_remove.svg');); api.bind ('fermeture', fonction () $ img.attr ('src', 'arrows_hamburger.svg'););
Au-delà des événements ci-dessus, il y a aussi quelques autres joueurs avec lesquels jouer (par exemple, le ouvert
et fermé
événements) que vous pourriez trouver utiles pour vos propres projets.
Afin de changer la largeur prédéfinie du menu, nous pouvons utiliser CSS ou Sass (en modifiant les fichiers source). Par défaut, son largeur min
et largeur maximale
les valeurs de propriété sont égales à 140px
et 440px
respectivement. Dans notre démo, voyons comment nous pouvons changer le premier largeur maximale
valeur de propriété via CSS. Vous trouverez ci-dessous les règles CSS à remplacer:
.mm-menu max-width: 350px; / ** * ajouter plus de préfixes de fournisseurs * en fonction des navigateurs que vous ciblez * / @media all et (min-width: 550px) html.mm-opening .mm-slideout transformer: translate (350px, 0) ; / ** * annule cette règle * si vous construisez un menu de droite * / @média tous et (min-largeur: 550px) html.mm-right.mm-ouverture .mm-slideout transformer: traduire (-350px, 0);
À ce stade, nous allons continuer à personnaliser l'apparence du menu. De nouveau, nous éditerons le fichier source Sass pour modifier les styles en fonction de nos besoins. Jetez un coup d'œil aux règles que nous allons remplacer ci-dessous (pour simplifier, j'ai omis les valeurs des variables Sass):
.mm-menu background: darken ($ couleur principale, 10%); .mm-listview> li> a color: $ text-color; rembourrage: 20px; .mm-listview> li> a: survolez, .mm-listview .mm-suivant.mm-fullsubopen: survol + a color: $ highlight-color; .mm-listview> li> a: hover span color: $ text-color; .mm-menu .mm-listview> li.mm-sélectionné> a: non (.mm-suivant) arrière-plan: url transparente (arrows_check.svg) non répétée centre droite 10px; taille du fond: 30px 30px; text-decoration: ligne directe;
Considérons maintenant la toute dernière règle. Chaque fois que nous cliquons sur un élément de menu, il reçoit le message mm sélectionné
classe, donc nous pouvons utiliser ce sélecteur pour le styler. Mais nous voulons seulement appeler le tout dernier élément d'un processus de sélection, nous allons donc pointer vers ceux qui n'ont pas la classe de mm-next
.
Dans une section précédente, nous avons vu comment initialiser le plugin. Maintenant, étendons son comportement et ses fonctionnalités en remplaçant les options de configuration par défaut.
Tout d'abord, nous changeons le titre qui apparaît au-dessus du panneau principal.
Ensuite, nous incluons les "compteurs" et les add-ons "hors-toile". Ce dernier add-on nous permet de changer la position du menu par rapport à la page.
Enfin, nous ajoutons trois extensions. Découvrez le code d'initialisation final ci-dessous:
$ menu.mmenu (counters: true, barre de navigation: title: "Contenu du menu", extensions: ["pageshadow", "effect-zoom-menu", "effect-zoom-panels"], offCanvas: position: "right", zposition: "back");
Dans ce didacticiel, nous avons expliqué comment créer un menu hors-zone à l'aide du plug-in jQuery.mmenu. Dans l’étape suivante, explorez la source complète de notre démonstration sur CodePen. Ensuite, je vous suggère de vous rendre sur la page officielle de jQuery.mmenu et de regarder les différents exemples interactifs disponibles. Montrez-nous vos exemples dans les commentaires!
Si vous cherchez une solution rapide, n'oubliez pas qu'Envato Market propose une collection de différents menus CSS ou JavaScript et de widgets de navigation. C'est un bon point de départ pour des idées et des exemples.