Die Standardstile eines Browsers werden in seinem User Agent-Stylesheet definiert, dessen Quellen Sie hier finden . Leider scheint die Spezifikation Cascading and Inheritance Level 3 keine Möglichkeit zu bieten, eine Stileigenschaft auf die Standardeinstellung ihres Browsers zurückzusetzen. Es ist jedoch geplant, ein Schlüsselwort dafür in Cascading and Inheritance Level 4 wieder einzuführen - die Arbeitsgruppe hat sich einfach noch nicht auf einen Namen für dieses Schlüsselwort festgelegt (der Link sagt derzeit revert
, aber es ist nicht endgültig). Informationen zur Browserunterstützung für revert
finden Sie auf caniuse.com .
Während die Level 3-Spezifikation ein initial
Schlüsselwort einführt , setzt das Festlegen einer Eigenschaft auf ihren Anfangswert sie auf ihren Standardwert zurück, wie er durch CSS definiert wurde und nicht wie vom Browser definiert . Der Anfangswert von display
ist inline
; Dies wird hier angegeben . Das initial
Schlüsselwort bezieht sich auf diesen Wert, nicht auf die Standardeinstellung des Browsers. Die Spezifikation selbst macht diesen Hinweis unter der all
Eigenschaft :
Wenn ein Autor beispielsweise all: initial
ein Element angibt , blockiert er die gesamte Vererbung und setzt alle Eigenschaften zurück, als ob in den Autoren-, Benutzer- oder Benutzeragentenebenen der Kaskade keine Regeln angezeigt würden.
Dies kann für das Stammelement eines in einer Seite enthaltenen "Widgets" nützlich sein, das die Stile der äußeren Seite nicht erben möchte. Beachten Sie jedoch, dass jeder "Standard" -Stil, der auf dieses Element angewendet wird (z. B. display: block
aus dem UA-Stylesheet für Blockelemente wie <div>
), ebenfalls weggeblasen wird.
Ich denke, die einzige Möglichkeit, derzeit reines CSS zu verwenden, besteht darin, den Standardwert des Browsers nachzuschlagen und manuell darauf einzustellen:
div.foo { display: inline-block; }
div.foo.bar { display: block; }
(Eine Alternative zu den oben genannten wäre div.foo:not(.bar) { display: inline-block; }
, aber dazu muss der ursprüngliche Selektor geändert und nicht überschrieben werden.)
unset
.