Mel : offsetParent - Probleme mit Positionierungen

Beitrag lesen

top und left sowieso nicht, falls du style.top/left meinst, diese enthalten nur das was du reingeschrieben hast.

..ich dachte nur wenn das skript den ABstand von oben und von links vom browserfenster von dieser farbpalette berechnen kann dann sollte es das doch auch beim container also einem beliebigen anderen element können.

Mit ist grad eingefallen, dass soweit ich mich erinnere, nicht das Problem in der Ermittlung der Position bestand, sondern in der Positionierung.

ja genau.

D.h. die Funktion die dir Joachim gezeigt hat sollte korrekt die Position ermitteln, nur positionieren mit style.top/left passiert immer relativ und d.h. du musst die Position, die du setzen willst in Relation zum relativen elternelement ermitteln. (ich hab das nicht ausprobiert, das war so soweit ich mich noch erinnere und wie gesagt, dann gab's noch Probleme mit den diversen Browsern)

warte...im skript gibt es da diese zwei relevanten auszüge, ich poste sie jetz einfach mal hier um evtl. aneinandervorbeireden auszuschliessen...

//get dialog position
var buttonElement = document.getElementById(command + '_' + rte);
var iLeftPos = findPosX(buttonElement);
var iTopPos = findPosY(buttonElement) + (buttonElement.offsetHeight + 4);
var oDialog = document.getElementById('cp');
oDialog.style.left = (iLeftPos) + "px";
oDialog.style.top = (iTopPos) + "px";

if ((command == parent.command) && (rte == currentRTE)) {

//if current command dialog is currently open, close it

if (oDialog.style.display == "none")
showHideElement('cp', 'show');

} else {   showHideElement('cp', 'hide');

}
  } else {

showHideElement('cp', 'show');

}

//save current values

parent.command = command;

currentRTE = rte;

} catch (e) {

if (debugMode) alert(e);

}

}

und dann noch:

//positioning functions courtesy of Peter-Paul Koch - http://www.quirksmode.org/

function findPosX(obj) {

var curleft = 0;

if (obj.offsetParent) {

while (obj.offsetParent) {

curleft += obj.offsetLeft;

obj = obj.offsetParent;

}

} else if (obj.x) {

curleft += obj.x;

}

return curleft;

}

function findPosY(obj) {

var curtop = 0;

if (obj.offsetParent) {

while (obj.offsetParent) {

curtop += obj.offsetTop;

obj = obj.offsetParent;

}

} else if (obj.y) {

curtop += obj.y;

}

return curtop;

}

tjaa... ;//