Probleme menu
Max0123456
Messages postés
97
Date d'inscription
Statut
Membre
Dernière intervention
-
Pitet Messages postés 2826 Date d'inscription Statut Membre Dernière intervention -
Pitet Messages postés 2826 Date d'inscription Statut Membre Dernière intervention -
Bonjour,
Une box s'affiche quand je suis sur la page d'accueil et quand je passe la souris au dessus des menus.


Je voudrais que la box indique sur quelle page on est. Par exemple Accueil si on est sur la page Accueil, A Propos si on est sur la page A Propos.
Le problème est que lorsque je clique sur A Propos par exemple, la box Acceuil est toujours sélectionné. J'ai créé un fichier css pour chaque page. j'ai rajouté
Après avoir fait ceci (quand je clique sur service) :

mon code html :
mon code css :
Une box s'affiche quand je suis sur la page d'accueil et quand je passe la souris au dessus des menus.


Je voudrais que la box indique sur quelle page on est. Par exemple Accueil si on est sur la page Accueil, A Propos si on est sur la page A Propos.
Le problème est que lorsque je clique sur A Propos par exemple, la box Acceuil est toujours sélectionné. J'ai créé un fichier css pour chaque page. j'ai rajouté
<link rel="stylesheet" href="index.css">dans le html et
a:active { color: #12ab0d; }dans la nouveau fichier css
Après avoir fait ceci (quand je clique sur service) :
mon code html :
<!DOCTYPE html> <html lang="fr"> <head> <title>Accueil</title> <meta charset="utf-8"/> <link rel="stylesheet" href="menu.css"> <link rel="stylesheet" href="index.css"> <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.15.4/css/all.min.css"> </head> <body> <header> <div class="bar-menu"> <nav> <ul> <li class="active"><a href="index.html"><i class="fas fa-home"></i>Accueil</a></li> <li> <a href="page1.html"><i class="fas fa-clone"></i>Services</a> <div class="sous-menu1"> <ul> <li><a href="#">aaa</a></li> <li><a href="#">aaa</a></li> <li><a href="#">aaa</a></li> </ul> </div> </li> <li> <a href="page2.html"><i class="fas fa-user"></i>A propos</a> <div class="sous-menu1"> <ul> <li><a href="#">bbbbb</a></li> <li class="hover-me"> <a href="#">ccccc</a><i class="fas fa-angle-right"></i> <div class="sous-menu2"> <ul> <li><a href="#">1</a></li> <li><a href="#">2</a></li> <li><a href="#">3</a></li> </ul> </div> </li> <li class="hover-me"> <a href="#">ddddd</a><i class="fas fa-angle-right"></i> <div class="sous-menu2"> <ul> <li><a href="#">1</a></li> <li><a href="#">2</a></li> <li><a href="#">3</a></li> <li><a href="#">4</a></li> <li><a href="#">5</a></li> </ul> </div> </li> </ul> </div> </li> <li><a href="page3.html"><i class="fas fa-users"></i>Clients</a></li> <li><a href="page4.html"><i class="fas fa-tags"></i>Prix</a></li> <li><a href="page5.html"><i class="fas fa-edit"></i>Design</a></li> <li><a href="page6.html"><i class="fas fa-phone"></i>Contact</a></li> </ul> </nav> </div> </header> </body> </html>
mon code css :
{ padding: 0; margin: 0; box-sizing: border-box; } body{ background-image: url(backgroud.jpg); background-size: cover; background-position: center; font-family: sans-serif; padding: 0; margin: 0; } .bar-menu{ background: rgb(0,100,0); text-align: center; padding: 0; margin: 0; } .bar-menu ul{ display: inline-flex; list-style: none; color: #fff; } .bar-menu ul li{ width: 120px; margin: 15px; padding: 15px; } .bar-menu ul li a{ text-decoration: none; color: #fff; } .active, .bar-menu ul li:hover{ background: #12ab0d; border-radius: 3px; } .bar-menu .fas{ margin-right: 5px; } .sous-menu1{ display: none; } .bar-menu ul li:hover .sous-menu1{ display: block; position: absolute; background: rgb(0,100,0); margin-top: 15px; margin-left: -15px; } .bar-menu ul li:hover .sous-menu1 ul{ display: block; margin: 10px; } .bar-menu ul li:hover .sous-menu1 ul li{ width: 150px; padding: 10px; border-bottom: 1px dotted #fff; background: transparent; border-radius: 0; text-align: left; } .bar-menu ul li:hover .sous-menu1 ul li:last-child{ border-bottom: none; } .bar-menu ul li:hover .sous-menu1 ul li a:hover{ color: #b2ff00; } .fa-angle-right{ float: right; } .sous-menu2{ display: none; } .hover-me:hover .sous-menu2{ position: absolute; display: block; margin-top: -40px; margin-left: 140px; background: rgb(0,100,0) }
A voir également:
- Probleme menu
- Menu déroulant excel - Guide
- Canon quick menu - Télécharger - Utilitaires
- Windows 11 menu contextuel classique - Guide
- Windows 11 menu démarrer classique - Guide
- Réinitialiser menu démarrer windows 10 - Guide
4 réponses
Bonjour,
Ton menu fonctionne correctement.
Le menu qui reste affiché avec une couleur plus claire vient de la classe "active" qui est appliqué sur la balise li qui contient le menu.
Il me semble que tu utilises PHP pour ton site. Une solution possible est donc de récupérer la page active en PHP et modifier le menu html pour appliquer la classe "active" sur la balise li du menu correspondant à la page visité.
Par exemple si j'applique la classe "active" sur la balise li qui contient le menu Service, c'est bien ce menu qui restera avec une couleur plus claire : https://jsfiddle.net/Lq2ma85n/
Au passage tu as une erreur de syntaxe sur la première règle de ton fichier css : il manque le sélecteur css pour cette règle.
Il faudrait à priori appliquer cette règle sur le sélecteur "html" (évite d'appliquer cette règle sur le sélecteur "*" si c'était le cas) :
Ton menu fonctionne correctement.
Le menu qui reste affiché avec une couleur plus claire vient de la classe "active" qui est appliqué sur la balise li qui contient le menu.
Il me semble que tu utilises PHP pour ton site. Une solution possible est donc de récupérer la page active en PHP et modifier le menu html pour appliquer la classe "active" sur la balise li du menu correspondant à la page visité.
Par exemple si j'applique la classe "active" sur la balise li qui contient le menu Service, c'est bien ce menu qui restera avec une couleur plus claire : https://jsfiddle.net/Lq2ma85n/
Au passage tu as une erreur de syntaxe sur la première règle de ton fichier css : il manque le sélecteur css pour cette règle.
Il faudrait à priori appliquer cette règle sur le sélecteur "html" (évite d'appliquer cette règle sur le sélecteur "*" si c'était le cas) :
html { padding: 0; margin: 0; box-sizing: border-box; } /* ... suite du code css ... */
Je n'ai donc pas besoin de créer un fichier css pour chaque menu. Je mets juste
Quand je clique sur "A Propos", il se décale et son sous-menu disparait

<li class="active">au bon endroit. Je n'utilise pas PHP.
Quand je clique sur "A Propos", il se décale et son sous-menu disparait
<!DOCTYPE html> <html lang="fr"> <head> <title>DesignType</title> <meta charset="utf-8"/> <link rel="stylesheet" href="menu.css"> <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.15.4/css/all.min.css"> </head> <body> <header> <div class="bar-menu"> <nav> <ul> <li><a href="index.html"><i class="fas fa-home"></i>Accueil</a></li> <li> <a href="page1.html"><i class="fas fa-clone"></i>Services</a> <div class="sous-menu1"> <ul> <li><a href="#">aaa</a></li> <li><a href="#">aaa</a></li> <li><a href="#">aaa</a></li> </ul> </div> </li> <li> <li class="active"> <a href="page2.html"><i class="fas fa-user"></i>A propos</a></li> <div class="sous-menu1"> <ul> <li><a href="#">bbbbb</a></li> <li class="hover-me"> <a href="#">ccccc</a><i class="fas fa-angle-right"></i> <div class="sous-menu2"> <ul> <li><a href="#">1</a></li> <li><a href="#">2</a></li> <li><a href="#">3</a></li> </ul> </div> </li> <li class="hover-me"> <a href="#">ddddd</a><i class="fas fa-angle-right"></i> <div class="sous-menu2"> <ul> <li><a href="#">1</a></li> <li><a href="#">2</a></li> <li><a href="#">3</a></li> <li><a href="#">4</a></li> <li><a href="#">5</a></li> </ul> </div> </li> </ul> </div> </li> <li><a href="page3.html"><i class="fas fa-users"></i>Clients</a></li> <li><a href="page4.html"><i class="fas fa-tags"></i>Prix</a></li> <li><a href="page5.html"><i class="fas fa-edit"></i>Design</a></li> <li><a href="page6.html"><i class="fas fa-phone"></i>Contact</a></li> </ul> </nav> </div> </header> </body> </html>
Attention à la syntaxe html (pense à utiliser le validateur w3c pour corriger les erreurs html) :
- tu as une balise <li> en trop ligne 26
- à la fin de la ligne 27, tu as une balise fermante </li> qui est incorrecte. Si le sous menu juste en dessous doit être inclus dans le menu "A propos", cette balise fermante </li> devrait se situer après la balise fermante </div> correspondant au sous-menu
https://jsfiddle.net/n08wLx2d/
Effectivement pas besoin de créer un fichier css pour chaque page.
Sans PHP, il suffit effectivement d'appliquer la classe active sur le bon menu pour chaque page html.
- tu as une balise <li> en trop ligne 26
- à la fin de la ligne 27, tu as une balise fermante </li> qui est incorrecte. Si le sous menu juste en dessous doit être inclus dans le menu "A propos", cette balise fermante </li> devrait se situer après la balise fermante </div> correspondant au sous-menu
<header> <div class="bar-menu"> <nav> <ul> <li><a href="index.html"><i class="fas fa-home"></i>Accueil</a></li> <li> <a href="page1.html"><i class="fas fa-clone"></i>Services</a> <div class="sous-menu1"> <ul> <li><a href="#">aaa</a></li> <li><a href="#">aaa</a></li> <li><a href="#">aaa</a></li> </ul> </div> </li> <li class="active"> <a href="page2.html"><i class="fas fa-user"></i>A propos</a> <div class="sous-menu1"> <ul> <li><a href="#">bbbbb</a></li> <li class="hover-me"> <a href="#">ccccc</a><i class="fas fa-angle-right"></i> <div class="sous-menu2"> <ul> <li><a href="#">1</a></li> <li><a href="#">2</a></li> <li><a href="#">3</a></li> </ul> </div> </li> <li class="hover-me"> <a href="#">ddddd</a><i class="fas fa-angle-right"></i> <div class="sous-menu2"> <ul> <li><a href="#">1</a></li> <li><a href="#">2</a></li> <li><a href="#">3</a></li> <li><a href="#">4</a></li> <li><a href="#">5</a></li> </ul> </div> </li> </ul> </div> </li> <li><a href="page3.html"><i class="fas fa-users"></i>Clients</a></li> <li><a href="page4.html"><i class="fas fa-tags"></i>Prix</a></li> <li><a href="page5.html"><i class="fas fa-edit"></i>Design</a></li> <li><a href="page6.html"><i class="fas fa-phone"></i>Contact</a></li> </ul> </nav> </div> </header>
https://jsfiddle.net/n08wLx2d/
Effectivement pas besoin de créer un fichier css pour chaque page.
Sans PHP, il suffit effectivement d'appliquer la classe active sur le bon menu pour chaque page html.
J'ai enlevé tous les menus après A Propos.
Mon code est il correct ?
Mon code est il correct ?
<!DOCTYPE html> <html lang="fr"> <head> <title>DesignType</title> <meta charset="utf-8"/> <link rel="stylesheet" href="menu.css"> <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.15.4/css/all.min.css"> </head> <body> <header> <div class="bar-menu"> <nav> <ul> <li><a href="index.html"><i class="fas fa-home"></i>Accueil</a></li> <li> <a href="page1.html"><i class="fas fa-clone"></i>Services</a> <div class="sous-menu1"> <ul> <li><a href="#">aaa</a></li> <li><a href="#">aaa</a></li> <li><a href="#">aaa</a></li> </ul> </div> </li> <li class="active"> <a href="page2.html"><i class="fas fa-user"></i>A propos</a> </li> </li> </ul> </nav> </div> </header> </body> </html> </html>
Non tu as encore quelques erreurs de syntaxe :
- une balise fermante </div> en trop ligne 29
- une balise fermante </li> en trop ligne 30
- une balise fermante </ul> en trop ligne 31
Au passage, la balise meta charset devrait être la première balise dans le head du document html :
- une balise fermante </div> en trop ligne 29
- une balise fermante </li> en trop ligne 30
- une balise fermante </ul> en trop ligne 31
Au passage, la balise meta charset devrait être la première balise dans le head du document html :
<!DOCTYPE html> <html lang="fr"> <head> <meta charset="utf-8"/> <title>DesignType</title> <link rel="stylesheet" href="menu.css"> <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.15.4/css/all.min.css"> </head> <body> <header> <div class="bar-menu"> <nav> <ul> <li><a href="index.html"><i class="fas fa-home"></i>Accueil</a></li> <li> <a href="page1.html"><i class="fas fa-clone"></i>Services</a> <div class="sous-menu1"> <ul> <li><a href="#">aaa</a></li> <li><a href="#">aaa</a></li> <li><a href="#">aaa</a></li> </ul> </div> </li> <li class="active"> <a href="page2.html"><i class="fas fa-user"></i>A propos</a> </li> </ul> </nav> </div> </header> </body> </html>
J'ai un problème pour la page2 quand je clique sur "Services" :
(j'ai ajouté un logo dans le header mais cela n'a rien à voir avec le problème)
(j'ai ajouté un logo dans le header mais cela n'a rien à voir avec le problème)
<!DOCTYPE html> <html lang="fr"> <head> <meta charset="utf-8"/> <title>DesignType</title> <link rel="stylesheet" href="menu.css"> <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.15.4/css/all.min.css"> </head> <body> <header> <div class="bar-menu"> <a href="index.html"><img src="DT.png" alt="Logo"/></a> <nav> <ul> <li><a href="index.html"><i class="fas fa-home"></i>Accueil</a></li> <li> <a href="page1.html"><i class="fas fa-clone"></i>Services</a> <div class="sous-menu1"> <ul> <li><a href="#">aaa</a></li> <li><a href="#">aaa</a></li> <li><a href="#">aaa</a></li> </ul> </div> </li> <li class="active"> <a href="page2.html"><i class="fas fa-user"></i>A propos</a> </li> </ul> </nav> </div> </header> </body> </html>
Tu dois donc avoir des erreurs dans le fichier page1.html.
Ton menu sur page1.html : https://jsfiddle.net/4wqs0j76/
Ton menu sur page2.html : https://jsfiddle.net/4wqs0j76/1/
(j'ai seulement déplacé la classe "active" sur le menu actif)
Ton menu sur page1.html : https://jsfiddle.net/4wqs0j76/
Ton menu sur page2.html : https://jsfiddle.net/4wqs0j76/1/
(j'ai seulement déplacé la classe "active" sur le menu actif)