Probleme CSS

Bonjour
j ai un petit probleme en css, je ne trouve pas une commande:
code html

        <dt onmouseover="javascript:montre('smenu1');"><a href="test.php?page=description">SOCIÉTÉ</a>
        </dt>
        <dd id="smenu1" onmouseover="javascript:montre('smenu1');" onmouseout="javascript:montre('');">
          <ul>
            <li><a href="test.php?page=description">Description</a></li>
            <li><a href="test.php?page=ressources">Ressources</a></li>
            <li><a href="test.php?page=metiers">Métiers</a></li>
          </ul>
        </dd>


code css

#menu li a:hover, #menu dt a:hover
{
      background: #eee;
}

DOnc ce code me permet une subrillance lorsque l on passe sur les icones, cependant je souhaiterais que lorsqu on clicque sur par exemple description, ressources, métiers; le bouton societe change de couleur.
J ai essayé A:visited mais ca ne correspond pas vu qu on ne clique pas dessus.
Y aurait t il une méthode pour faire ce que je veux?? Dois je transformer mon css en feuille de style php?? Dans tous les cas est ce possible de le faire et si oui comment?

merci d avance de vos réponses
Configuration: Windows XP
Internet Explorer 6.0

25 réponses

Résumé de la discussion

Le besoin est d'afficher une couleur différente pour le bouton SOCIÉTÉ lorsque l'une des pages Description, Ressources ou Métiers est sélectionnée dans l'interface de navigation. La solution proposée consiste à générer dynamiquement une classe CSS 'selected' sur l'élément <dt> correspondant à la page courante via PHP en utilisant la valeur du paramètre GET page. Puis on applique dans le CSS une règle comme #menu dt.selected { background-color: green; } pour modifier la couleur du bouton sans toucher au HTML. En complément, il faut que le code PHP colle à la logique d'indexation des pages et que le lien actuel soit bien reflété même après actualisation.</dt>

Bobot (l’IA à votre service)
  1. Contributeur
    pour ce qui est du css.php

    Si je devais donner mon avis, je serais plutôt contre l'adoption de constantes, variables, etc. au sein de la spécification CSS.

    Autant garder les CSS simples et dépourvues de "logique" comme c'est le cas, et utiliser une solution vraiment puissante et mature telle que PHP si c'est vraiment nécessaire. S'ils vennaient ajouter ce type de fonctionnalités dans la spécification CSS, ce ne sera jamais assez complet pour rivaliser avec un vrai langage de script, tout en apportant son lot de prises de têtes.

    À mon sens, on n'a pas besoin de complexifier les spécifications CSS, pour des fontionnalités qui ne seraient qu'une redite de ce qui est déjà possible !!

    RAD
    1. Il faut mettre
            if(!empty($_GET['page']))
             {
      ou isset pareille
      }
      

      car sinon petit message d erreur disant que l index n est pas connu lol
      1. Résolu
        sur le fichier menu
               <dt onmouseover="javascript:montre();"
               <?
               /*pour changer la couleur du bouton lors de la visite*/
            if($_GET['page']=='accueil')
            {
              echo("class=\"selected\"");
            }
        ?>><a id="lienTitre" href="test.php?page=accueil">ACCUEIL</a></dt>
        
        sur le fichier css
        
        #menu dt.selected
        {
        background-color:green;
        }
        


        Tu avais raison j avais besoin de php, juste un peu trompé dans le css mais l esprit été la, donc un grand merci a toi malgré le faite que tu dormais a moitié tu m a bien aidé
        1. Contributeur

          (^_^)
      2. ok merci je vois le principe, mais je le ferais demain je pense car elle m a pris la tete cette page et j ai dormi que 4h donc voila
        Je te tiens au courant demain ;)
        1. Contributeur
          donc le méthode semble être la bonne…
          mais j'ai aussi écrit :
          "pour la solution, en php tu vas [faire] en sorte que le <dt> [...] ait une classe[...]"

          suis pas réveillé, j'te dis ! j'ai encore oublié un mot et pourtant je me relis !
          -;o)

          dans ta page tu aura quelque chose du genre :
          <dt<?php if ($page='lapage'){echo(' class="select"');}?>><a href="#">lapage<a></dt>

          si la page est celle qui est affichée en ce moment alors tu ajoutes 'class="selected"'.
          c'est ça qui fait l'interactivité, css ne fait que de la présentation.
          1. Lorsque tu as une page affiché d'une partie ou sous partie par exemple societe, societe/description, societe/ressources, societe/métiers. Je souhaiterais que le bouton principale de la partie (la si on suit l'exemple c'est le bouton societe qui a une couleur bleu) change de couleur(en noir par exemple). Et que ce changement de couleur reste valide tant que l'on se trouve dans la partie.
            Si on change de partie (aller de societe a accueil), le bouton societe retourne a sa couleur d origine (bleu) et le bouton accueil change de couleur (passe du bleu vers le noir).

            Je souhaite faire ca de maniere a ce que la personne visitant le site, sache dans qu elle partie elle se trouve par un simple coup d oeil sur le menu.
            1. lollll
              mdrrrr
              ah si ca fonctionne mais ca reste tjrs noir lol.
              Je crois que je v me faire en php ou en javascript
              désolé que meme
              1. désolé mais la je ne saisie plus rien
                j ai ouvert ta page nickel ca marche, je regarde le source, je vois ce que tu veux dire et je fais un c/c.
                Je vérifie mon css, et apr précaution je prend ton code css et je fias un c/c dans le mien
                ......
                mais pourquoi ca ne marche pas chez moi??????????????????????????????????????????????????

                Je vais devenir fou pour une connerie pareille c'est pas possible
                1. Contributeur
                  mais que diable un peu d'abnégation !!!

                  déjà que je suis mal réveillé si en plus tu n'y mats pas du tien !
                  -;o)

                  ça ne fonctionne pas parce que j'ai oublié de cibler le <a> dans la règle mais il faut essayer !
                  regarde là, ça fonctionne !
                  dt.select a{
                  background-color:black;
                  }

                  1. tant pis marche toujours pas.... Je vais essayer de trouver une solution dans un autre langage
                    merci quand meme et dsl pour le dérangement
                    1. Contributeur
                      pour ça faut rédiger plus précisément ta question :
                      " je souhaiterais que lorsqu on clicque sur par exemple description, ressources, métiers; le bouton societe change de couleur. "
                      il y a quand même une sacrée différence entre cliquer et visiter.

                      tu peux aussi lire les réponses qu'on te donne.
                      "en css la pseudo-classe ':active' qui est appliquée entre le moment où l'utilisateur presse le bouton de la souris et le relâche."
                      à fortiori ça ne décrit pas du tout ton problème.

                      pour la solution, en php tu vas en sorte que le <dt> (soit dit en passant, cette balise ne sert absolument pas à ça) ait une classe (par exemple la classe "select").
                      en html :
                      <dt class="select>blabla</dt>

                      et en css :
                      dt.select{
                      background-color:red;
                      }
                      1. Lol ca venait en partie de la mais j ai essayé focus, active et le truc c'est que ca fait pas ce que je veux :
                        la avec les couleurs indiqué j aimerais que lorsque l on a cliqué sur société ou ces sous partie le bouton société donc dt change de couleur et reste avec la couleur changé tant qu on visite une partie de société.
                        Et le active me change la couleur que lorsque j ai le click appuyer dessus
                        1. Contributeur
                          ça vient en premier de là. une feuille qui n'est pas liée ne sert strictement à rien.
                          pour le code, <a> est une balise en ligne, il faut lui appliquer :
                          #menu dt a
                          {
                          color:white;
                          display:block;
                          }
                          1. Non ca vient pas de la
                            <link rel="stylesheet" type="text/css" href="styleMenu.css">
                            </head>
                            
                            
                            #menu dt a:active
                            {
                             background: black;
                            }
                            
                            


                            Ca ne marche pas toujours pas c'est a devenir fou.... et franchement la je commence a pas vraiment pas saisir pourquoi ca ne veut pas fonctionner en css.
                            1. Contributeur
                              salut,

                              pas en perdition totale.
                              tu as juste mis le lien vers ta css en dehors du <head>.
                              il faut inverser ces deux lignes :
                              </head>
                              <link rel="stylesheet" type="text/css" href="styleMenu.css">

                              1. toujours pas de réponse... je suis vraiment en perdition totale la. help me
                                1. ne faite pas gaffe au couleur des divs, c'est pour m indiquer l emplacement les tailles etc etc c'est vraiment ce changement au niv bouton que je comprend pas
                                  1. C'est ce que je pensais aussi avec le a:Active ou le a:focus mais ca ne marche pas.... je me demande si ca vient pas du navigateur.... Donc voila c'est pour ca que je venais voir ici si c'était la bonne solution.
                                    Appriori oui mais pkoi ca marche pas ?? ca c'est une question lol
                                    voici le code en entier
                                    CODE HTML/PHP
                                    
                                    <? $page=""; ?>
                                    <html>
                                      <head>
                                        <title>index</title>
                                        <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
                                    <script type="text/javascript">
                                    <!--
                                    window.onload=montre;
                                    function montre(id) 
                                    {
                                     var d = document.getElementById(id);
                                     for (var i = 1; i<=10; i++) 
                                     {
                                      if (document.getElementById('smenu'+i)) 
                                      {
                                        document.getElementById('smenu'+i).style.display='none';
                                      }
                                     }
                                     if (d) {d.style.display='block';}
                                    }
                                    //-->
                                    </script>
                                      </head>
                                    <link rel="stylesheet" type="text/css" href="styleMenu.css">
                                      <body>
                                      <div id="enTete">
                                      <img src=".\img\SOMEI1.png" width="300px" height="200px" />
                                      </div>
                                        <div id="menu">
                                          <dl>
                                            <dt onmouseover="javascript:montre();"><a id="lienTitre" href="test.php?page=accueil">ACCUEIL</a>
                                            </dt>
                                          </dl>
                                          <dl>
                                            <dt onmouseover="javascript:montre('smenu1');"><a href="test.php?page=description">SOCIÉTÉ</a>
                                            </dt>
                                            <dd id="smenu1" onmouseover="javascript:montre('smenu1');" onmouseout="javascript:montre('');">
                                              <ul>
                                                <li><a href="test.php?page=description">Description</a></li>
                                                <li><a href="test.php?page=ressources">Ressources</a></li>
                                                <li><a href="test.php?page=metiers">Métiers</a></li>
                                              </ul>
                                            </dd>
                                          </dl>
                                          <dl>
                                            <dt onmouseover="javascript:montre('smenu2');"><a href="test.php?page=solutionSdis">SDIS</a>
                                            </dt>
                                            <dd id="smenu2" onmouseover="javascript:montre('smenu2');" onmouseout="javascript:montre('');">
                                              <ul>
                                                <li><a href="test.php?page=solutionSdis">Solution</a></li>
                                                <li><a href="test.php?page=referenceSdis">Références</a></li>
                                              </ul>
                                            </dd>
                                          </dl>
                                          <dl>
                                            <dt onmouseover="javascript:montre('smenu3');"> Menu 3
                                            </dt>
                                            <dd id="smenu3" onmouseover="javascript:montre('smenu3');" onmouseout="javascript:montre('');">
                                              <ul>
                                                <li><a href="test.php?page=page1">Sous-Menu 3.1</a></li>
                                                <li><a href="#">Sous-Menu 3.2</a></li>
                                                <li><a href="#">Sous-Menu 3.3</a></li>
                                                <li><a href="#">Sous-Menu 3.4</a></li>
                                                <li><a href="#">Sous-Menu 3.5</a></li>
                                              </ul>
                                            </dd>
                                          </dl>
                                          <dl>
                                            <dt onmouseover="javascript:montre('smenu4');"> Menu 4
                                            </dt>
                                            <dd id="smenu4" onmouseover="javascript:montre('smenu4');" onmouseout="javascript:montre('');">
                                              <ul>
                                                <li><a href="#">Sous-Menu 4.1</a></li>
                                                <li><a href="#">Sous-Menu 4.2</a></li>
                                                <li><a href="#">Sous-Menu 4.3</a></li>
                                              </ul>
                                            </dd>
                                          </dl>
                                          <dl>
                                            <dt onmouseover="javascript:montre('smenu5');"> test
                                            </dt>
                                            <dd id="smenu5" onmouseover="javascript:montre('smenu5');" onmouseout="javascript:montre('');">
                                              <ul>
                                                <li><a href="#">Sous-Menu 1.1</a></li>
                                                <li><a href="#">Sous-Menu 1.2</a></li>
                                                <li><a href="#">Sous-Menu 1.3</a></li>
                                                <li><a href="#">Sous-Menu 1.4</a></li>
                                                <li><a href="#">Sous-Menu 1.5</a></li>
                                                <li><a href="#">Sous-Menu 1.6</a></li>
                                              </ul>
                                            </dd>
                                          </dl>
                                          </div> 
                                          <div id="photo">
                                          <?php
                                      /*affichage des photos correspondant au menu choisi*/
                                    	if(isset($_GET['page']))
                                            {
                                    		if($_GET['page']=='accueil')
                                                    {
                                    			echo("<img src=\".\img\photo\FORMATION.jpg\" width=\"100%\" height=\"91px\" />");
                                    		}
                                    		if($_GET['page']=='description' || $_GET['page']=='ressources' || $_GET['page']=='metiers')
                                                    {
                                    			echo("<img src=\".\img\photo\gouttes_eau.jpg\" width=\"100%\" height=\"91px\" />");
                                    		}
                                    		if($_GET['page']=='solutionSdis' || $_GET['page']=='referenceSdis')
                                                    {
                                    			echo("<img src=\".\img\photo\pompier.jpg\" width=\"100%\" height=\"91px\" />");
                                    		}
                                            }
                                            else
                                            {
                                               echo("<img src=\".\img\photo\FORMATION.jpg\" width=\"100%\" height=\"91px\" />");
                                            }
                                    		?>
                                        </div>
                                        <div id="gauche">
                                        <div id="sousMenu">
                                        <?
                                        /*affichage du menu gauche*/
                                    	if(isset($_GET['page']))
                                            {
                                    	switch ($_GET['page'])
                                            {
                                    			case 'description' :
                                    			echo("<table width=\"100%\" boder=\"1\">
                                    			<tr><th align=\"center\" class=\"titreMenu\">SOCIETE</th></tr>
                                    			<tr><td class=\"valide\"><a href=\"test.php?page=description\">Description</a></td></tr>
                                                            <tr><td class=\"normal\"><a href=\"test.php?page=ressources\">Ressources</a></td></tr>
                                                            <tr><td class=\"normal\"><a href=\"test.php?page=metiers\">Metier</a></td></tr>
                                    			</table>");
                                    				break;
                                    			case 'ressources' :
                                    			echo("<table width=\"100%\" boder=\"1\">
                                    			<tr><th align=\"center\" class=\"titreMenu\">SOCIETE</th></tr>
                                    			<tr><td class=\"normal\"><a href=\"test.php?page=description\">Description</a></td></tr>
                                                            <tr><td class=\"valide\"><a href=\"test.php?page=ressources\">Ressources</a></td></tr>
                                                            <tr><td class=\"normal\"><a href=\"test.php?page=metiers\">Metier</a></td></tr>
                                    			</table>");
                                                            break;
                                    			case 'metiers' :
                                    			echo("<table width=\"100%\" boder=\"1\">
                                    			<tr><th align=\"center\" class=\"titreMenu\">SOCIETE</th></tr>
                                    			<tr><td class=\"normal\"><a href=\"test.php?page=description\">Description</td></tr>
                                                            <tr><td class=\"normal\"><a href=\"test.php?page=ressources\">Ressources</td></tr>
                                                            <tr><td class=\"valide\"><a href=\"test.php?page=metiers\">Metier</td></tr>
                                    			</table>");
                                                            break;
                                    			case 4 :
                                    				break;
                                    			case 5 :
                                    				break;
                                    			case 6 :
                                    				break;
                                    			default :
                                    		}
                                    	}
                                    
                                    
                                    		?>
                                    	</div>
                                            <div id="menuSuite">
                                            </div>
                                        </div>
                                        <div id="principale">
                                    <?php
                                    /*affichage de la page dans la div*/
                                    	if(isset($_GET['page']))
                                            {
                                    	switch ($_GET['page']){
                                    			case 'description' :
                                    				$page='desc.php';
                                    				break;
                                    			case 'ressources' :
                                    				$page='ressource.php';
                                    				break;
                                    			case 'metiers' :
                                    				$page='metier.php';
                                    				break;
                                    			case 'solutionSdis' :
                                    				$page='sdis.php';
                                    				break;
                                    			case 'referenceSdis' :
                                    				$page='sdisExpl.php';
                                    				break;
                                    			case 6 :
                                    				$page='page6';
                                    				break;
                                    			default :
                                    				$page='accueil.php';
                                    		}
                                    	}
                                    	else
                                            {
                                    		$page='accueil.php';
                                    	}
                                    	include("$page");
                                    
                                    ?>
                                    </div>
                                        </a>
                                        </div>
                                      </body>
                                    </html>
                                    
                                    CODE CSS
                                    body
                                    {
                                          margin: 0;
                                          padding: 0;
                                          background: white;
                                          font: 80% verdana, arial, sans-serif;
                                    }
                                    #enTete
                                    {
                                     margin-top:-50px;
                                     margin-left:-60px;
                                    }
                                    dl, dt, dd, ul, li
                                    {
                                          height: 2em;
                                          margin: 0;
                                          padding: 0;
                                          list-style-type: none;
                                    }
                                    #menu 
                                    {
                                          height:100%;
                                          position: absolute;
                                          top: 75px;
                                          left: 0;
                                          z-index:100;
                                          width: 100%;
                                    }
                                    #menu dl
                                    {
                                          height: 15em;
                                          float: left;
                                          width: 13.05em;
                                    }
                                    #menu dt
                                    {
                                          cursor: pointer;
                                          text-align: center;
                                          vertical-align: middle;
                                          text-transform: capitalize;
                                          font-weight: bold;
                                          background: #07b8ff;
                                          border: 1px solid gray;
                                    }
                                    #menu dd 
                                    {
                                          border: 1px solid gray;
                                    }
                                    #menu li
                                    {
                                          text-align: center;
                                          background: #ccc;
                                    }
                                    #menu dt a
                                    {
                                     color:white;
                                    }
                                    #menu li a
                                    {
                                          color: #000;
                                          text-decoration: none;
                                          display: block;
                                          height: 100%;
                                          border: 0 none;
                                    }
                                    #menu li a:hover
                                    {
                                          background: #eee;
                                    }
                                    #menu dt a:active
                                    {
                                     background: black;
                                    }
                                    a
                                    {      
                                          text-decoration: none;
                                          color: black;
                                          color: #222;
                                    }
                                    #principale
                                    {
                                      position : absolute;
                                      margin-top:38px;
                                      margin-left:13.05em;
                                      height:100%;
                                      width: 846px;
                                      background-color:green;
                                    
                                    }
                                    #gauche
                                    {
                                     margin-top:38px;
                                     position:absolute;
                                     background-color:yellow;
                                     height:100%;
                                     width:13.05em;
                                    }
                                    #photo
                                    {
                                      position:absolute;
                                      margin-top: -53px;
                                      height:85px;
                                      width:100%;
                                      background-color:red;
                                    }
                                    .valide
                                    {
                                     background-color:#0773cf;
                                    }
                                    .normal
                                    {
                                     background-color:#07b8ff;
                                    }
                                    .titreMenu
                                    {
                                     font-weight: bold;
                                    }
                                    


                                    Et le truc c'est que lorsque l on valide la une sous partie (ex: description, ressource et metier) ca me change la couleur du bouton SOCIETE.

                                    Et meme avec le active que j ai testé a mainte reprise et de différente manier eje n y arrive pas
                                    sniffff
                                    1. Contributeur
                                      salut,

                                      +1 pour Rad

                                      en css la pseudo-classe ':active' qui est appliquée entre le moment où l'utilisateur presse le bouton de la souris et le relâche. (dixit la spec)

                                      les quatre états du lien en css :
                                      a:Link
                                      a:Visited
                                      a:Hover
                                      a:Active

                                      à coder dans cet ordre, pour t'en rappeler "LoVe HAte".

                                      un exemple
                                      • 1
                                      • 2