Avatar billede tknudsen Nybegynder
01. oktober 2001 - 21:29 Der er 12 kommentarer og
2 løsninger

koordinater på <div> tag

Hvordan finder jeg koordinaterne på et <div> tag ?

Jeg vil gerne kunne placere et <div> tag afhængigt af placeringen af et andet <div> tag.
Avatar billede Lasse Novice
01. oktober 2001 - 21:36 #1
for at finde koordinatet på et div tag, skal div taggen have et reference navn. Det kan gøres således:

<div id=\"etellerandetnavn\">
bla bla bla
</div>

senere kan du vha. javascript skrive således:

alert(window.etellerandetnavn.style.left + \' - \' + window.etellerandetnavn.style.top)

du vil nu få oplyst positionen af layeret.

skal du have en start position på layeret, kan du skrive:

<div id=\"etellerandetnavn\" style=\"left:xpos;top:ypos;position:absolute\">

hvor xpos og ypos er positionen fra venstre hjørne af den valgte frame
Avatar billede Lasse Novice
01. oktober 2001 - 21:38 #2
vil du derimod have en position fra hvor du står pt. på siden(når browseren er i gang med at generere siden), udskifter du absolute med relative. Herefter vil xpos, ypos, være relativt til der hvor browseren var sidst igang med at skrive....
Avatar billede tknudsen Nybegynder
01. oktober 2001 - 21:55 #3
hvad med højde og bredde ?
Avatar billede olebole Juniormester
01. oktober 2001 - 21:56 #4
<ole>
gooky >> du har tydeligvis ikke selv prøvet den alert! Det returnerer et tal efterfulgt af \'px\' - hvilket gør, at du ikke har et tal, du kan positionere et andet <div> efter. Du skal derfor parse det returnerede som integer med \'parseInt(det_returnerede)\'.
Samtidig spørger du, hvilke koordinater, div\'et er blevet anbragt i med CSS. Hvis du ikke har sat \'left\' og \'top\' med CSS, får du intet retur.

Den rigtige måde er at bruge \'HTMLelement.offsetLeft\' og \'HTMLelement.offsetTop\', hvor \'HTMLelement\' er div\'et, kaldt på passende måde - f.eks: \'document.getElementById(divID)\'
/mvh
</bole>
Avatar billede olebole Juniormester
01. oktober 2001 - 21:56 #5
\'HTMLelement.offsetWidth\' og \'HTMLelement.offsetHeight\'
Avatar billede emileej Nybegynder
01. oktober 2001 - 22:08 #6
Omskrevet til en nyttig funktion jeg selv bruger, som jeg i tidernes morgen fik hjælp til af olebole og jakoba:

function getDim(obj){
    var rd = { x:0 ,y:0 };
    if(document.layers) { // NS 4
        rd.x = obj.x;
        rd.y = obj.y;
    }else{              // IE og NS 6
        var elm = obj;
        do{
            rd.x += parseInt( elm.offsetLeft );
            rd.y += parseInt( elm.offsetTop );
            elm = elm.offsetParent;
        }while(elm);
    };
    return rd;
};

Eks:
var mitDiv=document.getElementById(\"mitDivFelt\");
var pos=getDim(mitDiv);
alert(\"x:\"+pos.x+\" y:\"+pos.y);

Obs: Funktionen kan også anvendes på andre elementer end div felter - eks. et billede eller en tabel...

E-)mil
Avatar billede olebole Juniormester
01. oktober 2001 - 22:49 #7
Bello bello, Emilio  :)
Den kan f.eks. også finde positionen på et billede, dybt begravet i mange div/tabel-nestninger
/mvh
Avatar billede emileej Nybegynder
02. oktober 2001 - 07:51 #8
yup :P
Avatar billede tknudsen Nybegynder
02. oktober 2001 - 10:44 #9
Det her var hvad jeg skulle bruge:

function getDim(id)
{
    var dim = {x:0, y:0, w:0, h:0};
    var obj = document.getElementById(id);

    dim.x = parseInt(obj.offsetLeft);
    dim.y = parseInt(obj.offsetTop);
    dim.w = parseInt(obj.offsetWidth);
    dim.h = parseInt(obj.offsetHeight);

    return dim;
}

Jeg var ikke klar over metoden til at oprette en struct-lignende struktur...

mange tak
Avatar billede tknudsen Nybegynder
02. oktober 2001 - 10:47 #10
ups - kom til at gi gooky points istedet for emileej - sorry

opretter lige et 10-points q til emileej
Avatar billede jumper Nybegynder
02. oktober 2001 - 14:18 #11
emileej > Jeg har forresten omskrevet koden i min faqts artikel:

http://www.faqts.com/knowledge_base/view.phtml/aid/9095/fid/128

/Thor
Avatar billede emileej Nybegynder
02. oktober 2001 - 16:25 #12
>>tknudsen
Behold du bare pointene :)
Hvis de skulle gives til nogen, var det ole i skole, da det var ham der hjalp mig med funktionen i tidernes morgen, og det var også ham der i dette spørgsmål, gav de grundlæggende retningslinier...

E-)mil
Avatar billede olebole Juniormester
02. oktober 2001 - 16:27 #13
I så fald slipper du for denne gang, tknudsen. Jeg har rigeligt og vi \'mødes\' zq nok en anden gang  ;o)
/mvh
Avatar billede emileej Nybegynder
02. oktober 2001 - 19:04 #14
>>ole
Når du nu kommenterer her, kan du så ikk ozz kigge på det spm. jeg har gang i? :)~
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