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:
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:
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 .
Tags und Links css