5568 sujets

Sémantique web et HTML

Salut à vous

Je viens demander votre aide, j'ai du mal avec le css, et encore plus avec le responsive.

J'aurais besoin de rendre mon menu responsive, en évitant au maximum le Js, afin de toucher tout le monde, même ceux qui n'aime pas Js (Hé oui ça existe ^^)

Pourriez vous m'aider à réaliser ceci?
Je souhaiterais qu'il est le comportement de ce menu :
Menu responsive à imiter, pour la version mobile, et pour la version tablète, que le menu se compresse en deux lignes comme sur cet exemple.

Je joint le html et le css, sachant que le menu est dynamique, donc susceptible d'avoir au maximum 9 menu (accueil et contact compris), ainsi que des sous-sous-menus.

Je vous remercie d'avance.

Cordialement

Html du menu (2 menus avec sous-menu)
<div id="navi" class="fixed-top">
		<ul id="menu">
			<li><a href="./">Accueil</a></li>
			<li>
				<a href="#">Menu 1 &#9660;</a>
				<ul>
					<li><a href="./sousmenu1">› Un long Sous Menu 1 de 40 caratères ---</a></li>
					<li><a href="./sousmenu2">› Sous Menu 2</a></li>
					<li><a href="./sousmenu3">› Sous Menu 3</a></li>
				</ul>
			</li>
			<li>
				<a href="#">Menu 2 &#9660;</a>
				<ul>
					<li><a href="./sousmenu12">› Sous Menu 1-2</a></li>
				</ul>
			</li>
			<li><a href="">Menu 3 &#9660;</a>
				<ul>
					<li><a href="">Sous sous-menu</a>
						<ul>
							<li><a href="./ssmenu">Contenu dous s-s-menu</a></li>
							<li><a href="./ssmenu">Contenu dous s-s-menu</a></li>
						</ul>
					</li>
					<li><a href="./contact">Sous sous-menu 1</a></li>
				</ul>
			</li>
			<li><a href="./contact">Contact</a></li>
		</ul>
	</div>


Css (les sous-sous-menu ne sont pas encore stylisés entièrement actuellement)
#navi{
 /* bordures */
 border-bottom: 2px solid #000;
 /* Background */
 background-color:#52575c;
 background-image:-moz-linear-gradient(top, #3a3f44, #52575c);
 background-image:-ms-linear-gradient(top, #3a3f44, #52575c);
 background-image:-webkit-gradient(linear, 0 0, 0 100%, from(#3a3f44), to(#52575c));
 background-image:-webkit-linear-gradient(top, #3a3f44, #52575c);
 background-image:-o-linear-gradient(top, #3a3f44, #52575c);
 background-image:linear-gradient(top, #3a3f44, #52575c);
 background-repeat:repeat-x;
 filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#3a3f44', endColorstr='#52575c', GradientType=0);
 border-color:#000 #52575c #52575c;
 border-color:rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);*background-color:#52575c;
 filter:progid:DXImageTransform.Microsoft.gradient(enabled = false);
 /* bordures */
 box-shadow:inset 0px 0px 1px #e8edf0;
 -moz-box-shadow:inset 0px 0px 1px #e8edf0;
 -webkit-box-shadow:inset 0px 0px 1px #e8edf0;
 position:fixed;
 top:0;
 left:0;
 width:100%;
 z-index:1030;
}

#menu{
 height:30px;
 margin:0 auto;
 padding:3px 30px;
}
 
#menu li /* Elements des listes */     
{
 width:111px;
 height:25px;
 float:left;
 display:block;
 position:relative;
 text-align:center;
 margin-right:10px;
 padding:7px 7px 0 7px;
 border:none;
}
#menu li:hover /* Elements des listes */     
{
 margin-right:10px;
 padding:5px 7px 0 7px;
 background:#fff;
}
#menu li:hover a{
 color:#161616;
 text-shadow:none;
}
#menu li a{
 font-size:15px;
 color:#eeeeee;
 display:block;
 outline:0;
 text-decoration:none;
 text-shadow:none;
}
 
#menu li ul /* Sous-listes */
{ 
 position: absolute; /* Position absolue */
 left: -999em; /* Hop, on envoie loin du champ de vision */
 margin-top:9px; /* On décale les sous-listes pour qu'elles ne soient pas au dessus des listes */
 width:280px;
 /* coins arrondis */
 border-width:2px 3px 3px 3px;/* Haut, Droite, Bas, Gauche*/
 border-style:solid;
 border-color:#fff;
 border-radius:5px 5px 5px 5px;
 -moz-border-radius:5px 5px 5px 5px;
 -webkit-border-radius:5px 5px 5px 5px;
 background:#adadad;
}

#menu li ul li /* Éléments de sous-listes */
{
/* pour IE qui ne reconnaît pas "transparent" (comme précédemment) */
 border-left:3px solid #fff; /* on met une bordure blanche en haut de chaque élément d'une sous liste */
 border-top:1px solid #fff;
 height:35px;
 font-size:12px;
 width:263px;
 text-align:left;
}
#menu li ul li:hover{
 border-top:1px solid #fff;
 border-left:3px solid #f53b3b;
 height:37px;
}
#menu li ul li a{
 line-height:27px;
 text-shadow:none;
}
#menu li ul li:hover a{
 line-height:31px;
 text-shadow:none;
}
#menu li:hover ul, #menu li.sfhover ul /* Sous-sous-listes lorsque la souris passe sur un élément de liste */
{
 left:-999em; /* On expédie les sous-sous-listes hors du champ de vision */
}
 
#menu li:hover ul, #menu li li:hover ul, #menu li.sfhover ul, #menu li li.sfhover  /* Sous-listes lorsque la souris passe sur un élément de liste ET sous-sous-lites lorsque la souris passe sur un élément de sous-liste */
{
 left:0; /* Repositionnement normal */
 min-height: 0; /* Corrige un bug sous IE */
}
Bonjour,

Peut-être que la connaissance des bases en css sera profitable pour passer en responsive.

Sinon dans les grandes lignes, pour obtenir les effets que vous désirez (au regard de vos exemples): passer les largeur en %, utiliser les media-queries, définir les points de rupture.

Bon courage
Je vais me renseigner sur ses points.

Mais définir des points de rupture tu fait comment?

Je sais plus ou moins exploiter les media queries, mais les points de rupture pas vraiment.

En tout cas merci de ton aide.

Cordialement
Merci, c'est celui là que j'avais vu, je m'en suis inspirer pour mon menu, mais j'aime pas le comportement des sous-listes ouverte en version tablette et mobile.

Sinon je vais m'acharner dessus, en espérant y arriver, j'ai tout les éléments pour réussir maintenant ^^

Merci de votre aide

Cordialement