Afficher un cadre(avec texte) à coté de la souris
Bonjour,
Voici ce que je souhaiterais faire:
J'ai un gros tableau (200 cases). Je voudrais qu'un cadre s'affiche à coté du curseur indiquant quelle ligne/colonne correspond à la position du curseur.
J'ai trouvé un code que j'ai adapté. Ce code fonctionne parfaitement mais est assez lent et utilise vite 100% du cpu si le curseur bouge rapidement.
J'apelle en fait une fonction javascript sur le onmouseover des td, et j'apelle une autre fonction qui efface ce cadre lors du onMouseOut.
Voici le code du tableau:
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
| <?
$ligne=1;
$col=1;
?>
<table align="center" bgcolor="#CCCCCC" cellpadding="0" cellspacing="0">
<? while($ligne<=10){ ?>
<tr>
<? while($col<=20){ ?>
<td onmouseover="rollOn(<? echo $ligne; ?>,<? echo $col; ?>)" onMouseOut="rollOut()" onclick="Reserv(<? echo $ligne; ?>,<? echo $col; ?>)"></td>
<? $col++; } ?>
</tr>
<? $ligne++;
$col = 1;
} ?>
</table> |
Les fonctions javascripts:
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48
| var brWidth = 0, xCoord, yCoord;
if (typeof(window.innerWidth)=='number') {
brWidth = window.innerWidth;
}
else if (document.documentElement && (document.documentElement.clientWidth || document.documentElement.clientHeight)) {
brWidth = document.documentElement.clientWidth;
}
function rollOn(l,c) {
icon = document.getElementById('tooltip');
icon.innerHTML = "Ligne: "+l+"<br \>Colonne: "+c;
icon.style.position='absolute';
if (xCoord <= (brWidth-200)) {
icon.style.left = xCoord + 5 + "px";
} else {
icon.style.left = xCoord - 205 + "px";
}
icon.style.top = yCoord+5+"px";
icon.style.visibility = 'visible';
}
function rollOut() {
icon = document.getElementById('tooltip');
icon.style.visibility='hidden';
}
function checkwhere(e) {
if (document.all) {
xCoord = event.clientX+document.documentElement.scrollLeft;
yCoord = event.clientY+document.documentElement.scrollTop;
}
else if (document.getElementById) {
xCoord = e.clientX+document.documentElement.scrollLeft;
yCoord = e.clientY+document.documentElement.scrollTop;
}
}
document.onmousemove = checkwhere;
if(document.captureEvents) {document.captureEvents(Event.MOUSEMOVE);}
function Reserv(l,c) {
var adr="reserv.php?l="+l+"&c="+c;
window.location.replace(adr);
} |
Et la feuille de style (du bloc affiché)
Code:
1 2 3
| .tooltip {
BORDER-RIGHT: #000000 1px solid; PADDING-RIGHT: 4px; BORDER-TOP: #000000 1px solid; PADDING-LEFT: 4px; FONT-WEIGHT: bold; FONT-SIZE: 0.8em; FILTER: progid:DXImageTransform.Microsoft.AlphaImageLoader(src="images/drapsurv.gif",sizingMethod="scale"); VISIBILITY: hidden; PADDING-BOTTOM: 0px; BORDER-LEFT: #000000 1px solid; height:80px; WIDTH: 200px; COLOR: #000000; PADDING-TOP: 0px; BORDER-BOTTOM: #000000 1px solid; POSITION: absolute
} |
Il y a une image de fond dans ce cadre, mais ce n'est pas celà qui fait ralentir.
Je pense qu'il faudrait un code qui affiche un cadre en suivant la souris si celle-ci est dans le tableau et actualise le contenu du cadre en fonction de la cellule survolée...
Si vous connaissez un script qui fait ceci ou une facon d'optimiser le code plus haut, je suis preneur :lol: