Robert: Opera: Mouseover bei Bild in position: fixed/absolute

Ich beobachte gerade ein sehr seltsames Verhalten von Opera (9.23) bei einem onmouseover / onmouseout auf ein Bild, das innerhalb eines Div mit position: fixed bzw. absolute liegt und selbst nochmals auf position: absolute gesetzt ist (um das Bild vertikal mittig zu platzieren, wie hier beschrieben).

Im Firefox funktioniert es wie gewünscht, der IE7 zeigt auch keinerlei Probleme (der IE6 mit dem Workaround für position: fixed auch nicht), nur Opera scheint das nicht ganz zu mögen.

Eigentlich wollte ich jetzt fragen, wieso das so ist, mit allerlei Beschreibungen und Fehlersuche, allerdings scheint ich nun endlich dahintergekommen zu sein:
Bei Opera darf der fixierte Bereich nicht anders vertikal positioniert sein (top: xx), als der Margin-Wert des <body>.
Ansonsten kommt es zu dem Verhalten, was man auf der Seite beobachten kann, die ich hochgeladen habe: Klick

Der Balken 1 funktioniert wie gewünscht. Hier wird das Bild ausgetauscht bei einem Mouseover (top: 0).
Der Balken 2 funktioniert zunächst auch wie gewünscht. Allerdings wird beim Mouseout die Hälfte des Bildes "vergessen" (top: 30px).
Balken 3 schließlich funktioniert gar nicht mehr. Hier scheint das Bild irgendwie außerhalb irgendeines Bereiches gerutscht zu sein (top: 60px).

Die Höhe des Bildes beträgt 50px. Ein top: 50px reicht noch nicht aus, um bei Balken 3 wieder irgendeine sichtbare Reaktion hervorzurufen. Bei top: 49px erfolgt dann wieder eine (falsche) Reaktion.

Verändert man jetzt das Margin des Bodys auf 30px, funktioniert der zweite Balken, dafür der erste nicht mehr.

Das Mouseover an sich funktioniert. Bei einem Test mit onmouseover="alert('over');" und onmouseout="alert('out');" bekam ich jedoch folgende Reihenfolge, wenn ich über das Bild gefahren bin (unabhängig jetzt, ob es funktioniert oder nicht): 'over' - 'out' - 'over'. Bei FF und IE erschien einfach nur 1x 'over', bis ich den Mauszeiger wieder herunterfuhr. Ist das ein normales Opera-Verhalten, oder war es ganz einfach die Javascript-alerts, die den Mouseover-Effekt unterbrechen (was sie dann nur in Opera tun), und ohne die alerts wäre der Ablauf auch einfach nur 'over' gewesen?

Dieser *pieeep* Fehler hat mich heute den halben Tag gekostet. Ist das ein Bug, oder ein bereits bekanntes Verhalten mit einem möglichen Workaround?
Eventuell eine andere Möglichkeit, das Bild vertikal zu zentrieren?

  1. ich kann zwar jetzt dne fehler nicht nachvollziehen, aber es scheint mir, als würdest du den rollover-effekt mit javascript erzielen. warum nicht per css, was einfacher und universeller ist?

    Gruß,
    Niklas

    1. ich kann zwar jetzt dne fehler nicht nachvollziehen, aber es scheint mir, als würdest du den rollover-effekt mit javascript erzielen. warum nicht per css, was einfacher und universeller ist?

      Gruß,
      Niklas

      Der Fehler ist auch nur im Opera Broswer sichtbar (Version 9.23, WinXP).
      Per CSS alleine geht nicht, da der IE6 zwingend unterstützt werden muss.

      Mir persönlich wäre es auch lieber, wenn ich auf den IE6- keine Rücksicht mehr nehmen müsste, aber leider ist das unumgänglich.

      1. Per CSS alleine geht nicht, da der IE6 zwingend unterstützt werden muss.

        IE6 kann auch :hover, allerdings nur bei links, was in einer navigationsleiste allerdings kein problem sein sollte.

        Gruß,
        Niklas

  2. Hm, da sich keiner mehr gemeldet hat, gehe ich davon aus, dass entweder das Problem nur bei mir auftritt (dann aber auf 2 Rechnern, beide mit WinXP und Opera 9.23), oder dass es sonst noch nie jemandem aufgefallen ist.

    PS: Hab mich mal registriert, deswegen ein anderer Name. Und totgeschlagen von den Benutzereinstellungen.