Avatar billede oergaard Nybegynder
30. december 2008 - 19:50 Der er 8 kommentarer og
1 løsning

Hhv. venstre og top position af <span></span> ved mouseOver

Jeg har en menu der oprettes dynamisk. Bredden på hvert element sættes ud fra tekstens længde. (padding: 5px).

Hvordan kan jeg via JS aflæse positionerne, så jeg kan lave en drop-down?
Avatar billede chrisbookwood Nybegynder
31. december 2008 - 15:49 #1
Når du placere et element med position:absolute inde i f.eks. en <div> med position:relative, vil elementet blive placeret efter hvor parent-elementet er. Så når du f.eks. sætter top:50px på elementet med position:absolute, vil det element blive sat 50px under toppen af parent-elementet, og ikke 50px fra toppen af hele siden, som position:absolute normalt gør.
Avatar billede chrisbookwood Nybegynder
31. december 2008 - 15:51 #2
Du kan få en bedre forklaring under overskriften ABSOLUTE POSITIONING på http://www.autisticcuckoo.net/archive.php?id=2004/12/07/relatively-absolute
Avatar billede tjens Nybegynder
02. januar 2009 - 22:51 #3
Du kan aflæse aktuel skærmposision med getBoundingClientRect()

Testeksempel:

<html>
<head>
<title>Show a span's position</title>
<style>
#testSpan1 { color: orange; cursor: pointer;}
#testSpan2 { color: red; cursor: pointer;}
</style>
<script type="text/javascript">
function showPosition(obj) {

    alert ( 'object left, right, top, bottom: ' +
        '\n' + obj.getBoundingClientRect().left +
        '\n' + obj.getBoundingClientRect().right +
        '\n' + obj.getBoundingClientRect().top +
        '\n' + obj.getBoundingClientRect().bottom
    )
}
</script>
</head>

<body>
<h1>Show a span's position</h1>
<p>Click the colered spans: Lorem ipsum dolor sit amet, consectetur adipiscing elit.
Phase<span id='testSpan1' onclick='showPosition(this)'>llus a nun</span>c varius nibh semper porttitor. Aliquam ornare. Aliquam tempor pede eu orci.
Maecenas non risus a<span id='testSpan2' onclick='showPosition(this)'>t felis fringil</span>la gravida. Phasellus sit amet sem.
</p>
</body>
</html>
Avatar billede chrisbookwood Nybegynder
02. januar 2009 - 23:10 #4
Men det er en unådig omvej når det kommer til dropdown menuer og sådanne.
Avatar billede roenving Novice
03. januar 2009 - 12:17 #5
Den gode bruger, jumper, lavede engang en rasende simpel funktion til at aflæse positioner:

function getPos(elm) {//jumper
    for(var zx=zy=0;elm!=null;zx+=elm.offsetLeft,zy+=elm.offsetTop,elm=elm.offsetParent);
    return {x:zx,y:zy}
}

-- og f.eks. coolmenus, der bruges her på sitet bruger en variant af dette til at få de dropdowns her til at fungere !o]

-- og jeg er stærkt i tvivl om, hvilke browsere, der understøtter getBoundingClientRect !-)
Avatar billede oergaard Nybegynder
06. januar 2009 - 08:23 #6
Så er jeg på banen igen.
Avatar billede oergaard Nybegynder
06. januar 2009 - 08:33 #7
for læringens skyld kunne jeg godt tænke mig at udvikle noget i stil med coolmenus. Kender i evt. til nogle bøger / online materiale, som kan hjælpe.
Avatar billede olebole Juniormester
06. januar 2009 - 13:14 #8
<ole>

getBoundingClientRect understøttes i hvertfald af IE, FF og Opera - omend der vist har været lidt buggyness i Opera

/mvh
</bole>
Avatar billede oergaard Nybegynder
09. februar 2010 - 12:46 #9
lukker
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