Table des matières
This Side Navigation Menu Looks Good!
Conclusion
Maison interface Web js tutoriel Créez un design réactif avec un menu de navigation latéral coulissant

Créez un design réactif avec un menu de navigation latéral coulissant

Sep 16, 2023 pm 04:57 PM

Créez un design réactif avec un menu de navigation latéral coulissant

Dans ce didacticiel, vous créerez un menu de navigation latéral extensible à l'aide de JavaScript et CSS. Le produit final est présenté ci-dessous :

1. Créer une marque

Tout d’abord, ajoutons quelques balises au menu latéral :

<div id="sideNavigation" class="sidenav">
  <a href="#" class="close-btn">&times;</a>
  <a href="#">About</a>
  <a href="#">Features</a>
  <a href="#">Contact Us</a>
</div>
 
<nav class="topnav">
  <a href="#" class="ham-icon">
    <svg width="30" height="30" id="icoOpen">
        <path d="M0,5 30,5" stroke="#000" stroke-width="5"/>
        <path d="M0,14 30,14" stroke="#000" stroke-width="5"/>
        <path d="M0,23 30,23" stroke="#000" stroke-width="5"/>
    </svg>
  </a>
</nav>
 
<section id="main">
  <h1 id="This-Side-Navigation-Menu-Looks-Good">This Side Navigation Menu Looks Good!</h1>
  <p>Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.</p>
</section>
Copier après la connexion

Ici, vous pouvez voir que nous avons ajouté la navigation dans la barre supérieure à l'aide de la balise sidenav类创建了一个侧边菜单div。接下来,我们通过 <nav> et que nous avons utilisé SVG pour l'icône du menu latéral.

N'oubliez pas de mettre tout le contenu de votre site Web dans un conteneur div id="main" pour qu'il glisse vers la droite.

2. Écrivez du code JavaScript

Ensuite, ajoutons JavaScript qui utilisera la classe ham-icon pour écouter les événements de clic sur l'icône du hamburger, ainsi que le bouton de fermeture qui apparaît après le glissement du menu de navigation latéral sur l'écran.

document.querySelector("a.ham-icon").addEventListener("click", function(event){
  document.getElementById("sideNavigation").style.width = "250px";
  document.getElementById("main").style.marginLeft = "250px";
});

document.querySelector("a.close-btn").addEventListener("click", function(event){
  document.getElementById("sideNavigation").style.width = "0";
  document.getElementById("main").style.marginLeft = "0";
});
Copier après la connexion

Cliquer sur l'icône du hamburger devrait révéler la navigation latérale. Nous faisons cela en définissant la largeur de la navigation sur la marge gauche de 250px 并同时向主网站内容添加 250px .

Cliquer sur le bouton de fermeture devrait masquer la navigation latérale. Pour ce faire, nous remettons la largeur de la navigation à 0, tout en définissant également la marge gauche du contenu principal du site à 0.

3. Utilisez les styles CSS

Enfin, nous devons utiliser du CSS pour styliser le menu latéral et les liens sur la page. CSS placera tous les éléments de la page Web exactement là où nous le souhaitons. Nous appliquerons également une animation simple à l’aide de l’attribut transition. Examinons CSS une partie à la fois.

.sidenav {
  height: 100%;
  width: 0;
  position: fixed;
  z-index: 1;
  top: 0;
  left: 0;
  background-color: #111;
  overflow-x: hidden;
  padding-top: 4rem;
  transition: 0.4s cubic-bezier(0.18, 0.89, 0.32, 1.28);
  font-family: "Bebas Neue";
}

.sidenav a {
  padding: 0.5rem 1rem;
  text-decoration: none;
  color: #bdbdbd;
  display: block;
  transition: 0.4s;
  white-space: nowrap;
  font-size: 2rem;
}

.sidenav a:hover {
  color: white;
  background: #9e9e9e;
}
Copier après la connexion

Lorsque nous height设置为100%,并将其初始width设置为0以使其隐藏。但是,只有当 overflow-x 属性的值设置为 hidden la navigation latérale, le contenu de la navigation latérale restera masqué.

La propriété de transition garantit que les changements de largeur de navigation latérale ne se produisent pas soudainement, et la fonction d'assouplissement la rend un peu élastique.

Pour les liens dans la navigation latérale, nous ferons white-space 属性的值设置为 nowrap afin que le texte du menu ne déborde pas de plusieurs lignes.

.sidenav .close-btn {
  position: absolute;
  top: -1rem;
  right: 1rem;
  font-size: 5rem;
}

.sidenav .close-btn:hover {
  background: initial;
  transform: scale(1.2);
}
Copier après la connexion

Le style CSS ci-dessus sépare notre bouton de fermeture des autres liens de la navigation latérale. Nous avons appliqué un positionnement absolu au bouton de fermeture et empêché son arrière-plan de devenir gris clair au survol. Sa taille augmente également de 20 % lorsque l’utilisateur le survole.

Le CSS suivant garantira désormais que la position du contenu principal se déplace en synchronisation avec le menu de navigation en utilisant la même durée de transition et la même fonction d'assouplissement. Le placement overflow-x 属性的值设置为 hidden garantit qu'aucune barre de défilement horizontale n'apparaît lorsque le contenu se déplace.

#main {
  transition: margin-left 0.4s cubic-bezier(0.18, 0.89, 0.32, 1.28);
  padding: 20px;
  width: 100%;
}

body {
 overflow-x: hidden; 
}
Copier après la connexion

Nous pouvons également ajouter un petit mouvement de rotation à l'icône du hamburger à l'aide du CSS suivant. Il fait pivoter l'icône du hamburger de 180 degrés en 0,5 seconde.

a svg {
  transition: all 0.5s ease;
}
a svg:hover {
  transform: rotate(180deg);
}
Copier après la connexion

Enfin, rendons le menu de navigation réactif en ajustant l'espacement et la taille des liens à l'aide du CSS suivant. Cela garantit que le menu ne s'étend pas hors de portée sur les écrans avec moins d'espace vertical.

@media screen and (max-height: 480px) {
  .sidenav {
    padding-top: 3rem;
  }
  .sidenav a {
    font-size: 1.5rem;
  }
}
Copier après la connexion

À ce stade, votre menu de navigation devrait ressembler à la démo CodePen suivante.

4. Supprimer le diaporama

Pour faire apparaître le menu sans animation de diapositive, modifiez simplement la propriété CSS transition comme indiqué dans la forme abrégée ci-dessous :

.sidenav {
    transition: 0s; 
}

#main {
    transition: margin-left 0s;
}
Copier après la connexion

Cela fera apparaître les modifications immédiatement puisqu'il n'y a aucun délai spécifié dans transition 中没有指定延迟。我们使用的默认值是 0.5s. La valeur par défaut que nous utilisons est 0,5s.

Conclusion

Créer un menu latéral ne nécessite que quelques lignes de code et ne nécessite pas beaucoup de ressources. Rendez votre code réactif aux différentes résolutions d'écran de l'appareil en modifiant votre CSS en ajoutant des requêtes multimédias pour vos cas spécifiques.

Pour aller plus loin, vous souhaiterez peut-être utiliser un framework CSS comme Bootstrap ou Bulma pour styliser votre menu.

Cet article a été mis à jour avec une contribution de Monty Shokeen. Monty est un développeur full-stack qui aime également écrire des tutoriels et apprendre de nouvelles bibliothèques JavaScript.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn

Outils d'IA chauds

Undresser.AI Undress

Undresser.AI Undress

Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover

AI Clothes Remover

Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool

Undress AI Tool

Images de déshabillage gratuites

Clothoff.io

Clothoff.io

Dissolvant de vêtements AI

Video Face Swap

Video Face Swap

Échangez les visages dans n'importe quelle vidéo sans effort grâce à notre outil d'échange de visage AI entièrement gratuit !

Outils chauds

Bloc-notes++7.3.1

Bloc-notes++7.3.1

Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise

SublimeText3 version chinoise

Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1

Envoyer Studio 13.0.1

Puissant environnement de développement intégré PHP

Dreamweaver CS6

Dreamweaver CS6

Outils de développement Web visuel

SublimeText3 version Mac

SublimeText3 version Mac

Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Que dois-je faire si je rencontre l'impression de code brouillé pour les reçus en papier thermique frontal? Que dois-je faire si je rencontre l'impression de code brouillé pour les reçus en papier thermique frontal? Apr 04, 2025 pm 02:42 PM

Des questions et des solutions fréquemment posées pour l'impression de billets thermiques frontaux pour le développement frontal, l'impression de billets est une exigence commune. Cependant, de nombreux développeurs mettent en œuvre ...

Démystifier javascript: ce qu'il fait et pourquoi c'est important Démystifier javascript: ce qu'il fait et pourquoi c'est important Apr 09, 2025 am 12:07 AM

JavaScript est la pierre angulaire du développement Web moderne, et ses principales fonctions incluent la programmation axée sur les événements, la génération de contenu dynamique et la programmation asynchrone. 1) La programmation axée sur les événements permet aux pages Web de changer dynamiquement en fonction des opérations utilisateur. 2) La génération de contenu dynamique permet d'ajuster le contenu de la page en fonction des conditions. 3) La programmation asynchrone garantit que l'interface utilisateur n'est pas bloquée. JavaScript est largement utilisé dans l'interaction Web, les applications à une page et le développement côté serveur, améliorant considérablement la flexibilité de l'expérience utilisateur et du développement multiplateforme.

Qui est payé plus de python ou de javascript? Qui est payé plus de python ou de javascript? Apr 04, 2025 am 12:09 AM

Il n'y a pas de salaire absolu pour les développeurs Python et JavaScript, selon les compétences et les besoins de l'industrie. 1. Python peut être davantage payé en science des données et en apprentissage automatique. 2. JavaScript a une grande demande dans le développement frontal et complet, et son salaire est également considérable. 3. Les facteurs d'influence comprennent l'expérience, la localisation géographique, la taille de l'entreprise et les compétences spécifiques.

Comment fusionner les éléments du tableau avec le même ID dans un seul objet en utilisant JavaScript? Comment fusionner les éléments du tableau avec le même ID dans un seul objet en utilisant JavaScript? Apr 04, 2025 pm 05:09 PM

Comment fusionner les éléments du tableau avec le même ID dans un seul objet en JavaScript? Lors du traitement des données, nous rencontrons souvent la nécessité d'avoir le même ID ...

JavaScript est-il difficile à apprendre? JavaScript est-il difficile à apprendre? Apr 03, 2025 am 12:20 AM

Apprendre JavaScript n'est pas difficile, mais c'est difficile. 1) Comprendre les concepts de base tels que les variables, les types de données, les fonctions, etc. 2) Master la programmation asynchrone et les implémenter via des boucles d'événements. 3) Utilisez les opérations DOM et promettez de gérer les demandes asynchrones. 4) Évitez les erreurs courantes et utilisez des techniques de débogage. 5) Optimiser les performances et suivre les meilleures pratiques.

Comment réaliser des effets de défilement de parallaxe et d'animation des éléments, comme le site officiel de Shiseido?
ou:
Comment pouvons-nous réaliser l'effet d'animation accompagné d'un défilement de page comme le site officiel de Shiseido? Comment réaliser des effets de défilement de parallaxe et d'animation des éléments, comme le site officiel de Shiseido? ou: Comment pouvons-nous réaliser l'effet d'animation accompagné d'un défilement de page comme le site officiel de Shiseido? Apr 04, 2025 pm 05:36 PM

La discussion sur la réalisation des effets de défilement de parallaxe et d'animation des éléments dans cet article explorera comment réaliser le site officiel de Shiseido (https://www.shiseido.co.jp/sb/wonderland/) ...

La différence dans Console.Log de sortie Résultat: Pourquoi les deux appels sont-ils différents? La différence dans Console.Log de sortie Résultat: Pourquoi les deux appels sont-ils différents? Apr 04, 2025 pm 05:12 PM

Discussion approfondie des causes profondes de la différence de sortie Console.log. Cet article analysera les différences dans les résultats de sortie de la fonction Console.log dans un morceau de code et expliquera les raisons derrière. � ...

Comment implémenter la fonction de glisser-déposer et de régler la fonction de réglage similaire à VScode dans le développement frontal? Comment implémenter la fonction de glisser-déposer et de régler la fonction de réglage similaire à VScode dans le développement frontal? Apr 04, 2025 pm 02:06 PM

Explorez la mise en œuvre de la fonction de glisser et de réglage du panneau de type VScode dans le frontal. Dans le développement frontal, comment implémenter un VScode comme ...

See all articles