2010-04-29 3 views
1

J'utilise ce script pour afficher une image sous forme de popup au passage de la souris. La difficulté que je rencontre est qu'il ne se positionne pas bien dans un moniteur différent. Cela doit être quelque chose à voir avec la résolution.javascript div positionnement

function LargeImage(obj, e) 
{ 
    var imgbtn=document.getElementById('<%=imgbtn1.ClientID%>'); 
    imgbtn.src=obj;//source of the image 
    document.getElementById('imgbox').style.visibility="visible"; 
    document.getElementById('imgbox').style.position="absolute"; 
    document.getElementById('imgbox').style.left=e.clientX-150 + "px"; 
    document.getElementById('imgbox').style.top=225 +"px"; 
} 

<div id="imgbox"><asp:imagebutton id="imgbtn1" runat="server" OnClick="ImageButton4_Click"/></div> 

Merci.

+1

Où voulez-vous que cela se termine par rapport à où se trouve-t-il dans différentes résolutions? – justkt

+0

Ikke a eu la gentillesse de réparer celui-ci pour vous, mais pour référence future, s'il vous plaît lire sur le formatage de votre code: http://stackoverflow.com/editing-help (Ceci est le lien de l'icône [?] Au-dessus de l'édition boîte pour les questions.) –

+0

Et quel est le problème? Il n'apparaît pas près du pointeur de la souris? Je peux imaginer que ce serait le cas dans la valeur y, car vous le coder en dur à 225 px et l'utilisateur peut cliquer beaucoup plus bas sur l'écran. – justkt

Répondre

4

vous pouvez le faire

document.getElementById('imgbox').style.position="fixed"; 
document.getElementById('imgbox').style.left=e.clientX + "px"; 
document.getElementById('imgbox').style.top= e.clientY + "px"; 

qui affiche l'image à l'emplacement de la souris dans la fenêtre (popup séjours mis si l'utilisateur fait défiler).

sinon vous devez compenser le défilement des documents, quelque chose comme

modifier: fixer la valeur de défilement (pour Firefox)

document.getElementById('imgbox').style.position="absolute"; 
document.getElementById('imgbox').style.left=String(e.clientX+document.documentElement.scrollLeft)+"px"; 
document.getElementById('imgbox').style.top=String(e.clientY+document.documentElement.scrollTop)+"px"; 

vous pouvez regarder ici pour trouver une démo de déterminer quelle propriété à lire pour faire défiler les décalages par navigateur http://www.howtocreate.co.uk/tutorials/javascript/browserwindow

+0

Dans le premier script, le popup reste si l'utilisateur fait défiler comme vous l'avez mentionné .. le deuxième script ne se mouille pas correctement pour moi .. – SAK

0

On dirait que vous modifiez le style des imgbox div afin que la position left est 150px gauche du curseur, mais la position top est juste 225px du haut de son récipient (probablement). Le style top doit-il également être relatif au curseur?

En outre, nous ne pouvons pas voir à partir de votre code affiché quand ou comment votre fonction est appelée. Nous n'avons pas non plus de contexte pour l'élément imgbox. Plus d'informations seraient utiles.