Bonjour à tous,

je souhaiterai réaliser un menu avec des images différentes pour chaque lien.

J'ai lu le tutorial "créer des menus simples", sur Alsa, mais celui-ci permet unique de réaliser un menu avec des images de mêmes largeurs.

Or, dans mon cas, il y a trois liens, et une image attitrée pour chaque lien..

Je ne trouve pas de tutorial m'expliquant comment faire cela..

Quelqu'un peut-il m'aider ou me renvoyer vers un lien explicatif ?

D'avance, merci !
Salut,

pour chaque lien de ton menu tu peux utiliser une classe avec les propriétés communes à tous les liens du menu, puis attribuer un identifiant pour personnaliser chaque lien.

exemple :

<ul>
  <li><a href="#" class="link" id="home">Accueil</a></li>
  <li><a href="#" class="link" id="gallery">Gallerie</a></li>
</ul> 


.link{
  height: 30px;
  padding: 5px 10px;
}

#home{
  background url("mon_image_accueil.jpg") no-repeat center;
  width: 100px;
}

#gallery{
  background url("mon_image_gallerie.jpg") no-repeat center;
  width: 120px;
}

Modifié par G3ronim0 (30 Apr 2012 - 23:06)
le mieux est d'avoir les images dans le html pour qu'elles se chargent plus vite.

Tiens pour t'aider un petit menu php/js/css

C'est cadeau, ça pourra te servir


<?php 
		$menu='<ul id="menu">';
		 // tableaux contenant les liens d'accès et le texte à afficher + alt et title

        $tab_menu_lien = array( "../pres", "../design", "../graphisme", "../webx", "../experiences", "../contact" );

        $tab_menu_texte = array( "MenuBtn01.jpg", "MenuBtn02.jpg", "MenuBtn03.jpg", "MenuBtn04.jpg", "MenuBtn05.jpg", "MenuBtn06.jpg" );

		$tab_menu_descr = array( "Prsésentation", "Design", "Graphisme", "Web", "Expériences & Références", "Contact" );


		$tranche=5;
        // informations sur la page
		
		$rep=substr(dirname($_SERVER["PHP_SELF"]),$tranche);

        // boucle qui parcours les deux tableaux
        foreach($tab_menu_lien as $cle=>$lien)
        {
        	
 			$menu .= "   <li ";
            // si le nom du fichier correspond à celui pointé par l'indice, alors on l'active

	
            if( $rep == substr($lien,3) ){
            	
				//on ajoute une classe au lien en cours pour éviter un conflit avec le js
				//changer source de l'image en cours
                $menu .= ' class="active"><a href="' . $lien . '"><img alt="'.$tab_menu_descr[$cle].'" title="'.$tab_menu_descr[$cle].'" src="../web/img/menu/btn/'.str_replace(".jpg", "Over.jpg",$tab_menu_texte[$cle]).'"/></a></li>';

            }
            //sinon pour les autres
            else
            $menu .='><a href="' . $lien . '"><img alt="'.$tab_menu_descr[$cle].'" title="'.$tab_menu_descr[$cle].'" src="../web/img/menu/btn/'.$tab_menu_texte[$cle].'"/></a></li>';

        }      
		$menu .='</ul>'; 
		echo $menu;
		?>



le css
la position de ton menu
#header ul {
	list-style: none outside none;
	float: right;
	padding: 48px 94px 0 0;
}
les puces qui vont contenir tes images
#header ul li {
	display: inline;
	margin: 0;
	padding: 0;
	float: left;
list-style-type:none;
}


un peu de js pour les rollover

un bon truc pour tes rollecer tu donne le même nom que tes images avant survol et tu rajoutes un mot identique + extension à chaque fin

$(document).ready(function() {


	  $('#menu li[class!="active"] img')
	    .mouseover(function() { 
	    
	
	    	
		    	var src =".."+ $(this).attr("src").match(/[^\.]+/) + "Over.jpg";    	
		        $(this).attr("src", src);
	    

	    	
	    	
	    	
	    })
	    .mouseout(function() {
	    	

		       var src = $(this).attr("src").replace("Over.jpg", ".jpg");       
		       $(this).attr("src", src);
	    	
	    });

});

Smiley lol
Ca se fait encore les rollover ???????????? Smiley eek Smiley eek

pour moi rien ne vaut les sprites et une font spécifique !! bienvenue au 21° siècle Smiley biggol
Salut à tous et merci pour vos réponses..

J'ai bidouillé un peu et ait ajouté une classe à chaque lien (.accueil ; .mes_ecrits ; .contact)

Ce qui me donne le css suivant:
#navigation li a.accueil{
  background: #c00 url("../images/menu_accueil.gif") no-repeat;
  width: 130px;
  height: 30px;
  padding: 4px 20px ;
  background: #c00 ;
  color: #fff ;
  border: 1px solid #600 ;
  font: 1em "Trebuchet MS",Arial,sans-serif ;
  line-height: 1em ;
  text-align: center ;
  text-decoration: none ;
 }

 #navigation li  a.accueil:hover, #navigation li  a.accueil:focus, #navigation li a.accueil:active {
  background: #c00 url("../images/menu_accueil.gif") no-repeat;
  width: 130px;
  height: 30px;
  text-decoration: underline ;


Problème, l'image de fond ne s'affiche pas.. (menu_accueil.gif). Elle ne s'affiche qu'en rollover et n'ait pas du tout centrée..

Si quelqu'un a compris d'où vient le problème, merci de m'aider.

A+,
Salut,

j'ai mis un "left top" au background, mais ça ne change rien...


  background: #c00 url(../images/menu_accueil.gif) left top no-repeat;


  background: #c00 url(../images/menu_accueil.gif) left top no-repeat;


Je craque avec ce menu...
Modifié par Furox (04 May 2012 - 19:15)