uepselon: Probleme mit float im Internet Explorer

Hallo,

ich habe ein paar "div" Bereiche von denen ich die Position per JavaScript auslesen möchte. Die div's sind hierbei nebeneinander dargestellt (float:left).

Lese ich nun in JS mit divObject.offsetLeft den Y-Wert aus, so bekomme ich den richtigen Wert (absoluter Wert).

setze ich float auf "none", also die div's werden untereinander dargestellt, steht in divObject.offsetLeft nur noch der relative Y-Wert.

Zur Info: die div's sind nochmal innerhalb eines div's und einer Tablelle!

Bsp:

<table align="center">
<tr>
<td>
<div id="main">
 <div id="divObject1">Text 123</div>
 <div id="divObject2">Text 234</div>
 <div id="divObject3">Text 345</div>
</div>
</td>
</tr>
</table>

In Firefox klappt alles einwandfrei, nur im IE 5.0 tritt das Problem auf. (IE > 5.0 weiß ich nicht).

Finde irgendwie keinen passenden workaround.

2. Problem im IE:

Der Inhalt der div's "Text 123..." wird immer umgebrochen, also "Text\n123"! Sogar wenn ich mit CSS "white-space:nowrap" sage. Im Firefox gehts mal wieder problemlos.

Gruß,

ueps

  1. Hallo uepselon

    1. Problem im IE:

    Der Inhalt der div's "Text 123..." wird immer umgebrochen, also "Text\n123"! Sogar wenn ich mit CSS "white-space:nowrap" sage. Im Firefox gehts mal wieder problemlos.

    Im IE 6.0 absolut nicht der Fall.
    Allerdings fehlt Dein CSS, fehlt Dein Javascript.
    Wie soll man da entscheiden, ob der IE etwas falsch macht oder etwa Du?

    Bitte etwas mehr Code, wenn wir Dir vernünftig helfen sollen.
    Noch besser wäre ein Link!

    Freundliche Grüße

    Vinzenz

    1. Hi,

      Im IE 6.0 absolut nicht der Fall.

      ja bei mir gehts da auch, hab gerade mal den IE 6 drauf gemacht.

      Allerdings fehlt Dein CSS, fehlt Dein Javascript.
      Wie soll man da entscheiden, ob der IE etwas falsch macht oder etwa Du?

      Hm, das ganze ist ein bissl komplexer daher hab ich es mal recht spartanisch umschrieben, ich vermute allerdings dass es sich um ein Browser-Problem handelt. Werd es nochmal selbst näher untersuchen.

      Bitte etwas mehr Code, wenn wir Dir vernünftig helfen sollen.
      Noch besser wäre ein Link!

      Stell morgen mal den Code ins Netz, hab die Anwendung leider nicht auf dem Rechner der am Internet hängt.

      Gruß,

      ueps

  2. Hallo,

    Der Inhalt der div's "Text 123..." wird immer umgebrochen, also "Text\n123"! Sogar wenn ich mit CSS "white-space:nowrap" sage. Im Firefox gehts mal wieder problemlos.

    mit einer Methode wie hier bei Listen angewandt, float auch für das umgebende
    Element einzusetzen, tritt der Effekt offenbar nicht auf:

    #main{float:left}
    #main div{float:left}

    setze ich float auf "none", also die div's werden untereinander dargestellt, steht in divObject.offsetLeft nur noch der relative Y-Wert.

    Hier erhalte ich offenbar immer relative Werte bezogen auf #main, beim zweiten Div,
    alert(document.all.divObject2.offsetLeft), entweder 55 (float) oder 1, mit IE 5,55,6.

    Grüsse

    Cyx23

    1. Hallo,

      #main{float:left}
      #main div{float:left}

      werd ich mal versuchen, allerdings tritt das Problem mit dem Umbruch bei mir auch nur auf, wenn das main div absolut positioniert wird und auch nur im IE 5.

      Hier erhalte ich offenbar immer relative Werte bezogen auf #main, beim zweiten Div,
      alert(document.all.divObject2.offsetLeft), entweder 55 (float) oder 1, mit IE 5,55,6.

      Das liegt wohl daran, dass du den untergeordneten div's die css Eigenschaft position:relative geben musst. Dann kommt mit document.getElementById("divObject1").offsetLeft der absolute Wert zurück, zumindest in Firefox und IE 6. Im IE 5 nur wenn man float:left definiert, mit float:none wird komischer Weise der relative Wert genommen, k.A. wieso. Aber ich sollte eben auch im IE 5 den absoluten Wert bekommen.

      Wie ermittelt man den generell die absolute Position eines div's, egal ob position:absolut,relative oder fixed?

      Oder geht das nur mit den entsprechenden CSS Eigenschaften?

      Gruß,

      ueps