

new!








|
Lien actif toujours "actif"


Le principe
 
Les CSS permettent des effets sur les liens au survol de la souris ou sur le clic. Un lien bleu peut devenir noir au survol et rouge s'il est cliqué. Malheureusement il pert sa couleur rouge en perdant le focus. La solution est de lui affecter une autre class quand il a été cliqué : il ne sera plus affecté par le onMouseOver tant qu'il sera "actif".
Cette solution est idéale en cas de frames ou d'iframes, sans interêt si les pages s'ouvrent dans la même fenetre.
code CSS (entre <head> et </head> :
 
<style TYPE="text/css">
BODY {
text-align:center;margin:0;
}
A.lien, A.lien:visited {
position: relative;
color: #949494;
font-size: 8pt;
font-family: verdana;
font-weight: bold;
text-decoration: none;
width:80px;
background-color:aliceblue;
margin:5px;
padding-left:18px;
padding-right:18px;
}
A.lien:hover {
color: #000000;
background-color:yellow;
}
A.clike, A.clike:visited, A.clike:hover, A.clike:active {
position: relative;
color: #FFFFFF;
font-size: 8pt;
font-family: verdana;
font-weight: bold;
text-decoration: none;
width:80px;
background-color:red;
margin:5px;
padding-left:18px;
padding-right:18px;
}
#menu{
width:470px;
background-color:background;
}
</style>
Le JavaScript (entre <head> et </head> :
 
<script type="text/JavaScript">
function look(idx){
var lk = new Array('aa','bb','cc','dd','ee')// id des liens.
for(var i=0; i<lk.length; ++i)
document.getElementById(lk[i]).className = 'lien'; // tous les liens en class "originale".
document.getElementById(idx).className = 'clike'; // lien cliqué en class "cliqué"
}
</script>
Exemple d'utilisation (entre <body> et </body> :
 
<div id="menu">
<A HREF="#" class="lien" id="aa" onclick="look(this.id);return false;">Home</A>
<A HREF="#" class="lien" id="bb" onclick="look(this.id);return false;">Page 1</A>
<A HREF="#" class="lien" id="cc" onclick="look(this.id);return false;">Page 2</A>
<A HREF="#" class="lien" id="dd" onclick="look(this.id);return false;">Page 3</A>
<A HREF="#" class="lien" id="ee" onclick="look(this.id);return false;">Page 4</A>
</div>
Exemple :
A vous de personnaliser ... tout est modifiable.
Annotations des visiteurs :
 
De didier92 - le 11-08-2005
  Pour moi cela ne fonctionne pas, tout est en désordre..... | De Deny - le 07-01-2005
  C'est une très bonne idée, Leris.
Mais pourquoi ne pas mettre directement :
onClick="this.className='clike';"
| De ObsoleteTears - le 04-10-2004
  Super sympa ce petit script, bravo !
C'est tout bête mais ça marche bien...
Enfin, pour que cela fonctionne avec un target="frame" dans mon script (pour rafraichir une iframe), il m'a fallu virer le return false; dans le onclick="look(this.id);
Sinon tout marche bien ! |
|
>> Poster une annotation sur cette astuce
  Retour à la liste des trucs et astuces
|

|