/ Forside / Teknologi / Udvikling / Java Scripts / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
Java Scripts
#NavnPoint
molokyle 5410
Klaudi 2799
smorch 2439
kim 1360
Harlekin 1134
bentjuul 984
gibson 800
severino 695
Random 675
10  konsulent.. 626
et objekts præcise placering (x,y)
Fra : Anders Hansen


Dato : 16-12-02 12:25

Hejsa, hvordan finder i ud af et objekts præcise placering på siden (x,y)?
Jeg har forsøgt mig med at bruge element.offsetLeft og Top, men det giver
mig kun en "relativ" afstand fra den nærmeste container. Jeg har så forsøgt
at komme videre ved at hente parent og parent indtil jeg rammer hele
document objektet! Men undervejs løber jeg ind i problemer en TD i en TR har
samme offsetTop som TR? Den burde være nul ville jeg mene? (ligeledes har
FORM og TABLE samme offsetLeft)...
Jeg skal bruge (x,y), da jeg agter at placere en menu på denne placering...

MVH/Anders



 
 
Michel Komischke (17-12-2002)
Kommentar
Fra : Michel Komischke


Dato : 17-12-02 10:29

"Anders Hansen" <isl45662@image.dk> skrev i en meddelelse
news:kKiL9.1595$Hl6.125138@news010.worldonline.dk...
> Jeg skal bruge (x,y), da jeg agter at placere en menu på denne
placering...

hvis jeg skal placere "noget" i "noget" på en bestemt lokation, plejer jeg
at tage den på øjemål, og så pinpointe mig ind på positionen.

--
Michel Komischke
Administrator / Maintainer
www.leet.dk



Anders Hansen (17-12-2002)
Kommentar
Fra : Anders Hansen


Dato : 17-12-02 10:35

"Michel Komischke" <leet@leet.dk> skrev i en meddelelse
news:3dfeee4e$0$184$edfadb0f@dread14.news.tele.dk...
> "Anders Hansen" <isl45662@image.dk> skrev i en meddelelse
> news:kKiL9.1595$Hl6.125138@news010.worldonline.dk...
> > Jeg skal bruge (x,y), da jeg agter at placere en menu på denne
> > placering...
>
> hvis jeg skal placere "noget" i "noget" på en bestemt lokation, plejer jeg
> at tage den på øjemål, og så pinpointe mig ind på positionen.
>

Jo, det kan jeg vel også godt... meeen det ville nu være lækkert om jeg blot
kunne angive et element, og derefter få placeret menu, under denne hver
gang, uanset om siden ændre design eller andet!

-Anders



Michel Komischke (17-12-2002)
Kommentar
Fra : Michel Komischke


Dato : 17-12-02 13:46

"Anders Hansen" <isl45662@image.dk> skrev i en meddelelse
news:fdCL9.2692$Hl6.265478@news010.worldonline.dk...
> > > Jeg skal bruge (x,y), da jeg agter at placere en menu på denne
> > > placering...

> > hvis jeg skal placere "noget" i "noget" på en bestemt lokation, plejer
jeg
> > at tage den på øjemål, og så pinpointe mig ind på positionen.

> Jo, det kan jeg vel også godt... meeen det ville nu være lækkert om jeg
blot
> kunne angive et element, og derefter få placeret menu, under denne hver
> gang, uanset om siden ændre design eller andet!

Muligvis, men min metode er nok nemmere end den noget mere omstændelige du
foreslog til at starte med

--
Michel Komischke
Administrator / Maintainer
www.leet.dk



Anders Hansen (17-12-2002)
Kommentar
Fra : Anders Hansen


Dato : 17-12-02 15:19


"Michel Komischke" <leet@leet.dk> skrev i en meddelelse
news:3dff1caa$0$242$edfadb0f@dread14.news.tele.dk...
> Muligvis, men min metode er nok nemmere end den noget mere omstændelige du
> foreslog til at starte med
>
> --

Ja helt sikkert, så længe menu'en kun skal knyttes til ét element, men det
var planen at det skulle være ligegyldigt... Min metode/idé er jo kun
besværlig første gang, derefter er der bare at tilføje komponenten X-antal
gange - uden at tænke videre over det.

/Anders



Lasse Reichstein Nie~ (17-12-2002)
Kommentar
Fra : Lasse Reichstein Nie~


Dato : 17-12-02 12:24

"Anders Hansen" <isl45662@image.dk> writes:

> Hejsa, hvordan finder i ud af et objekts præcise placering på siden (x,y)?
> Jeg har forsøgt mig med at bruge element.offsetLeft og Top, men det giver
> mig kun en "relativ" afstand fra den nærmeste container.

Rigtigt.

> Jeg har så forsøgt
> at komme videre ved at hente parent og parent indtil jeg rammer hele
> document objektet! Men undervejs løber jeg ind i problemer en TD i en TR har
> samme offsetTop som TR? Den burde være nul ville jeg mene? (ligeledes har
> FORM og TABLE samme offsetLeft)...

Fra <URL:http://www.w3.org/TR/REC-CSS2/visudet.html#containing-block-details>:
---
2. For other elements, unless the element is absolutely positioned,
the containing block is formed by the content edge of the nearest
block-level ancestor box.
---

Det er altså ikke nok bare at taget parent'ens position, du skal
skippe videre til dens parent, hvis den selv er er et inline-element.
(hvordan tjekker man nemt det? Man kan kun bruge elem.style.display
hvis display det er specifikt sat på elementet, så det er ikke trivielt
at se om et element er et block-element.)

> Jeg skal bruge (x,y), da jeg agter at placere en menu på denne placering...

Har selv rodet med problemet, og sidder nu og mangler en god måde at afgøre
om et element er block eller inline.

/L
--
Lasse Reichstein Nielsen - lrn@hotpop.com
'Faith without judgement merely degrades the spirit divine.'

Anders Hansen (17-12-2002)
Kommentar
Fra : Anders Hansen


Dato : 17-12-02 13:39

hmm, det var det jeg var bange for...
Du skal have tak for dit input.
Du må gerne lige sige til hvis du finder en elegant løsning :)

- Anders



Lasse Reichstein Nie~ (17-12-2002)
Kommentar
Fra : Lasse Reichstein Nie~


Dato : 17-12-02 14:55

"Anders Hansen" <isl45662@image.dk> writes:

> hmm, det var det jeg var bange for...

Jeg er dog ikke sikker på at browserne beregner offsetLeft ud fra
containing block, så hvor meget teorien er værd ved jeg ikke :)

jeg kan se at table- og td-elementeterne påvirker offset af indholdet
(altså indholdet er offset i forhold til det elements position).

Jeg bruger følgende funktion til at finde det element, som et andet
elements offset er regnet i forhold til:

---
var blockElementTagMatch =/TABLE|TD|BODY/i; // plads til udvidelse

function getElementContainingElement(elem) {
if (getStyle(elem).position == "fixed") return null;
if (getStyle(elem).position == "absolute") {
for(var e=elem.parentNode;e!=document.html;e=e.parentNode) {
if (getStyle(e).position && getStyle(e).position != "static")
   return e;
}
return document.body;
}
for(var e=elem.parentNode;e!=document;e=e.parentNode) {
if(blockElementTagMatch.test(e.tagName)
|| getStyle(e).position && getStyle(e).position!="static")
return e;
}
return document.body;

}
---

Det virker ikke hvis position-egenskaben er sat med et globalt stylesheet,
men ellers ser det ud til at virke i IE6, Mozilla og Opera 7.
Det er heller ikke testet i bund med alle mulige elementer, men kun med
en tabel, en form og et par div'er og span'er.

> Du må gerne lige sige til hvis du finder en elegant løsning :)

Ok, her er så en lidt uelegant.
/L
--
Lasse Reichstein Nielsen - lrn@hotpop.com
'Faith without judgement merely degrades the spirit divine.'

Lasse Reichstein Nie~ (17-12-2002)
Kommentar
Fra : Lasse Reichstein Nie~


Dato : 17-12-02 17:58

"Anders Hansen" <isl45662@image.dk> writes:

> Du må gerne lige sige til hvis du finder en elegant løsning :)

Ok, med mulighed for at være elegant: I både IE6, Opera 6&7 og Mozilla
har elementer en egenskab ved navn offsetParent. Det er det element
offsetTop og offsetLeft bliver regnet i forhold til. Det er ikke
standard, men åbenbart velunderbygget.
<URL:http://www.mozilla.org/docs/dom/domref/dom_el_ref20.html>
<ULR:http://msdn.microsoft.com/workshop/author/dhtml/reference/properties/offsetparent.asp>

Er der nogen der ved om andre browsere understøtter den?

IE4 opfører sig anderledes end senere versioner. For et td-element er
offsetParent tr-elementet i IE4 og table-elementet i IE5+, så det er
altså ikke nok at kigge på elementernes tags, man skal også tage
browserversionen med i beregningen.

/L 'så meget for at prøve at være smart :)'
--
Lasse Reichstein Nielsen - lrn@hotpop.com
'Faith without judgement merely degrades the spirit divine.'

Lasse Reichstein Nie~ (17-12-2002)
Kommentar
Fra : Lasse Reichstein Nie~


Dato : 17-12-02 13:46

Lasse Reichstein Nielsen <lrn@hotpop.com> writes:

> Man kan kun bruge elem.style.display hvis display det er specifikt
> sat på elementet, så det er ikke trivielt at se om et element er et
> block-element.

Jeg kan se at Mozilla har "document.documentView.getComputedStyle(elem)"
(den rigtige DOM2 løsning) og IE5+ har "elem.currentStyle" til at få fat
i den fungerende stil. Opera 7 ser ikke ud til at have nogen af dem,
jeg har ikke lige andre browsere ved hånden.

/L
--
Lasse Reichstein Nielsen - lrn@hotpop.com
'Faith without judgement merely degrades the spirit divine.'

Søg
Reklame
Statistik
Spørgsmål : 177558
Tips : 31968
Nyheder : 719565
Indlæg : 6408929
Brugere : 218888

Månedens bedste
Årets bedste
Sidste års bedste