Sorte de a:active

Résolu
Bonjour,

J'ai un soucis dans la construction de menu plutôt simple.
J'aimerais que lorsque je suis sur l'index, mon bouton de mon menu "home" reste d'une certaine couleur, différentes des autres boutons.
Comme celui de CCM.net, l'onglet hi tech reste noir. Si l'on va sur santé medecine, il restera rose. Bref, j'espère m'être fait comprendre avec mes exemple farfelus!
Si vous aviez une solution, je serais le plus heureux des hommes.

Merci d'avance

6 réponses

  1. en utilisant le CSS tu peut faire sa assez facilement.

    imaginons que ton menu soit comme cela :

    <div id="menu">
        <a href="lien1' class="current_link">Accueil</a>
        <a href="lien2'>Lien 2</a>
        <a href="lien3'>Lien 3</a>
    </div>
    


    et dans ton css
    #menu a:link #menu a:visited
    {
    /* couleur de base */
    color:green;
    }
    
    #menu a:hover #menu a:hover
    {
    /* survol et clic de lien */
    color:red;
    }
    
    #menu a.current_link
    {
    /* pour les liens ayant la class current_link */
    color:red;
    }
    


    de cette manière test liens sont de couleur "green", et lorsque la souris passe sur un lien, il passe au rouge.

    De plus, les liens ayant la class current_link seront également rouge

    le but de cette technique consiste à la coupler avec le php.

    il suffit de tester la page qui est charger (l'url), et d'ajouter la class "current_link" au lien de la page courante.

    De cette manière, le lien de la page sélectionner aura à chaque fois la class "current_link" affectée et gardera donc sa couleur "red".

    Ce n'est pas très clair, mais la fatigue me donne du mal à développer plus simplement ! désolé :)
    1. Ah oui, pas pensé.
      Ne t'en fait pas c'est clair!
      Merci!
      1. EDIT: ca fait 1heure que je cherche, mais je n'y arrive pas.
        Cette partie là me gène. --> "il suffit de tester la page qui est charger (l'url)"
      2. en gros si on reprend l'exemple du menu de mon message légèrement modifier.

        tu peut modifier avec du php en testant l'une des valeur contenu dans la variable $_SERVER

        tu peut par exemple essayer quelque chose comme cela

        <div id="menu"> 
            <a href="page.php' <?php if(strpos($_SERVER'SCRIPT_NAME'],'page.php')){echo 'class="current_link" ';} ?>>Lien1</a> 
            <a href="page2.php' <?php if(strpos($_SERVER'SCRIPT_NAME'],'page2.php')){echo 'class="current_link" ';} ?>Lien 2</a> 
            <a href="page3.php' <?php if(strpos($_SERVER'SCRIPT_NAME'],'page3.php')){echo 'class="current_link" ';} ?>Lien 3</a> 
        </div> 
        


        en gros ce code test si le nom du script (la page php) exécuté correspond au lien du menu.

        Si sa correspond, alors on peut dire qu'on est sur la page de ce lien donc on ajoute la class current_link

        Ca devrait marché si je n'ai pas fait d'erreur.
      3. J'ai bien compris mais le soucis était de récupérer le nom de la page courante.
        Et là il me sors une erreur.

        Mon code:

        if(strpos($_SERVER'SCRIPT_NAME']='home.php')
        {
        ?>
        <li><a href="home.php" class="current_link">HOME</a></li>
        <?
        }
        else
        {
        ?>
        <li><a href="home.php">HOME</a></li>
        <?
        }
    2. Désolé, un petit crochet ouvert était manquant devant mon "SCRIPT_NAME'] ... milles excuses :)

      correction (il manquait également la parenthèse fermante de ton if)

      if(strpos($_SERVER['SCRIPT_NAME']='home.php') )
      { 
      ?> 
      <li><a href="home.php" class="current_link">HOME</a></li> 
      <? 
      }	
      else 
      { 
      ?> 
      <li><a href="home.php">HOME</a></li> 
      <? 
      }
      
      1. J'ai deux home dans mon menu, le if ne prend pas.
        Ca me dépasse un peu là.

        if(strpos($_SERVER['SCRIPT_NAME'],'home.php'))
        {
        ?>
        <li><a href="home.php" class="current_link">HOME</a></li>
        <?
        }
        else
        {
        ?>
        <li><a href="home.php">HOME</a></li>
        <?php
        }
        1. problème de balise PHP mal ouverte ou fermé

          un exemple qui t'affichera bien les bonne chose (je vien de le testé pour être sur ) :)

          <?php 
          if(strpos($_SERVER['SCRIPT_NAME'],'home.php'))  
          {  
          ?>  
          <a href="home.php" class="current_link">la page chargé est home.php</a> 
          <?php  
          }  
          else  
          {  
          ?>  
          <a href="home.php">autre page</a> 
          <?php  
          } 
          ?>