FipsTheThief
Erfahrenes Mitglied
Also in einen größeren Projekt kam es nun doch endlich zu Problemen nämlich um eine falsche Position von links von 811 px statt 812 pixeln wie es hätte sein müssen.
Im Opera funktioniert es hingegen sehr gut er gibt tatsächlich die 812px aus.
Aber im FF , IE und Safari fehlt allerdings ein pixel und zwar ist dies 1 Rahmen.
Hier mal ein Beispiel welches ich nun nachgebaut habe nur um sicher zu gehen.
Ich habe mal versucht es nachzubauen wie es dann aussieht in etwa und wollte nun die Startposition der blauen box bestimmen man bekommt im FF / IE 6.0 und Safari immer den Wert 210 px.
Wenn man diesen Wert nun nachmisst in einen Zeichenprogramm , bekommt man statt 210px aber auf die 212px. Was dem FF / Safari und IE hier fehlt sind die beiden Rahmen die noch hinzukommen.
Einer ne Idee wie man das umgehen kann ?
clientLeft / clientTop kennt der FF 2.0 leider nicht also fällt das schon mal weg, dort einfach zu prüfen ob das offsetParent Element noch einen Rahmen von 1 px hat :/
Im Opera funktioniert es hingegen sehr gut er gibt tatsächlich die 812px aus.
Aber im FF , IE und Safari fehlt allerdings ein pixel und zwar ist dies 1 Rahmen.
Hier mal ein Beispiel welches ich nun nachgebaut habe nur um sicher zu gehen.
Code:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<style type="text/css">
* {
margin:0px;
padding:0px;
}
.outer {
position:relative;
height:400px;
width:400px;
border:1px solid;
left:20px;
}
.inner {
position:absolute;
width:100px;
height:100px;
border:1px solid;
top:250px;
left:180px;
}
#inner {
position:relative;
top:20px;
left:10px;
height:50px;
width:50px;
background:#0000FF;
}
</style>
<script type="text/javascript">
function getCoords() {
var obj = arguments[0];
var left = 0;
var top = 0;
var objW = obj.offsetWidth;
var objH = obj.offsetHeight;
do {
left += obj.offsetLeft;
top += obj.offsetTop;
obj = obj.offsetParent;
} while (obj.offsetParent);
return {posX:left,posY:top,w:objW,h:objH};
}
window.onload = function () {
var c = getCoords(document.getElementById('inner'));
alert(c.posX);
}
</script>
</head>
<body>
<div class="outer">
<div class="inner">
<div id="inner"></div>
</div>
</div>
</body>
</html>
Ich habe mal versucht es nachzubauen wie es dann aussieht in etwa und wollte nun die Startposition der blauen box bestimmen man bekommt im FF / IE 6.0 und Safari immer den Wert 210 px.
Wenn man diesen Wert nun nachmisst in einen Zeichenprogramm , bekommt man statt 210px aber auf die 212px. Was dem FF / Safari und IE hier fehlt sind die beiden Rahmen die noch hinzukommen.
Einer ne Idee wie man das umgehen kann ?
clientLeft / clientTop kennt der FF 2.0 leider nicht also fällt das schon mal weg, dort einfach zu prüfen ob das offsetParent Element noch einen Rahmen von 1 px hat :/
Zuletzt bearbeitet: