!important sollte als !legal gedacht werden

!important ist eine ursprünglich rechtlich bedingte CSS-Regel. Passt euer mentales Modell dieser Regel dementsprechend an!

Ich wusste, dass die Nutzung der CSS-Regel !important ein starker Hinweis darauf war, dass irgendwo in der Styling-Kaskade etwas nicht mehr stimmte (oder man sie falsch nutzte) und man sozusagen ein „go to“ zur Verfügung gestellt bekam, um eine Regel erzwungen vorrangig behandeln konnte. Dass aber diese Regel ein ursprünglich aus rechtlichen Gründen eingefügter Mechanismus ist, erfuhr ich erst heute. Einer der Co-Autoren der CSS-Spezifikation – Steven Pemberton – schrieb am 21. März 2022 in einem Tweet (der heute zitiert in meiner Timeline aufschien):

!important was added for one reason only: laws in the US that require certain text to be in a given font-size. !important stops the cascade from changing it. Anything else is probably misuse, and a sign you may not understand the cascade properly.

Steven Pemberton

Und weiter, in den Reaktionen auf den Tweet, ein weiteres Statement von Pemberton, das das Potenzial hat, das mentale Modell für den Anwendungsfall von !important zu verändern.

Indeed, as I recall, !legal was one of the design options considered at the time.

Alle, die mit CSS arbeiten, sollten diese Aussage im Hinterkopf haben und somit ihr geistiges Abbild einer Begründung für die Nutzung von !important adjustieren. „Wichtig“ („important“) ist eine Abstraktion, die die Notwendigkeit eines Bezugs, den wir für vorgelagerte oder nachrangige Regeln anwenden, in sich trägt. Das sehr konkrete „von Gesetzes wegen erforderlich“ („legal“) ist etwas ganz anderes, wird anders wahrgenommen und muss auch anders begründet werden. Es gibt einen deutlichen Unterschied zwischen „Ich nutze !important, weil mir verschiedene andere Regeln dazwischenfunken“ und „Ich nutze !important, weil es von Rechts wegen vorgeschrieben ist“. Das Wissen verändert den Code, den wir schreiben.

Aber keine Sorge, man ist nicht automatisch unten durch, wenn man !important außerhalb des Kontexts von „!legal“ nutzt, wie Ernie Smith in einem Beitrag auf Tedium feststellt. Zu viel hat sich in den bald 30 Jahren seit der Einführung der „CSS Level 1 Recommendation“ verändert und die ursprüngliche Legitimierung auf einen einzelnen Anwendungsfall ist mittlerweile nahezu hinfällig.

It’s worth noting that in late 1996, probably a single CSS file was being used on a given webpage […] and that file was created by the user. But now, we have whole messes of people who are essentially adding code five steps removed from the original template, who basically have to rely on the !important tag either because they don’t have easy access to the original CSS code, or because it would be a lot of work to fix the spaghetti-style mess of the cascade. [Some suggested] that [Steven Pemberton] might have been better off giving the tag a scarier name to discourage its use on a regular basis. But having done a little bit of research, I get the impression that, while this might have been the original goal of the tag, the final result as implied in the early docs for CSS basically matches what we got in the end.

Ernie Smith

Und schon – so die aus der Häufigkeit der Retweets, Zitate und aus der fast durchgehenden Widerspruchslosigkeit in den Reaktionen auf den Tweet ableitbare, implizite Aufforderung, den !important-Befehl seltener bis gar nicht zu nutzen – hat das Wissen um die Geschichte eines Befehls uns alle zu besseren Entwickler:innen gemacht. Es ist kein Gesetz, wie Ernie Smith aufzeigt, aber eine gute Empfehlung.

Dass historisches Wissen (über vermeintlich neutrale Begriffe) so vieles in unseren Köpfen ändern kann, und dass das auch für Befehle und Regeln in einer Programmier- bzw. Auszeichnungssprache gilt, macht Geschichte und die Beschäftigung damit schön. Schöner wird übrigens auch der Code, den wir schreiben, wenn wir nun über den Hintergrund des Befehls bescheid wissen (und uns vielleicht einmal mit dem Konzept einer Kaskade näher beschäftigen).

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert