Avatar billede johnny_michaelsen Nybegynder
07. juli 2005 - 15:20 Der er 14 kommentarer og
1 løsning

vise en DIV med mouse position?

Hey Eksperter

Jeg vil gerne i forbindelse med en tilmeldingsformular have nogle hjælpetekster tilknyttet de forskellige formelementer. Jeg har et lille ikon, som jeg gerne vil have, ved en onMouseOver funktion, til at vise et DIV-layer med en position ud fra musens X og Y koordination. Kan det mon lade sig at gøre??

/JBOY
Avatar billede roenving Novice
07. juli 2005 - 15:33 #1
Er det sådan noget lignende, så kan vi jo tilføje din html-kode:

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
    "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<title>Show tooltip</title>
<meta name="Generator" content="Stone's WebWriter 4">
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<style type="text/css">
.tooltip{position:absolute;top:0;left:0;visibility:hidden;border:1px solid black;padding:3px;background:#DCE7E0;font-family:verdana;font-size:8px;}
</style>
<script type="text/javascript">
var Ymouse = Xmouse = 0;
var ns6 = (document.getElementById && !document.all)?true:false;
var d = (ns6)?window:document;
d.onmousemove = getMousePos;

function getMousePos(evnt) {
  Ymouse = (ns6)?evnt.pageY:event.y;
  Xmouse = (ns6)?evnt.pageX:event.x;
  var inf = (ns6)?document.getElementById('info'):document.all.info;
  inf.style.left = Xmouse + 15;
  inf.style.top = Ymouse;
}

function show(){
  if(document.getElementById){
    document.getElementById('info').style.visibility = 'visible';
  }else if(document.all){
    document.all.info.style.visibility = 'visible';
  }
}

function hide(){
  if(document.getElementById){
    document.getElementById('info').style.visibility = 'hidden';
  }else if(document.all){
    document.all.info.style.visibility = 'hidden';
  }
}

</script>
</head>
<body>

<a href="#" id="link" onmouseout="hide();" onmouseover="show();">Hej</a>

<div id="info" class="tooltip">Hej med dig,<br> - skal vi have en lille sludder?</div>

</body>
</html>
Avatar billede johnny_michaelsen Nybegynder
07. juli 2005 - 16:47 #2
Det ser rigtig fint ud, og ja det er lige præcis det jeg mente.

Hvordan med forskellige browsertyper og det javaScript der er andvendt??

/JBOY
Avatar billede roenving Novice
07. juli 2005 - 16:53 #3
Den burde kunne du i alle nutidige browsere, dog kan jeg ikke svare for khtml- og ikke-Gecko-mac-browsere ...
Avatar billede johnny_michaelsen Nybegynder
07. juli 2005 - 16:59 #4
Nu er jeg ikke den store kodehaj... Kan det lade sig at gøre, at have flere forskellige tooltips på samme side??
Avatar billede roenving Novice
07. juli 2005 - 17:12 #5
Sagtens, og det kan laves på flere måder ...

-- hvis du ikke har så mange, vil det nok være mest overskueligt simpelthen at have en stribe divs til de forskellige links, f.eks.

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
    "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<title>Show tooltip</title>
<meta name="Generator" content="Stone's WebWriter 4">
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<style type="text/css">
.tooltip{position:absolute;top:0;left:0;visibility:hidden;border:1px solid black;padding:3px;background:#DCE7E0;font-family:verdana;font-size:10px;}
</style>
<script type="text/javascript">
var Ymouse = Xmouse = 0;
var ns6 = (document.getElementById && !document.all)?true:false;
var d = (ns6)?window:document;
d.onmousemove = getMousePos;

function getMousePos(evnt) {
  Ymouse = (ns6)?evnt.pageY:event.y;
  Xmouse = (ns6)?evnt.pageX:event.x;
}

function show(elm){
  if(document.getElementById){
    document.getElementById(elm).style.visibility = 'visible';
  }else if(document.all){
    document.all[elm].style.visibility = 'visible';
  }
  var inf = (ns6)?document.getElementById(elm):document.all[elm];
  inf.style.left = Xmouse + 15;
  inf.style.top = Ymouse;
}

function hide(elm){
  if(document.getElementById){
    document.getElementById(elm).style.visibility = 'hidden';
  }else if(document.all){
    document.all[elm].style.visibility = 'hidden';
  }
}

</script>
</head>
<body>

<a href="#" id="link" onmouseout="hide('info1');" onmouseover="show('info1');">Hej</a><br><br>

<div id="info1" class="tooltip">Hej med dig, 1<br> - skal vi have en lille sludder?</div>

<a href="#" id="link" onmouseout="hide('info2');" onmouseover="show('info2');">Hej</a><br><br>

<div id="info2" class="tooltip">Hej med dig, 2<br> - skal vi have en lille sludder?</div>

<a href="#" id="link" onmouseout="hide('info3');" onmouseover="show('info3');">Hej</a><br><br>

<div id="info3" class="tooltip">Hej med dig, 3<br> - skal vi have en lille sludder?</div>

<a href="#" id="link" onmouseout="hide('info4');" onmouseover="show('info4');">Hej</a><br><br>

<div id="info4" class="tooltip">Hej med dig, 4<br> - skal vi have en lille sludder?</div>

<a href="#" id="link" onmouseout="hide('info5');" onmouseover="show('info5');">Hej</a><br><br>

<div id="info5" class="tooltip">Hej med dig, 5<br> - skal vi have en lille sludder?</div>

</body>
</html>

-- det spiller ingen trille hvilken rækkefølge links og info-divs har, men det er meget vigtigt at id i diverne stemmer overens med de navne funktionerne bliver kaldt med !-)

-- iøvrigt kan det også sagtens laves mere generisk, så man måske tog udgangspunkt i en property på linket, når man skulle vise noget !-)

-- en fuldstændig anden tilgangsvinkel kunne være at genbruge den samme div, men så udskifte indholdet efter hvilket link, som skulle vises !o]

Og så kan man faktisk smide mange forskellige ting ind i sådan en fætter, et mere kuriøst eksempel kan findes her: http://www.eksperten.dk/spm/510856 !-)
Avatar billede johnny_michaelsen Nybegynder
07. juli 2005 - 17:30 #6
Kanon... det er sq en vinder! Du har fortjent pointene...

Takker

/JBOY
Avatar billede johnny_michaelsen Nybegynder
07. juli 2005 - 17:31 #7
Hvis du vil smide et svar ;o)
Avatar billede roenving Novice
07. juli 2005 - 17:34 #8
Behold nu selv nogle af dine point, for 200 er klart for meget !-)

Velbekomme '-)
Avatar billede roenving Novice
07. juli 2005 - 17:34 #9
;O)
Avatar billede roenving Novice
07. juli 2005 - 17:34 #10
;O)
Avatar billede roenving Novice
29. juli 2005 - 11:20 #11
-- og tak for point ;~}
Avatar billede johnny_michaelsen Nybegynder
29. juli 2005 - 11:25 #12
Lige et sidste spørgsmål...

Jeg har et lille problem med at mit tooltip ikke er konstant ved mouseover. Kan ses på nedenstående link.

http://www.danskredningstjeneste.dk/afbestil_nf.aspx

Ved ikke om det kun er i min browser at det enkelte tooltip hopper i visibility når jeg bevæger musen over spørgsmålstegnet!??

/JBOY
Avatar billede roenving Novice
29. juli 2005 - 11:36 #13
Hrm, den kan jeg umiddelbart gennemskue, men når jeg prøver på et tekst-link står den klippefast ...

-- jeg overvejede, om det kunne være fordi cursoren kom over andre elementer, men det ser ikke sådan ud, da reaktionen kommer uanset hvilken retning musen bevæges i ...

-- en hurtig test kunne lige være at prøve at sætte den på et tekstlink !-)
Avatar billede johnny_michaelsen Nybegynder
29. juli 2005 - 11:53 #14
Ser desværre ud til at være samme problem ved txtlinks...

Der er kun det ene element ved spørgsmålstegnet, så ved ikke lige hvad der kan forstyrre...

Jeg må rode lidt mere med det.

Tak for hjælpen

/JBOY
Avatar billede olebole Juniormester
24. juli 2008 - 19:38 #15
<ole>

I anledning af reference til denne tråd, er der (24. juli 2008) blevet lavet en opdateret version af roenvings script her:
    http://www.eksperten.dk/spm/839382#rid7164104

/mvh
</bole>
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester