Étapes simples pour créer une barre de navigation fixe

Lors de la conception d'un système de navigation pour votre site Web, il est important de prendre en compte les modifications dynamiques permettant de gérer l'assistance mobile et les conceptions réactives. Mais une autre approche systématique consiste à garder vos visiteurs en contrôle total tout au long du processus de visualisation. Cela nécessite souvent un menu d'accès rapide ou une zone de liste déroulante pour extraire les liens vers d'autres pages Web.

Dans ce didacticiel, je vais créer une barre de navigation supérieure qui apparaît uniquement après le déplacement au-delà de la navigation dans l'en-tête. Cet effet est intéressant si vous avez quelques pages qui sont le plus souvent consultées par les visiteurs. La barre de navigation collante restera fixée en haut de l'écran et ne disparaîtra que lorsque vous entrerez de nouveau dans la zone de navigation d'en-tête. Pour avoir une idée de ce que nous allons faire, consultez mon exemple de démonstration en direct après le saut!

Live Demo - Télécharger le code source

Structurer le document

Nous devons d’abord créer l’espace de travail du projet et construire le code HTML original. Il est à noter que nous aurons besoin d’utiliser jQuery avec les effets CSS.

Créer un nouvel ensemble de documents nommés index.html et styles.css dans le même répertoire. J'utilise une image de fond personnalisée et une bannière de logo dans la section en-tête. Vous pouvez télécharger ces ressources avec mon code source si vous voulez gagner du temps. Maintenant, dans le fichier d'index principal, nous devons configurer un doctype HTML5 et ajouter les liens associés.

Heureusement, beaucoup des ressources dont nous avons besoin peuvent être hébergées à l'extérieur. Notre police Web personnalisée, appelée Capriola, a pour style le texte de l'en-tête. Nous avons également besoin d'une copie de la dernière bibliothèque jQuery hébergée à partir du code CDN de Google. La plupart de ces éléments doivent être familiers. Passons maintenant au contenu du corps.

Blocs de construction HTML

La mise en page n'est pas aussi compliquée que vous pourriez le penser. Tout en haut, après avoir ouvert la balise body, nous devons configurer la barre de navigation fixe. Cet élément utilisera affichage: aucun; rester initialement caché jusqu’à ce que vous ayez fait défiler un peu la page

L'élément UL interne centre tous les liens afin qu'ils soient au même endroit que le contenu principal. Ensuite, sous cette barre de navigation, nous configurons l’encapsuleur principal qui centre la page à une largeur de 710 pixels, moins 30 pixels pour le remplissage. Le total s'élève à 680px, ce qui est la taille idéale pour le billet de faveur de Pontus Johansson utilisé dans la conception de la bannière.

La barre de navigation principale contient exactement les mêmes liens que ceux que nous conservons dans la barre d’en-tête fixe. Cela a été conçu de manière à ce que votre conception soit modifiée, mais vous pouvez changer les choses et ne placer que les liens les plus importants dans votre navigation fixe. L'en-tête peut contenir des menus déroulants qui semblent également déplacés dans une barre de navigation fixe coulissante.

Personnaliser CSS

Avant de manipuler le bref extrait de JavaScript, laissez-moi vous expliquer comment nous pouvons styler tout ce code. Tout d'abord, j'utilise un style de réinitialisation plus personnalisé, basé sur la feuille de style d'origine d'Eric Meyer. J'ai défini le taille de la boîte propriété comme boîte à bordure de sorte que les valeurs de largeur exactes incluent marge / remplissage et non pas développer, comme le comportement par défaut.

L'image d'arrière-plan utilise Debut Dark du site Web Subtle Patterns. Il existe de nombreuses textures répétitives fantastiques que vous pouvez télécharger gratuitement pour améliorer la qualité de vos mises en page. Mais pour passer à la structure principale, nous devons configurer un conteneur d’emballage afin qu’il remplisse naturellement le contenu central. De plus, l'arrière-plan doit apparaître en blanc dans la zone de contenu, mais pas dans la section d'en-tête complète.

J'ai configuré un dégradé d'arrière-plan répétitif très coloré dans le menu de navigation principal. En utilisant également une hauteur fixe pour la barre, nous pouvons configurer la même valeur fixe pour hauteur de la ligne propriétés sur les éléments de la liste. Cela force tout le texte à être centré verticalement dans le conteneur navbar. J'ai inclus quelques propriétés de transition CSS3 pour gérer un état de survol plus élégant.

Correction de la barre de navigation cachée

Au bas de notre feuille de style CSS, vous trouverez tous les codes liés à notre navigation en haut fixe. Le conteneur couvre 100% de la largeur de la page afin que la barre apparaisse sur tout l'écran. Mais l'objet UL interne contient tous les liens centrés à la même position que notre contenu. La couleur de fond est également appliquée à l'aide de la syntaxe rgba () pour la transparence alpha.

Encore une fois, nous pouvons voir une hauteur fixe à 80px qui est assez grande par rapport à l'original. Mais cela attire votre attention et les liens sont très faciles à manœuvrer. Je souhaitais conserver un effet d'animation similaire en utilisant les transitions CSS3 en survol. Ainsi, les liens remplissent un autre fond de 30% qui apparaît plus sombre, mais toujours transparent pour le contenu derrière.

Gestion des animations JavaScript

Je regarde tout au bas de notre fichier index.html avant la clôture finale étiquette. Ici, je veux ajouter un petit peu de JavaScript qui gérera les effets de défilement pour afficher et masquer la barre de navigation fixe. Nous pouvons ventiler ligne par ligne les choses les plus compliquées.

L'appel jQuery typique suspend l'exécution du DOM avant de lancer le rendu avant d'exécuter des codes. On peut aussi ignorer le premier bloc qui utilise la ligne e.preventDefault (); pour arrêter les liens d'ancrage du chargement. Les éléments les plus importants sont gérés dans l'écouteur d'événements pour $ (fenêtre) .on ('scroll') qui lance une nouvelle fonction à chaque fois que l'utilisateur fait défiler l'écran vers le haut ou vers le bas.

La variable? Scrolltop? contient la valeur en pixels à partir du haut de l'écran. Cela mettra à jour chaque fois que l'utilisateur fait défiler vers un nouvel emplacement. En utilisant cette valeur, nous pouvons vérifier si l'utilisateur a fait défiler au-delà de 215px et, le cas échéant, afficher la barre de navigation masquée. Par contre, s'ils défilent à 210 pixels ou moins, nous savons que la barre de navigation de l'en-tête principal est visible. Nous masquons donc la barre de navigation fixe et éclaircissons l'espace à l'écran.

Live Demo - Télécharger le code source

Dernières pensées

Bien qu'il s'agisse d'un effet relativement simple, le code peut prêter à confusion si vous ne connaissez pas JavaScript. Passez un peu de temps à parcourir mes extraits pour vous assurer de bien comprendre comment nous affichons et cachons le menu. N'hésitez pas également à télécharger une copie du code source de mon projet et à vous débrouiller seul. Si vous souhaitez supprimer des questions ou des commentaires sur ce didacticiel, faites-le nous savoir dans le fil de discussion après discussion.