Problème CSS adaptation de mon menu
Résolu
Tzmagnum
Messages postés
132
Statut
Membre
-
Tzmagnum Messages postés 132 Statut Membre -
Tzmagnum Messages postés 132 Statut Membre -
Bonjour,
J'ai un petit soucis avec le css de mon menu, je vous explique j'aimerais que la largeur de mon menu s'adapte automatiquement à mon text.
Pour éviter d'avoir une menu sur 2 lignes, mais bien sur une ligne.
Et les textes des sous menu se mette parfois sur 2 lignes aussi quand le texte est trop long.
Sauriez-vous me dire ce que je dois changer svp ?
Merci d'avance.
Mon code css :
J'ai un petit soucis avec le css de mon menu, je vous explique j'aimerais que la largeur de mon menu s'adapte automatiquement à mon text.
Pour éviter d'avoir une menu sur 2 lignes, mais bien sur une ligne.
Et les textes des sous menu se mette parfois sur 2 lignes aussi quand le texte est trop long.
Sauriez-vous me dire ce que je dois changer svp ?
Merci d'avance.
Mon code css :
ul#nav {
color: #232223;
display:block;
float:left;
font: 13px/23px Georgia,"Times New Roman",Times,serif;
padding-bottom: 5px;
}
ul#nav,ul#nav ul {
list-style:none;
}
ul#nav .subs {
background-color: #FDF1B8;
border:1px solid #F5F5DC;
display:none;
float:left;
left:0;
padding:7px;
position:absolute;
top:100%;
}
ul#nav li:hover>* {
display:block;
}
ul#nav li:hover {
position:relative;
}
ul#nav ul .subs {
left:100%;
position:absolute;
top:0;
}
ul#nav ul {
padding:0 3px 3px;
}
ul#nav li {
display:inline;
float:left;
}
ul#nav a {
color: #FEFEFE;
float: left;
font-size: 13px;
letter-spacing: 1px;
line-height: 14px;
min-width:60px;
padding: 60px 20px;
text-align: left;
text-decoration: none;
text-shadow: 1px 1px 0 #F5F5DC;
text-transform: uppercase;
}
ul#nav > li:hover > a {
border-top: 5px solid #F5F5DC;
color: #1e1e1e;
padding-top: 55px;
}
ul#nav li a.current, ul#nav li a.current:hover {
background: url("../images/nav_current.png") no-repeat scroll center top transparent;
border: medium none;
color: #F5F5DC;
padding-top: 60px;
text-shadow: none;
}
ul#nav ul a {
color:#000;
font-size:10px;
font-weight:bold;
padding:5px;
text-shadow:#F5F5DC 0 0 0;
border-radius:0;
-moz-border-radius:0;
-webkit-border-radius:0;
}
ul#nav ul li:hover>a {
letter-spacing:2px;
}
Configuration: Windows / Chrome 92.0.4515.107
A voir également:
- Problème CSS adaptation de mon 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
5 réponses
Biensûr,
<?php
header('Content-type: text/html; charset=utf-8')
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr" lang="fr">
<head>
<meta charset="utf-8" />
<title>Menu</title>
<link rel="stylesheet" href="css/menu.css" type="text/css" media="screen">
</head>
<body>
<div class="container">
<div class="content">
<ul id="nav">
<li><a href="#" class="current">Accueil</a></li>
<li><a href="#">Rétroplanning</a></li>
<li><a href="#">Conditions</a></li>
<li><a href="#">Templates</a>
<ul class="subs">
<li><a href="#">Clients</a></li><br>
<li><a href="#">MO</a></li><br>
<li><a href="#">MO Suivi</a></li><br>
<li><a href="#">OM/BM</a></li><br>
<li><a href="#">Rétroplanning</a></li>
</ul>
</li>
<li><a href="#">Escalations</a>
<ul class="subs">
<li><a href="#">OM/BM</a></li><br>
<li><a href="#">MO</a></li><br>
</ul>
</li>
<li><a href="#">Formation</a>
<ul class="subs">
<li><a href="#">E-Learning & Quiz</a></li><br>
<li><a href="#">Instruction</a></li>
<li><a href="#">Statistiques</a></li>
</ul>
</li>
<li><a href="#">Travail individuel</a>
<ul class="subs">
<li><a href="#">Kevin</a></li><br>
<li><a href="#">Pierre</a></li><br>
<li><a href="#">Romain</a></li><br>
<li><a href="#">Jacques</a></li><br>
<li><a href="#">Jean</a></li>
</ul>
</li>
<li><a href="#">FAQ</a></li>
<li><a href="mailto:?to=test@test.be &subject=Contact%20:%20Projet%20test">Nous contacter</a></li>
<li><a href="#">Remerciements</a></li>
</ul>
</div>
</div>
<br /><br />
</body>
</html>
Pour que les éléments du menu et des sous-menu soient sur une seule ligne, tu peux ajouter la règle css white-space: nowrap; sur le sélecteur css ul#nav a :
Au passage, peut-être mettre à jour le doctype de ton document html en utilisant html5 ?
https://www.w3schools.com/tags/tag_doctype.asp
ul#nav a {
white-space: nowrap;
/* [...] */
Au passage, peut-être mettre à jour le doctype de ton document html en utilisant html5 ?
<!DOCTYPE html> <html lang="fr"> <!-- [...] -->
https://www.w3schools.com/tags/tag_doctype.asp
Etrange, sur mon test avec ton code css et html, en ajoutant le nowrap, le menu "E-learning & Quiz" reste bien sur une seule ligne : https://jsfiddle.net/29ejwzyn/
En inspectant l'élément html avec l'outil de développement du navigateur, la règle white-space: nowrap; est-elle bien appliquée ? Rafraichissement du cache ?
Peux tu nous donner le lien de la page si celle-ci est accessible en ligne ? (Tu peux me l'envoyer par message privé si tu ne veux pas que l'URL soit publique)
En inspectant l'élément html avec l'outil de développement du navigateur, la règle white-space: nowrap; est-elle bien appliquée ? Rafraichissement du cache ?
Peux tu nous donner le lien de la page si celle-ci est accessible en ligne ? (Tu peux me l'envoyer par message privé si tu ne veux pas que l'URL soit publique)
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Le soucis vient surement du fait que ton menu est positionné en flottant (ul#nav { float: left; }), l'élément div.container qui contient le menu ne prends donc pas en compte la taille de l'élément flottant inclus.
Une solution simple pour corriger ceci est d'appliquer un overflow: auto sur le conteneur qui contient l'élément flottant en créant par exemple une classe clearfix :
https://jsfiddle.net/29ejwzyn/1/
https://fr.learnlayout.com/clearfix.html
https://www.w3schools.com/howto/howto_css_clearfix.asp
Une solution simple pour corriger ceci est d'appliquer un overflow: auto sur le conteneur qui contient l'élément flottant en créant par exemple une classe clearfix :
<div class="container clearfix">
<div class="content">
<ul id="nav">
<!-- ... -->
</ul>
</div>
</div>
.clearfix {
overflow: auto;
}
https://jsfiddle.net/29ejwzyn/1/
https://fr.learnlayout.com/clearfix.html
https://www.w3schools.com/howto/howto_css_clearfix.asp
La solution avec le "overflow: auto;" n'est qu'un exemple de solution pour gérer les soucis de positionnement avec float. As tu essayé le deuxième (meilleur) exemple proposé sur w3shcools ?
Avec des images je ne peux faire que des suppositions, il faudrait le code html/css pour t'aider plus précisément.
.clearfix::after {
content: "";
clear: both;
display: table;
}
Avec des images je ne peux faire que des suppositions, il faudrait le code html/css pour t'aider plus précisément.

