Bei der Verwendung von CSS-Kurzschrifteigenschaften bleiben bestimmte Werte unverändert

8

Diese Frage taucht von Zeit zu Zeit in meinem Kopf auf, aber da die Problemumgehung so einfach ist, habe ich mir nie die Mühe gemacht, sie weiter zu untersuchen. Heute dachte ich, ich würde sehen, was Stack Overflow dazu zu sagen hat.

Sagen wir, ich habe das:

%Vor%

Nun nehme ich an, ich möchte margin-top und margin-bottom von #header überschreiben. Normalerweise würde ich margin: 1em 0; machen (vergiss die vorhergehende Regel), aber das wird natürlich auch margin-right und margin-left überschreiben. Was ich möchte ist eine Möglichkeit zu spezifizieren, dass ein bestimmter Wert einer shorthand Eigenschaft sollte sich überhaupt nicht ändern, ist das möglich? Das sind die Optionen, an die ich denken kann:

%Vor%     
Simon 21.02.2012, 15:10
quelle

1 Antwort

2

Dies ist zur Zeit leider nicht möglich. Sie müssen bei der Zuweisung von margin-top bzw. margin-bottom bleiben.

Eine shorthand-Eigenschaft ändert immer die Werte von all ihrer Komponenteneigenschaften (longhand). Alle Werte, die in einer Kurzschrift-Eigenschaft weggelassen werden, werden standardmäßig für ihre jeweiligen Eigenschaften initial verwendet , es sei denn, sie werden durch Kaskadierung oder durch andere Regeln in Abhängigkeit von der Kurzschrift-Eigenschaft gelöst. Zum Beispiel ergeben die folgenden automatischen Ränder auf allen Seiten mit Ausnahme der unteren aufgrund der margin-bottom longhand, die nach der Kurzschrift angezeigt wird:

%Vor%

Wenn es separate shorthands für horizontale Ränder und vertikale Ränder gäbe, wären Sie in der Lage, dies zu tun, ohne sich um das Festhalten von bestimmten longhand Werten kümmern zu müssen, aber im Moment gibt es keine solchen shorthands.

Wie ich bereits in meinem Kommentar erwähnt habe, ist margin: 1em inherit ungültig, da die CSS-weiten Schlüsselwörter inherit (zusammen mit initial und anderen in späteren Standards eingeführten Begriffen) nur in Eigenschaftsdeklarationen vorkommen können, einschließlich Kurzschreibweise Erklärungen. Selbst wenn margin: 1em inherit funktionieren würde, würde das Element horizontale Ränder von seinem übergeordneten Element erben und nicht von seiner eigenen Kaskade (da dies nicht Vererbung bedeutet). Es ist nicht möglich, einen kaskadierten oder spezifizierten Wert für eine Eigenschaft auf einem bestimmten Element abzurufen, und dies zu tun, wäre mit hoher Wahrscheinlichkeit fehleranfällig, da die unterste Deklaration des spezifischsten Selektors den aufgelösten Wert enthält könnte überall sein .

    
BoltClock 21.02.2012, 15:20
quelle

Tags und Links