kerki: Opera & Netscape

Beitrag lesen

Hallo !

Zunächst ein Kompliment: Man liest (leider) selten so gut forumlierte und dokumentierte Fragestellungen wie deine. :-)

Mal schauen ob ich mit meiner Antwort mithalten kann.

Ich habe mir die Sache jetzt in allen möglichen Varianten in den beiden Browsern Opera 6 und Mozilla 0.9.7 (WIN98SE) angesehen und komme zum selben Ergebnis wie du:

Um die Hintergrundgrafik des Layers zu fixieren, benötigt man für Opera die CSS-Eigenschaft background-attachment:fixed;.

Dieselbe Angabe führt jedoch bei Mozilla dazu, dass dann die Position der Hintergrundgrafik sich nicht mehr auf den Layerausschnitt bezieht, sondern auf das gesamte Browserfenster, wodurch es u.U. gar nicht mehr zu sehen ist.

Welche Verhaltensweise richtig ist, kann ich leider auch nicht sagen.
In der W3C-Spezifikation liest man:
----------------------------------------------------------------------
"If a background image is specified, this property specifies whether
it is fixed with regard to the viewport ('fixed') or scrolls along
with the document ('scroll').

Even if the image is fixed, it is still only visible when it is in the
background or padding area of the element. Thus, unless the image is
tiled ('background-repeat: repeat'), it may be invisible."
----------------------------------------------------------------------
(siehe:http://web3.w3.org/TR/CSS2/colors.html#propdef-background-attachment)

So richtig schlau werde ich daraus nicht. Der zweite Absatz läßt mich aber vermuten, dass Mozillas Verhalten richtig ist, wobei mir persönlich Operas Auslegung sinnvoller erscheint. Zudem erschließt sich mir ansonsten nicht, warum bei background-attachment: scroll; die Positionierung der Grafik wieder innerhalb des Layers erfolgt und, im Mozilla, entgegen dem Wortsinn die Grafik nicht "scrollt".

Du hast zwar nicht nach einer Lösung des Problems gefragt ;-), aber eine Möglichkeit hätte ich anzubieten, die auf JavaScript/DOM beruht:

In der CSS-Definition legt man sich zunächst für eine der beiden Varianten fest:

background-attachment:fixed; /* für Opera */

Beim Laden des Dokumentes ruft man nun eine Funktion auf, die für den jeweils anderen (der beiden) Browser die Angabe auf den gegenteiligen Wert setzt:

z.B.:
    <script type="text/javascript">
        function fixmozilla() {
            if (document.getElementById && !window.opera) {
                document.getElementById("menu").style.backgroundAttachment="scroll";
            }
   }
    </script>

<body onload="fixmozilla();">
    <div id="menu" ...

Theoretisch sollte es auch andersherum gehen (Original-CSS für Mozilla, JavaScript-Korrektur für Opera). Dies ist bei meinen Versuchen allerdings gescheitert. Ich vermute eine DHTML-Schwäche von Opera dahinter.

Ich hoffe, ich konnte helfen.

Gruß,

kerki

P.S. Ein reiner IE-User wird sich fragen, wovon wir überhaupt reden. *g*