Sorte de a:active

Résolu/Fermé
Pignouff Messages postés 99 Date d'inscription dimanche 17 juillet 2011 Statut Membre Dernière intervention 31 juillet 2012 - 18 sept. 2011 à 18:43
Pignouff Messages postés 99 Date d'inscription dimanche 17 juillet 2011 Statut Membre Dernière intervention 31 juillet 2012 - 18 sept. 2011 à 23:41
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

rodoplop Messages postés 77 Date d'inscription vendredi 16 septembre 2011 Statut Membre Dernière intervention 6 juillet 2012 12
18 sept. 2011 à 20:50
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é :)
0
Pignouff Messages postés 99 Date d'inscription dimanche 17 juillet 2011 Statut Membre Dernière intervention 31 juillet 2012 1
Modifié par Pignouff le 18/09/2011 à 22:42
Ah oui, pas pensé.
Ne t'en fait pas c'est clair!
Merci!
0
Pignouff Messages postés 99 Date d'inscription dimanche 17 juillet 2011 Statut Membre Dernière intervention 31 juillet 2012 1
18 sept. 2011 à 22:42
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)"
0
rodoplop Messages postés 77 Date d'inscription vendredi 16 septembre 2011 Statut Membre Dernière intervention 6 juillet 2012 12
Modifié par rodoplop le 18/09/2011 à 23:03
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.
0
Pignouff Messages postés 99 Date d'inscription dimanche 17 juillet 2011 Statut Membre Dernière intervention 31 juillet 2012 1
18 sept. 2011 à 23:10
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>
<?
}
0
rodoplop Messages postés 77 Date d'inscription vendredi 16 septembre 2011 Statut Membre Dernière intervention 6 juillet 2012 12
18 sept. 2011 à 23:12
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> 
<? 
}
0
Pignouff Messages postés 99 Date d'inscription dimanche 17 juillet 2011 Statut Membre Dernière intervention 31 juillet 2012 1
18 sept. 2011 à 23:18
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
}
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
rodoplop Messages postés 77 Date d'inscription vendredi 16 septembre 2011 Statut Membre Dernière intervention 6 juillet 2012 12
Modifié par rodoplop le 18/09/2011 à 23:32
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  
} 
?> 
0
Pignouff Messages postés 99 Date d'inscription dimanche 17 juillet 2011 Statut Membre Dernière intervention 31 juillet 2012 1
18 sept. 2011 à 23:41
IT WORKS!
MERCI beaucoup pour ton temps et ton aide!
0