Wie interpretiere ich die "Formale Syntax" von CSS in MDN gefunden?

8

Ich bin auf eine Eigenschaft CSS background gestoßen, die folgenden Wert hat:

%Vor%

Die Syntax der Eigenschaft background ist unter ​​dieser MDN-Seite angegeben. so:

%Vor%

Ist die Reihenfolge der Werte der Eigenschaft background wichtig? Und ganz allgemein: Wie interpretiere ich diese " Formale Syntax ", die auf dem MDN bereitgestellt wird.

    
Talespin_Kit 26.11.2014, 15:41
quelle

2 Antworten

10

Die formale Syntax ist auf der MDN-Site selbst dokumentiert . Die "allgemeinere" Frage, die Sie haben, ist wahrscheinlich zu umfangreich für Stack Overflow: Gehen Sie einfach durch die Dokumentation und kommen Sie zurück, wenn Sie spezielle Fragen haben.

Eine solche spezifische Frage ist, ob die Reihenfolge der Werte für die Eigenschaft background von Bedeutung ist. Die meisten Teile des Hintergrunds (speziell einer bg-Ebene) sind durch "double bars" getrennt, die gemäß der formalen Syntax von MDN ( keine spezifische Reihenfolge ) erforderlich sind. Um die spezifische Dokumentation auf doppelten Balken zu zitieren:

  

Doppelleiste

     

Das Trennen von zwei oder mehr Komponenten durch einen doppelten Balken, ||, bedeutet, dass alle Entitäten Optionen sind: Mindestens einer von ihnen muss vorhanden sein und sie können in beliebiger Reihenfolge erscheinen . In der Regel werden damit die verschiedenen Werte einer Kurzschrift-Eigenschaft definiert.

Als Fußnote, obwohl ich MDN die ganze Zeit liebe und benutze, wäre wahrscheinlich eine autorisierte Quelle W3.org, wo Sie zum Beispiel die backup shorthand syntax sowie eine Erklärung der Syntax in CSS Werte und Einheiten Modul Level 3 . Es sagt im Grunde dasselbe, z.B. über "Doppel Bars":

  

Ein Doppelbalken (||) trennt zwei oder mehr Optionen: Einer oder mehrere müssen in beliebiger Reihenfolge vorkommen.

Dies funktioniert in der Praxis für die background -Eigenschaft, wie Sie in diesem Ausschnitt sehen können, wo unabhängig von der Reihenfolge, in der die Eigenschaften analysiert werden, die gleichen sind:

%Vor% %Vor%
    
Jeroen 26.11.2014 15:49
quelle
4

Reihenfolge spielt keine Rolle. Aber, Reihenfolge ist wichtig.

tl; dr;

Reihenfolge ist nicht wichtig, es ist was es ist, in dieser Dokumentation über MDN und wird auch durch die W3C Specs bestätigt. Ich werde diesen Teil wörtlich wiederholen:

  

Ein doppelter Balken ( || ) trennt zwei oder mehr Optionen: eine oder mehrere davon   muss in beliebiger Reihenfolge auftreten.

Aber spring noch nicht zu dieser Schlussfolgerung!

Reihenfolge ist wichtig. Nehmen wir Ihr Beispiel für background Shorthand Syntax:

%Vor%

Und weil wir die Syntax aller möglichen Eigenschaften für mehrere Hintergründe auflisten, reduzieren wir die Komplexität, indem wir einen Hintergrund auswählen. Es sieht so aus:

%Vor%

Wenn Sie dies in einem Code-Snippet ausführen und sich auf die in Ihrer Frage und der anderen Antwort erwähnte Dokumentation beziehen, könnten Sie glauben, dass all diese Eigenschaften, die durch einen Doppelbalken ( || ) getrennt sind, weggelassen werden können In irgendeiner Reihenfolge. Richtig ?

Falsch.

Obwohl MDN eine gute Referenz ist, ist es nicht vollständig und kann manchmal wichtige Details auslassen. In diesem speziellen Fall, diese beiden Referenzen ...

  1. MDN ref hier : ​​Ссылка
  2. W3C ref hier : ​​Ссылка

... geben Sie die gleiche Syntax an und erklären Sie alle Eigenschaften, aber lassen Sie ein Detail aus.

Sehen Sie sich nun die Eigenschaft box genauer an. Es gibt zwei box -Eigenschaften, die durch Doppelbalken getrennt sind ( || ). Das sollte bedeuten, dass Sie box entweder weglassen oder box in beliebiger Reihenfolge angeben können. Aber das ist nicht ganz richtig . Während Sie natürlich box ganz aus der Kurzschrift weglassen können, können Sie sie nicht in eine beliebige Reihenfolge bringen, ohne unbeabsichtigte Ergebnisse zu erhalten. Dies ist nicht in der MDN-Referenz auf background oben verlinkt angegeben.

Aber in einer anderen Referenz auf background-clip von der gleichen MDN hier:

  1. MDN ref : Ссылка

Es heißt:

  

Kanonische Reihenfolge: Die eindeutige nicht-mehrdeutige Reihenfolge, die durch die formale Grammatik definiert wird

Dies bedeutet, dass die Reihenfolge von Ambiguität der Eigenschaften bestimmt wird. Wenn die Eigenschaften nicht eindeutig sind, spielt die Reihenfolge oder Unterlassung keine Rolle. Wenn die Eigenschaften mehrdeutig sind, spielt die Reihenfolge und / oder Unterlassung eine Rolle.

In Ihrem background shorthand-Beispiel werden die beiden box -Eigenschaften (falls vorhanden) als die erste interpretiert, die background-origin ist und die zweite background-clip ist.

Wenn Sie eine andere Dokumentationsquelle hier lesen:

  1. Opera dev ref : Ссылка

Es heißt:

  

Es gibt ein paar Dinge, auf die Sie achten sollten, wenn Sie den neuen Hintergrund verwenden   Kurzschrift. Wenn nur ein Boxwert angegeben wird, werden sowohl background-clip als auch   background-origin wird auf diesen Wert gesetzt. Wenn zwei angegeben sind, dann die   Der erste wird für den Ursprung und der zweite für den Clip verwendet.

  1. Und W3c finden Sie hier: Ссылка

Gibt Folgendes an:

  

Beachten Sie, dass 'background-clip' 'padding-box', 'background-origin' ist   ist 'border-box', 'background-position' ist 'oben links' (die Initiale   Wert), und das Element hat eine Grenze ungleich null, dann oben und links   des Hintergrundbildes wird abgeschnitten.

Wenn Sie also einen der Werte weglassen, wird dies als background-origin und background-clip interpretiert. Wenn Sie jedoch beide Werte angeben, ist die Reihenfolge wichtig, sonst werden Sie seltsame Ergebnisse erhalten. Außerdem wird das Verhalten durch eine andere Eigenschaft von background-position beeinflusst.

Dies kann anhand dieses Beispiels im folgenden Abschnitt leicht demonstriert werden. In der ersten div ist das Hintergrundbild 15px vom Padding entfernt, wird aber über den Rand hinaus fortgesetzt. Beachten Sie, dass der erste box Wert padding-box und der zweite border-box ist. Im zweiten div befindet sich das Hintergrundbild in der Position 15px vom Rand entfernt, stoppt aber dort, wo das Padding endet. Beachten Sie, dass der erste Wert border-box und der zweite Wert padding-box ist. In der dritten div beginnt das Hintergrundbild vom Rand und setzt sich über den Rand fort. In diesem Fall wird ein Wert weggelassen und sowohl background-origin als auch background-clip erhalten den Wert von border-box .

Snippet:

%Vor% %Vor%

Bottomline:

Es ist gut, auf die Dokumentation zu verweisen. Aber es ist sogar besser, mehrere Quellen zu konsultieren. Diese Antwort bezieht sich auf 5 Quellen . Lesen Sie die W3C-Spezifikationen, aber nicht nur an einer Stelle, lesen Sie alle zugehörigen Eigenschaftsverweise, um zu sehen, wie eine Eigenschaft von anderen Eigenschaftswerten beeinflusst werden kann, und sogar um zu ordnen. Und vergessen Sie nicht, eine Probe zu probieren, Sie werden vielleicht nie wissen, dass eine Überraschung auf Sie warten könnte!

.

    
Abhitalks 27.11.2014 07:11
quelle

Tags und Links