Ingomar Wesp: Vorrangregeln bei Mehrfachdefinitionen

Hallo Forumsgenossinnen und -genossen,

Die Frage, die ich zu stellen gedenke, ist - wie meistens bei mir - eher theoretischer Natur (in den Praxis duerfte - ausser bei mir natuerlich - der Bedarfsfall wohl eher selten eintreten.)

Sie lautet: Gibt es klare Vorschriften, wie bei externen CSS-Dateien Mehrfachdefinitionen fuer ein und das selbe Element zu behandeln sind.

Bei inline-Definitionen ist beispielsweise festgelegt, dass diese Vorrang gegenueber von ausserhalb kommenden haben. Was aber, wenn sich mehrere in eigenen CSS-Dateien ausgelagerte Definitionen gegenseitig widersprechen?

Wird die zuletzt eingebettete Datei bevorzugt behandelt, ist das dem Zufall (Ladezeit) ueberlassen oder ist es ueberhaupt verboten hier Konflikte zu produzieren?

Leider hat das Schmoekern in der CSS-Spezifikation wenig hilfreiches ergeben. Vielleicht ist ja ein Element aus der Forumsbenutzermenge so liebenswert, mich von der Leitung zu stossen, auf der ich wohl stehe.

Vielen Dank, ein
--- Ingomar Wesp,
der noch viel Kaffee trinken muss, bis er endlich munter wird...

  1. Moin! (Vielleicht hilft ja die Benutzung von morgendlichen Worten beim Munterwerden)

    Sie lautet: Gibt es klare Vorschriften, wie bei externen CSS-Dateien Mehrfachdefinitionen fuer ein und das selbe Element zu behandeln sind.

    In diesem Fall gilt die Umkehr eines alten Sprichwortes: Wer zuletzt kommt, malt zuerst. :)

    Was also in CSS zuletzt definiert wurde, das gilt. Damit kann man beispielsweise eine CSS-Datei für den Netscape 4 zuerst einbinden, und dann weitere CSS-Dateien, die diesen Netscape durcheinanderbringen würde, über einen für Netscape unbekannten Mechanismus zusätzlich einbinden. In der Summe gilt das, was in beiden Dateien festgelegt wurde, wobei die letzte Definition gültig ist, während Definitionen, die bisher noch nicht festgelegt wurden, sich ergänzen.

    Am besten mal ein Beispiel (ganz unabhängig von diesem Netscape-Kram):

    Erste Datei:
    h1 { font-family:sans-serif; font-size:20px; color:white; background:black; }

    Zweite Datei:
    h1 { margin:30px; font-size:15px; }

    Resultat:
    H1 wird mit serifenloser Schrift Weiß auf Schwarz dargestellt. Drum herum ist 30 Pixel Rand, und die Schriftgröße ist 15 Pixel groß.

    Alle Klarheiten beseitigt? Ich muß weg, das Kapitel CSS und die verschiedenen Browserdarstellungen testen...

    <p style="voice:'aus der Ferne';">Mein Gott, kann der IE6 überhaupt mal was? Microsoft hat ja sowas von geschlafen...</p>

    - Sven Rautenberg

    1. Hallo,

      Bestesten (Super-Superlativ) Dank fuer die Erklaerung. In der Tat hatte ich Aehnliches vermutet.

      Einzig draengt sich mir noch folgende Frage auf (nur wenn's wer ohnehin weiss, nicht, dass wer extra nachschaut - stoebern kann und sollte ich selber. Hab's nur noch nicht gefunden):

      Wo ist dieses Verhalten festgelegt bzw. ist das zwingend oder kann es (theoretisch) jeder Browserhersteller fuer sich entscheiden?

      Friedliebende Gruesse,
      --- Ingomar Wesp

      1. Hallo nochmal,

        Wo ist dieses Verhalten festgelegt bzw. ist das zwingend oder kann es (theoretisch) jeder Browserhersteller fuer sich entscheiden?

        Ich hab's schon, sorry:

        CSS Spezifikation 6.4.1 Cascading order

        Finally, sort by order specified: if two rules have the same weight, origin and specificity, the latter specified wins.

        Nochmal friedliebende Gruesse,
        --- Ingomar Wesp