molily: Direkt die Eigenschaften einer CSS-Class verändern

Beitrag lesen

Hallo,

kann man mit JS direkt die Eigenschaften einer CSS-Class verändern, sodass sich das dann auf alle Elemente dieser Klasse auswirkt?

Über die Collection document.styleSheets (DOM Style) greifst du auf die Liste der mit dem Dokument verbundenen CSS-Dateien zu. Über die Collection cssRules (DOM CSS) bzw. rules (MSIE) sprichst du die Regeln an des Styleshets. Die Selektoren dieser Regel lassen sich über deren Eigenschaft selectorText auslesen. Die Regel, die du verändern willst, kannst du somit über den Selektor identifizieren (z.B. ».klasse«). Über .style.eigenschaft kannst du dann eine Deklaration in die Regel einfügen. Auf deutsch heißt das:

<style type="text/css">
.a {}
.b {}
.klasse {color:red;}
.c {}
.d {}
</style>

<script type="text/javascript">

if (document.styleSheets)
 var ss=document.styleSheets[0];
else
 ss=false;

if (ss.cssRules)
 var rules=ss.cssRules;
else
 if (ss.rules)
  var rules=ss.rules;

if (rules)
 for (i=0; i<rules.length; i++)
  if (rules.item(i).selectorText=='.klasse') {
   rules.item(i).style.color='blue';
   break;
  }

</script>

<p class="klasse">bla</p>

Funktioniert ab MSIE 5.x und im Gecko und KHTML.

Siehe auch:

http://www.w3.org/TR/DOM-Level-2-Style/stylesheets.html
http://www.w3.org/TR/DOM-Level-2-Style/css.html

http://www.mozilla.org/docs/dom/domref/dom_style_ref.html ff.
http://msdn.microsoft.com/workshop/author/dhtml/reference/collections/stylesheets.asp, http://msdn.microsoft.com/workshop/author/dhtml/reference/objects/obj_stylesheet.asp ff.

http://www.styleassistant.de/tips/tip38.htm
http://www.quirksmode.org/dom/tests/stylesheets.html
http://www.quirksmode.org/dom/changess.html

Mathias