28172 sujets

CSS et mise en forme, CSS3

Bonjour à tous !

Je débute dans la réalisation et le codage de site web et je m'inspire donc de tutos et autres informations disponibles sur la toile, en effet, google est mon ami !

Mon design est inspiré d'un tuto alsa et le code pour le menu déroulant d'un autre site, j'ai donc du tester plusieurs heures pour concilier les deux !
J'ai réussi à mettre en place un menu horizontal déroulant (2 niveaux donc : menu et sous menu)
De nouvelles idées venant, j'ai besoin d'un troisième niveau qui lui, se déroulerait sur la droite du niveau 2.

Ca fait 3 jours que je test plusieurs solutions sans y parvenir !

Je vous joint donc le code xhtml de mon menu, ainsi que le code css en espérant que vous pourrez m'aider.


<ul id="menu">
			<li><a href="index.html">Acceuil</a></li>
			<li><a>La team</a>
			<ul>
					<li><a>La team</a></li>
					<li><a>Présentation</a></li>
					<li><a>Postuler</a></li>
			</ul>		
			</li>
			<li><a href="pilotes.html">Pilotes</a>
			<ul>
					<li><a>Pilotes</a></li>
					<li><a>Tous</a></li>
					<li><a>Thomaskook</a></li>
					<li><a>ReyMisterio</a></li>
				</ul>
			</li>
			<li>
				<a href="index.html">Statistiques</a>
				<ul>
					<li><a>Statistiques</a></li>
					<li><a>Générales</a>
						<ul>
							<li><a>Générales</a></li>
							<li><a>Mai</a></li>
							<li><a>Juin</a></li>
						</ul>		
					</li>
					<li><a>Par saison</a></li>
					<li><a>Par pilote</a></li>
					<li><a>Top scores</a></li>
				</ul>
			</li>
			<li><a>Contact</a></li>
			<li><a>Aide</a>
			<ul>
					<li><a>Aide</a></li>
					<li><a>Le jeu</a></li>
					<li><a>Liens</a></li>
			</ul>		
			</li>
		</ul>


Pour une question de facilité, je vous ai raccourci le menu et enlevé les "href"
Je n'ai pas mis de décalage lors du déroulement donc la 1ere balise de chaque sous-menu est identique a celle du menu dont il se déroule.


ul#menu
{
height: 30px ;
width: 770px;
float: left ;
margin: 0 ;
padding: 0 ;
background: url(http://img339.imageshack.us/img339/3439/bgmenuu.jpg) ;
list-style-type: none ;
font-size: 1.2em ;
font-weight: bold ;
color: #fff ;}	
	
ul#menu li 
{
float:left;
margin:auto;
padding:0;
background: url(http://img339.imageshack.us/img339/3439/bgmenuu.jpg);
text-align: center ;
list-style-type: none ;}

ul#menu li ul 
{display:none;
margin:0;
padding:0;
width: 126px;
position:absolute;}
		
ul#menu li a
{width: 126px ;
line-height: 25px ;
font-size: 1.2em ;
font-weight: bold ;
letter-spacing: 2px ;
color: #fff ;
text-decoration: none ;
border-right: 1px solid #dea ;
border-left: 1px solid #dea ;
float: left;}
		
ul#menu li a:hover
{display: block;
background: url(bg_menu2.jpg) ;
border-right: 1px solid white ;
border-left: 1px solid white ;
font-size: 1.4em;
letter-spacing: 1px;}
		
ul#menu  li:hover ul 
{display:block;
font-size: 1em ;
font-weight: smaller ;}


Comme je n'ai pas de "class" et une seule "id" j'ai un peu de mal a m'en sortir...
Modifié par Justaman (09 Jun 2010 - 22:19)
Yataaa (ça veut dire bonjour dans mon langue Smiley langue )


Et voilà :

ul#menu 
{ 
height: 30px ; 
width: 770px; 
float: left ; 
margin: 0 ; 
padding: 0 ; 
background: url(http://img339.imageshack.us/img339/3439/bgmenuu.jpg) ; 
list-style-type: none ; 
font-size: 1.2em ; 
font-weight: bold ; 
color: #fff ;}     
     
ul#menu li  
{ 
float:left; 
margin:auto; 
padding:0; 
background: url(http://img339.imageshack.us/img339/3439/bgmenuu.jpg); 
text-align: center ; 
list-style-type: none ;} 
 
ul#menu li ul  
{display:none; 
margin:0; 
padding:0; 
width: 126px; 
position:absolute;} 

         
ul#menu li a 
{width: 126px ; 
line-height: 25px ; 
font-size: 1.2em ; 
font-weight: bold ; 
letter-spacing: 2px ; 
color: #fff ; 
text-decoration: none ; 
border-right: 1px solid #dea ; 
border-left: 1px solid #dea ; 
float: left;} 
  
      
ul#menu li a:hover 
{display: block; 
background: url(bg_menu2.jpg) ; 
border-right: 1px solid white ; 
border-left: 1px solid white ; 
letter-spacing: 1px;} 

ul#menu  li:hover > ul  
{display:block;
font-size: 1em ; 
font-weight: smaller ; 
} 
/* hack IE7 pour corriger le décalage IE7 (à mettre dans une feuille de style à part avec des commentaires conditionnels pour être plus "propre") */
* + html ul#menu  li:hover > ul  
{
margin-left:-125px; 
} 
 
ul#menu  li ul li:hover > ul  
{display:block; 
margin-left:125px;
} 

/* hack IE7 pour corriger le décalage IE7  */
* + html ul#menu  li ul li:hover > ul  
{
margin-left:0px;
} 



En résumé : je lui dit d'afficher ton 3em menu à droite avec un décalage de 125 px.
Comme tu n'as pas de classes, j'ai utilisé les > pour lui dire de sélectionner l'enfant direct (sinon j'avais des décalages partout au survol)

Je t'ai mis 2 hacks IE7, le mieux serait de mettre ce code dans des commentaires conditionnels, mais bon, je suis fainéante et comme ça tu as un aperçus directe dans le navigateur

Par contre deux remarques
1. un menu 100% c'est pas mal, ça fonctionnera pas sous certains navigateurs comme IE6, après c'est un choix
2. le display: none; peut poser des soucis à certains navigateurs pour personnes malvoyantes qui risque de ne pas le lire ce qui risque de poser un souci d'accessibilité (il me semble). En général j'utilise du text-indent: -9999px en attendant d'avoir un jour mieux peut être qui sait (plus d'infos sur le sujet ici )
Yataaa saiko ^^

1000x merci pour ton aide, je commençais à désesperer et mes bidouillages faisaient bugger l'afficher sous internet explorer Smiley biggrin

Pour ce qui est du display je l'ai pris comme ca, et en comparant j'ai effectivement remarqué de certains site utilisé un nombre négatif à la place. Mais si une personne utilise un écran de télévision avec son pc, ne risque-t-il pas de le voir affiché vu la taille de l'écran et son echelle (16:9 par ex) ?

Merci infiniment en tous cas !
J'avoue que la conversion - 9999px vs écran tv m'est inconnue, c'est vrai que je ne me suis jamais posée la question. Après il ne faut pas confondre résolution et taille d'écran (un truc dans le genre), donc même si il a un écran méga géant, si il a une résolution de pc je pense que ça passe non ?

Si quelqu'un a une idée, ça m'intrigue aussi Smiley lol

(au pire en exagérant le truc genre - 9999999999px pour être sur, mais je connais pas la limite)
Hi there,

La résolution à la mode sur les écrans plats (TV ou pas), c'est le full HD (1920x1080 pixels).

Y a encore de la marge avant d'atteindre les 9999px. Smiley cligne

Par contre, là où faut faire gaffe, c'est si on utilise un top: -9999px au lieu d'un left:-9999px. Si l'élément en question est situé tout en bas d'une page qui fait 15 km de long, il risque de faire un petit coucou en haut du site...
Salut,

La seule réponse que j'apporterai à ta question, c'est que 3 niveaux, ça fait déjà un peu beaucoup pour un menu, et encore plus s'il est déroulant. Peut être devrais tu tout simplement repenser la structure de ton site pour la rendre plus simple. Smiley smile