28172 sujets

CSS et mise en forme, CSS3

Bonjour, des exemples valent mieux que des mots : www.art-its.fr/menumenu/

Mon menu fonctionne comme je le souhaite, seulement je voudrais rajouter quelques détails esthétiques. Lors du passages sur un lien (par ex. Catégorie 1) le sous menu s'ouvre et l'on peut aller cliquer sur un lien du sous-menu (par ex. Catégorie 12).

Est-il possible en CSS (ou autre) de faire en sorte que lors du passage de la souris sur le sous-menu, la couleur de fond du lien du menu reste "active" et identique à celle du sous-menu ?
Salut,

Si je comprend bien ton interrogation, tu souhaite que lorsqu'on est en train de passer la souris sur "sous catégorie 11" ou "sous catégorie 12", le fond de "catégorie 1" soit aussi en jaune, et ainsi de suite sur les autres rubriques c'est bien ça ?
Bonjour,

Le code CSS aurait été utile, mais bon.
Vu les couleurs des liens et le code HTML, il semble que tu sois en valeur par défaut du navigateur pour la balise <a>.
Regarde du côté CSS et pseudo class link, visited, active, hover et focus et "class" ta balise <a>
Tu pourrais mettre qlq chose comme (extrait):

/* niveau 1*/
/* pour voir la diffrence avec les valeurs par defaut */
a.lienniv1:link, a.lienniv1:visited
  {text-decoration: underline; font-weight: 700; color: #000080}
a.lienniv1:active
  {text-decoration: normal; font-weight: 700; color: #00FF00}
a.lienniv1:hover, a.lienniv1:focus
  {text-decoration: normal; font-weight: 700; color: #0000FF}
/* niveau 2*/
/* pour voir la diffrence avec les valeurs par defaut */
a.lienniv2:link, a.lienniv2:visited
  {text-decoration: underline; font-weight: 700; color: #008000}
a.lienniv2:active
  {text-decoration: normal; font-weight: 700; color: #00FF00}
a.lienniv2:hover, a.lienniv2:focus
  {text-decoration: normal; font-weight: 700; color: #00FF00}

Le niveau 1 "lienniv1" est en bleu.
Le niveau 2 "lienniv2" est en vert.
Et lorsque "lienniv1" est "active" (donc avec le sous-menu de niveau2), la couleur a été mise au vert.

C'est une piste, je n'ai pas eu le tps de tester.
Salut,

sellig a écrit :
Le code CSS aurait été utile, mais bon.

Avec l'extension qui va bien, il est pour lui de copier coller le code CSS car il a fourni un lien vers une page en ligne.
Smiley cligne
Modifié par Mikachu (22 Oct 2009 - 16:47)
Je vous remet le code ça ne me dérange pas :



/* CSS Document */
/*** Menu ***/
#menu, #menu ul, #menu dl, #menu dl a, #menu dl li, #menu dt, #menu dd, #menu dd li a, #menu dd ul a {margin:0;padding:0;}

#menu{padding:0 0 20px 0;background:white url(../images/bg-menu.jpg) no-repeat;height:20px;width:100%;float:left;}





#menu dl{margin:3px 0 0 0;}
#menu dl, #menu ul a{list-style-type:none;font-size:.8em;font-family:Arial,Helvetica,FreeSans,sans-serif;text-transform: uppercase;}

#menu dt a{color:white;text-decoration:none;padding:0 8px;height:20px;}
#menu dt a:hover{color:#C4121E;text-decoration:none;}

#menu dl {float: left;text-align:center;}
#menu dt {cursor: pointer;}


#menu dd {margin:0;padding:0px;position:absolute;width:926px;text-align:left;height:20px;}
#menu dd ul{list-style-type:none;width:926px;display:block;height:20px;}
#menu dd li{display:inline;padding:0 4px; }


/* Sous menus */

#smenu1 ul{margin:2px 0 0 -74px;list-style-type:none;background:yellow;}
#smenu2 ul{margin:2px 0 0 -179px;list-style-type:none;background:aqua;}
#smenu4 ul{margin:2px 0 0 -388px;list-style-type:none;background:green;}
#smenu5 ul{margin:2px 0 0 -492px;list-style-type:none;background:pink;}




a écrit :

Si je comprend bien ton interrogation, tu souhaite que lorsqu'on est en train de passer la souris sur "sous catégorie 11" ou "sous catégorie 12", le fond de "catégorie 1" soit aussi en jaune, et ainsi de suite sur les autres rubriques c'est bien ça ?


C'est exactement cela !


a écrit :


Le code CSS aurait été utile, mais bon.
Vu les couleurs des liens et le code HTML, il semble que tu sois en valeur par défaut du navigateur pour la balise <a>.
Regarde du côté CSS et pseudo class link, visited, active, hover et focus et "class" ta balise <a>


J'ai essayé d'adapter ta proposition, mais je ne suis pas sur d'avoir bien compris et/ou que ta solution soit effice Smiley confus
Oui c'est possible en javascript ou avec la library jquery par exemple.

tu lui dira alors quelquechose comme:



$(document).ready(function(){

	   $('#idssmenu').css('cursor','pointer').mouseover(function(){
            
		$(this).css("color", "#BBB");
              $('#idmenu').css("color", "#AAA");
			
		   
		});
});


Attention j'ai simplifier à l'extrême; il vas te falloir te plonger dans le code et bien réfléchir
Que se passe til sur le mouseout au click .. etc...
Bref tu te lance dans un truc un peu complqiué quand même mais tout à fait faisable.

tu peux aussi utiliser le conditionnel et même gerer le conditionnel sur une couleur du css cela donne par exemple pour un menu de site depliant que j'ai fait: qui au survol change de couleur et au clique prend la couleur:



Cordialement.
// RGB

function rgbToHex(rgb) { 
    var rgbvals = /rgb\((.+),(.+),(.+)\)/i.exec(rgb); 
    var rval = parseInt(rgbvals[1]); 
    var gval = parseInt(rgbvals[2]); 
    var bval = parseInt(rgbvals[3]); 
    return '#' + ( 
        rval.toString(16) + 
        gval.toString(16) + 
        bval.toString(16) 
    ).toUpperCase(); 
} 

// MENU  
var flag = false;

$(document).ready(function(){

	   $('.menu_block').css('cursor','pointer').mouseover(function(){
            
			if (rgbToHex($(this).css("backgroundColor")) == "#C2C2C2") {
				$(this).css("backgroundColor", "#dedfe4");
			}	
			else{
				flag = true;
			}
		   
		});
		
	   $('.ssmenu_depliant').css('cursor','pointer').mouseover(function(){
		   	   
			if (rgbToHex($(this).css("backgroundColor")) == "#C2C2C2") {
				$(this).css("backgroundColor", "#d3d3d3");
			}	
			else{
				flag = true;
			}
		   
		});
		
	   $('.menu_block').css('cursor','pointer').mouseout(function(){
            
			if (flag == false) {
				$(this).css("backgroundColor", "#C2C2C2");
			}	
			else{
			flag = false;
			}
		   
		});
		
	   $('.ssmenu_depliant').css('cursor','pointer').mouseout(function(){
		   	   
			if (flag == false) {
				$(this).css("backgroundColor", "#C2C2C2");
			}
			else{
			 flag = false;
			}
		   
		});
		
	   $('.menu_block').css('cursor','pointer').click(function(){
            
			if (flag == false) {
				$(this).css("backgroundColor", "#dedfe3");
				flag = true;
			}	
			else {
				$(this).css("backgroundColor", "#C2C2C2");
			 flag = false;
			}
		   
		});
		
	   $('.ssmenu_depliant').css('cursor','pointer').click(function(){
		   	   
			if (flag == false) {
				$(this).css("backgroundColor", "#d3d3d3");
				flag = true;
			}
			else {
				$(this).css("backgroundColor", "#C2C2C2");
			 flag = false;
			}
		   
		 	  $(this).next().slideToggle('slow');		
		   
		});
	
	   $('.menu').css('cursor','pointer').click(function(){
	   
		   $(this).next().slideToggle('slow');   
		   
		});
	});

	

Modifié par casp (22 Oct 2009 - 19:40)
L'autre solution en CSS, serait de mettre des class à chacune de tes catégories de ton menu principale. En hover, y appliquer le même background que les sous-menus.

ça peut semblé long, mais c'est ce que j'ai fait dans le cadre de mon projet est ça fonctionne très bien.
Modifié par juliesunset (22 Oct 2009 - 22:01)
a écrit :
Attention j'ai simplifier à l'extrême; il vas te falloir te plonger dans le code et bien réfléchir
Que se passe til sur le mouseout au click .. etc...
Bref tu te lance dans un truc un peu complqiué quand même mais tout à fait faisable.


Mon niveau en javascript ne me permet de créer ce genre de script, je pense que cela va devenir trop compliqué au vue de mes compétences Smiley smile ...

a écrit :
L'autre solution en CSS, serait de mettre des class à chacune de tes catégories de ton menu principale. En hover, y appliquer le même background que les sous-menus.

ça peut semblé long, mais c'est ce que j'ai fait dans le cadre de mon projet est ça fonctionne très bien.


Peut-tu m'en dire plus, car j'y ai déjà pensé mais le a:hover ne permet pas de garder la couleur de fond quand mon curseur est sur le sous-menu.
Bon dans mon cas j'ai mis des images, pas des couleurs, mais je crois que le principe reste le même.

Dans ton menu tu as catégorie 1, 2, 3... bla bla bla...
Pour ma part je n'ais utilisé que des ul et li.

pour chaque chaque catégorie tu applique une class sur ton li

ex:

<ul>
   <li class="cat01"><a>Catégorie 1</a></li>
      <ul>
         <li class="smenu1">...</li>
         ...
      </ul>
   <li class="cat02"><a>Catégorie 2</a></li>
   ...
</ul>


puis dans ton CSS tu applique un display: block à tes catégories et tes sous menue, ainsi que des dimension bien précise. puis tu appliques la couleur de background que tu veux pour chaque catégorie.

Tu peux aller voir sur mon site pour jeter un coup d'oeil comment j'ai fais.

Le seul problème avec cette méthode c'est que le sous-menu n'est accessible qu'avec la sourie. Donc ceux qui navigue au clavier n'auront pas accès au sous-menu.
Merci Julie, ta méthode fonctionne car tu utilise des ul et des li, il faut que j'essaie d'adapter la mienne aux comportements des dt dl et dd.
Je ne sais pas s'il réagisse de la même manière...
Je m'étais basé sur des tuto (je pourais pas te dire lesquel... j'en ai trop vue) mais l'un de ces tuto utilisais les dt dl et dd, le principe reste le même, faut juste pas oublié de les mettres en display:block.