Hallo @@Gunnar
… sehe ich vordergründig zu dem Methode, einem übergeordneten Objekt (body) eine Klasse zuzuweisen und alles über Selektoren zu steuern, keinen Gewinn. Ich finde es sogar verwirrend, weil die Methode nicht gerade offensichtlich ist.
Ich finde es äußerst verwirrend, wenn Werte von CSS-Eigenschaften mit JavaScript geändert werden, weil eben dies nicht gerade offensichtlich ist.
Naja. Die Klassen-Bezeichnung war ja auch nicht richtig:
Lass dir das auf der Zunge zergehen: Elemente haben die Klasse "hidden", sind aber sichtbar.
(Aus deinem verlinktem Beitrag)
Nennt man die Klasse nicht "hidden" (was auch sonst nicht richtig ist, denn der Unterschied zwischen "visibility:hidden" und "display:none" ist ungefähr so groß wie der zwischen "Klo" und "Klos") sondern etwa "default_no_display" wird es logischer und derjenige, der die Eigenschaft display:none auf important gesetzt hat hätte sofort sehen können, dass das (sehr wahrscheinlich) unerwünschte Seiteneffekte hat.
Ich finde es äußerst verwirrend, wenn Werte von CSS-Eigenschaften mit JavaScript geändert werden, weil eben dies nicht gerade offensichtlich ist.
Du findest es offensichtlicher, wenn (wie Dave vorschlug - dem hast Du Dich ja angeschlossen) einem Element eine Klasse per Javascript hinzugefügt wird? Und was bitte passiert denn dann, wenn in einer der anderen (noch) zugeordneten Klassen just eine zu verändernde Eigenschaft das "!important" als Abzeichen auf der Brust hat?
Eben. Die Eigenschaft wird nicht überladen und Du hast das selbe Problem wie in Deinem Beispiel.
Freilich kann man das durch ein weiteres "!important" vielleicht beheben und sich über neue Seiteneffekte freuen.
Wenn man dann mal nachsucht, was, warum und wie funktioniert machen es die Klassen auch "nicht wirklich" einfacher. Erst ein Blick ins HTML, dann ins Javascript (bei der direkten Eigenschaftszuweisung ist hier Schluss) dann noch in den Stylesheet. Wenn man dann nochmal "die Runde drehen" darf, weil man nachschauen muss, welche Elemente denn Kindelemente von welchem Element sind wird es auch nicht besser - finde ich jedenfalls.
Also das "in den allermeisten Fällen" die direkte Lösung nicht sinnvoll wäre, dem vermag ich nicht zuzustimmen. In Einzelfällen (sehr viele Elemente) sehe ich das mit Blick auf Performance-Fragen ein.