Avatar billede bearhugx Nybegynder
17. januar 2003 - 09:54 Der er 10 kommentarer og
1 løsning

Få fat i position for et element / positionere en submenu

Hejsa... Hvad jeg spørger om er sikkert _extremt_ nemt, none-the-less har jeg ikke fundet ud af, hvordan man gør..

Jeg har en knap (id="button1") - når man trykker på den, så skal en div (id="ctxmenu") placeres 20 pixels under

Jeg har forsøgt med
  getElementById("ctxmenu").left = getElementById("button1").left;
  getElementById("ctxmenu").top = getElementById("button1").top+20;

men det ser ikke ud til at virke...

Hvordan gør man :-!
/Søren
Avatar billede cdc Novice
17. januar 2003 - 09:57 #1
positioner din div i css
Avatar billede cdc Novice
17. januar 2003 - 10:00 #2
.layer {position: absolute; top: 20px; left: 0px; visibility: hidden;}
set så en class i din div:
<div id="ctxmenu" class="layer">
Avatar billede nikolajdu Nybegynder
17. januar 2003 - 10:02 #3
/cdc jeg tror det er fordi billedet muligvis ikke står samme sted eler skal kunne rykkes hvis vinduet resizes.

Har desværre ikke tid lige nu, men kig evt på den her :

http://www.reflectoria.dk/javascript/SelectSmartLayer/SelectSmartLayer2.htm

Her bliver laget positioneret i forhold til billedet - Skulle være rimeligt enkelt at vende den om.

/Nikolaj
Avatar billede bearhugx Nybegynder
17. januar 2003 - 10:03 #4
nu er det, at jeg ikke ønsker det af to grunde
1) de forskellige knapper må/kan ikke placeres absolut
2) denne popup-metode til kontekst-menuen er generisk  og skal bruges på mange forskellige kontekst-layers - og da jeg ikke på forhånd ved, hvor i dokumentet knapperne, som menuen skal åbnes under, er, så kan jeg hellerikke positionere layerne absolut via CSS

Derudover er jeg også ude efter at lave mine metoder så generiske, så jeg ikke bliver nød til at lave positioneringssæt for hver menu der er på siden -- Javascript må været "klog nok" til at kunne positionere et element relativt (+0, +20) i forhold til et andet element...
Avatar billede cdc Novice
17. januar 2003 - 10:04 #5
ok, det havde jeg ikke taget højde for
Avatar billede bearhugx Nybegynder
17. januar 2003 - 10:28 #6
nikolajdu >> den kode, du har givet, var noget uoverskuelig - det til trods så fandt jeg to dejlige utillityfunktioner (getX og getY), som er blevet kopieret over i min kode - de kan nemlig klare arbejdet :-)

smider du et svar, så har du points inden frokost :-)
Avatar billede Slettet bruger
17. januar 2003 - 10:29 #7
Bearhugx>>Dit layer skal dukke op ovenpå det underliggende dokument ikke?
Avatar billede nikolajdu Nybegynder
17. januar 2003 - 10:29 #8
:))
Avatar billede bearhugx Nybegynder
17. januar 2003 - 10:36 #9
regin >> ja, hvorfor ???
Avatar billede Slettet bruger
17. januar 2003 - 10:37 #10
nevermind
Avatar billede bearhugx Nybegynder
17. januar 2003 - 10:41 #11
points tilfalder nikolajdu

VIRKENDE KODE (som er svar på løsning) :
            function getTop(obj) {
                if (obj == document.body) {
                    return obj.offsetTop
                }    else {
                    return obj.offsetTop + getTop(obj.offsetParent);
                }
            }
            function getLeft(obj) {
                if (obj == document.body) {
                    return obj.offsetLeft
                }    else {
                    return obj.offsetLeft + getLeft(obj.offsetParent);
                }
            }


/Søren
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