CSS-Stile ändern
An der Atelierwand hängt schon ein Farbchip. Die Überschrift heißt Oak, die Fläche sagt open. Die Regel #swatch im Stylesheet setzt color auf navy und font-size auf 16px. Die Klasse dusk sitzt noch nicht auf der Fläche. Ihre Regel ist font-style: italic. CSS aus JavaScript ändern heißt, den Inline-Stil zu schreiben oder diese Klasse zu setzen. Das Wort open bleibt stehen.
element.style zeigt nur Inline-Deklarationen. Darum sind swatch.style.color und swatch.style.fontSize vor dem ersten Schreiben leere Zeichenketten. Die genutzte Größe liefert getComputedStyle(swatch).fontSize: 16px.
swatch.style.color = "teal" und swatch.style.fontSize = "22px" speichern diese Inline-Werte. style.font-size mit Punkt ist ein Syntaxfehler. Den Hintergrund setzt diese Seite mit setProperty("background-color", "wheat"). Danach lesen getPropertyValue("background-color") und style.backgroundColor beide wheat.
classList.add("dusk") hängt nur die Klasse an. style.color bleibt teal, style.fontStyle bleibt leer, und getComputedStyle(swatch).fontStyle wird italic.
Ein Nebenversuch: cssText = "color: maroon;". Die Zeile ersetzt jede Inline-Deklaration. Schriftgröße und Hintergrund werden leer, die Klasse dusk bleibt. Die Seitendemo führt diese Zeile nicht aus. Sie merkt sich teal und löscht mit removeProperty("color") nur die Inline-Farbe. Die Zeile unter dem Chip lautet teal / 22px / empty / dusk. Der Text der Fläche ist weiter open.
Die Stilangabe, kein neuer Satz auf dem Chip
Die vorige Seite schrieb textContent, innerHTML und insertAdjacentHTML und änderte die Wörter auf dem Fährzettel. Hier weist du der Fläche kein textContent zu, du parst kein Tag und du vergleichst keine Suchaufrufe. getElementById gibt dir nur den Chip. Es geht um die Inline-Angabe und das Klassen-Token.
Was jede Zuweisung auf der Fläche lässt
Die Fläche beginnt mit dem Wort open. navy und 16px kommen aus dem Stylesheet, ein Inline-Stil fehlt noch. Lies die Zeilen der Reihe nach. Die Zeile cssText ist ein Nebenversuch. Die Seitendemo endet bei removeProperty und führt dieses Leeren nicht aus.
📊 Was jede Zuweisung auf der Fläche lässt
| Zuweisung | Inline-Zeichenkette | Weiter aus Blatt oder Klasse | Leicht verwechselt |
|---|---|---|---|
| Noch nichts | color und fontSize sind "" |
berechnetes fontSize ist 16px; genutzte Farbe navy |
navy aus style.color lesen |
style.color = "teal" und style.fontSize = "22px" |
teal und 22px |
Hintergrund noch nicht inline | style.font-size wird nicht geparst |
setProperty("background-color", "wheat") |
backgroundColor ist wheat |
Farbe bleibt teal | der Name background-color statt CamelCase |
classList.add("dusk") |
fontStyle bleibt ""; Farbe bleibt teal |
berechnetes fontStyle ist italic |
italic in style.fontStyle erwarten |
removeProperty("color") |
color wieder "" |
fontSize bleibt 22px |
Größe fällt auf 16px zurück |
style.cssText = "color: maroon;" |
Farbe maroon; fontSize und Hintergrund "" |
Klasse dusk bleibt |
cssText entfernt die Klasse |
element.style ist nur die Inline-Deklaration. Eine Stylesheet-Regel erscheint dort erst, wenn ein Skript sie in den Inline-Stil kopiert. getComputedStyle liest den genutzten Wert, nachdem Blatt, Klasse und Inline-Stil zusammenkommen. Eine Inline-Eigenschaft schlägt das Blatt für dieselbe Eigenschaft. classList ändert das Klassen-Token. Es schreibt nicht style.color und nicht style.fontStyle. cssText ersetzt das ganze style-Attribut mit einer Zeichenkette. removeProperty löscht eine Inline-Eigenschaft und lässt den Rest stehen.
Den Chip lesen, bevor du schreibst
Die Datei öffnet mit der Überschrift Oak, dem Text open und dem Blatt darüber. Noch keine Zuweisung. Die ersten drei Logs fragen den Inline-Stil. Das vierte fragt die genutzte Größe.
let swatch = document.getElementById("swatch");
console.log(swatch.textContent);
console.log(swatch.style.color);
console.log(swatch.style.fontSize);
console.log(getComputedStyle(swatch).fontSize);
Die Logs sind open, eine leere Zeichenkette, eine leere Zeichenkette und 16px. Die genutzte Farbe ist navy. Der Browser meldet sie als rgb(), nicht als das Wort navy. style.color ist weiter leer, also ist dieser Log nicht navy. Die Überschrift Oak ist ein anderes Element. Spätere Zuweisungen ändern das Wort open nicht.
CamelCase schreibt die Inline-Werte
color und fontSize sind Eigenschaften der Stilangabe. Der CSS-Name font-size wird in JavaScript zu fontSize. Ein gepunktetes style.font-size ist Subtraktion, deshalb nutzt die Datei es nicht.
let swatch = document.getElementById("swatch");
swatch.style.color = "teal";
swatch.style.fontSize = "22px";
console.log(swatch.style.color);
console.log(swatch.style.fontSize);
console.log(swatch.style.backgroundColor);
Die Logs sind teal, 22px und eine leere Zeichenkette. Der Hintergrund ist noch nicht gesetzt. Die genutzte Schriftgröße ist jetzt 22px, weil der Inline-Wert die 16px des Blatts schlägt. Das Wort auf der Fläche bleibt open.
Ein Name mit Bindestrich geht über setProperty
setProperty nimmt den CSS-Namen inklusive Bindestrich. getPropertyValue liest denselben Namen. Die CamelCase-Eigenschaft backgroundColor liest den gerade gespeicherten Wert.
let swatch = document.getElementById("swatch");
swatch.style.setProperty("background-color", "wheat");
console.log(swatch.style.getPropertyValue("background-color"));
console.log(swatch.style.backgroundColor);
Beide Logs sind wheat. color bleibt teal und fontSize bleibt 22px. Dieser Aufruf fügt eine Inline-Eigenschaft hinzu. Er löscht die schon gesetzten nicht.
Die Klasse füllt style.fontStyle nicht
.dusk sagt font-style: italic. Die Klasse setzt das Token dusk auf das Element. Der Wert italic lebt in der Stylesheet-Regel, darum bleibt die Inline-Zeichenkette fontStyle leer. Die Inline-Farbe ist weiter teal. Die Klasse hat sie nicht ersetzt.
let swatch = document.getElementById("swatch");
swatch.classList.add("dusk");
console.log(swatch.classList.contains("dusk"));
console.log(swatch.style.color);
console.log(swatch.style.fontStyle);
console.log(getComputedStyle(swatch).fontStyle);
Die Logs sind true, teal, eine leere Zeichenkette und italic. contains prüft das Token. style.fontStyle prüft die Inline-Angabe. getComputedStyle prüft den genutzten Wert. Das sind drei verschiedene Lesarten.
cssText ersetzt den ganzen Inline-Stil
Dieser Block ist ein Nebenversuch. Führe ihn erst aus, wenn teal, 22px, wheat und dusk schon stehen. cssText schreibt ein neues style-Attribut und verwirft jede Inline-Eigenschaft, die in der Zeichenkette fehlt. Die Seitendemo weiter unten enthält diese Zeile nicht.
let swatch = document.getElementById("swatch");
swatch.style.cssText = "color: maroon;";
console.log(swatch.style.color);
console.log(swatch.style.fontSize);
console.log(swatch.style.backgroundColor);
console.log(swatch.classList.contains("dusk"));
Die Logs sind maroon, eine leere Zeichenkette, eine leere Zeichenkette und true. Die inline gesetzten 22px und wheat sind weg. Die Klasse dusk ist noch da, weil cssText das style-Attribut ändert, nicht das class-Attribut. Der Flächentext bleibt open.
Eine Zeile unter dem Chip
Das Skript steht am Ende von body, nachdem Chip und Stylesheet da sind. Es setzt teal, 22px und wheat, hängt dusk an, merkt sich das Wort teal und entfernt nur die Inline-Farbe. Es weist cssText nicht zu. Eine leere Inline-Farbe schreibt es als das Wort empty, damit die Zeile lesbar bleibt.
<!DOCTYPE html>
<html>
<head>
<title>css style — page</title>
<style>
#swatch { color: navy; font-size: 16px; }
.dusk { font-style: italic; }
</style>
</head>
<body>
<article id="wall">
<h2 id="chip">Oak</h2>
<p id="swatch">open</p>
<p id="line">…</p>
</article>
<script>
let swatch = document.getElementById("swatch");
swatch.style.color = "teal";
swatch.style.fontSize = "22px";
swatch.style.setProperty("background-color", "wheat");
swatch.classList.add("dusk");
let saved = swatch.style.color;
swatch.style.removeProperty("color");
let inlineNow = swatch.style.color === "" ? "empty" : swatch.style.color;
let mark = swatch.classList.contains("dusk") ? "dusk" : "no";
document.getElementById("line").textContent = saved + " / " + swatch.style.fontSize + " / " + inlineNow + " / " + mark;
</script>
</body>
</html>
Die Zeile lautet teal / 22px / empty / dusk. saved hält teal von vor removeProperty. Danach ist style.color leer und style.fontSize weiter 22px. Der Hintergrund bleibt wheat. Das Klassen-Token bleibt dusk, also ist das genutzte font-style italic. Die genutzte Farbe fällt auf das Blatt zurück, navy, weil die Inline-Farbe weg ist. Der Flächentext bleibt open. Die nächste Seite baut neue Elemente. Sie zeigt keinen weiteren Weg, diese Stileigenschaften zu schreiben.
Den Chip prüfen
- Text, die zwei Inline-Zeichenketten und die berechnete Schriftgröße loggen: open, zwei leere Zeichenketten und 16px
- color auf teal und fontSize auf 22px setzen, dann teal, 22px und ein leeres backgroundColor erwarten
- Den Hintergrund mit setProperty setzen und wheat aus beiden Lesarten erwarten, dann dusk hinzufügen und true, teal, ein leeres fontStyle und berechnetes italic erwarten
- Im Nebenversuch cssText auf die Farbe maroon setzen und maroon, ein leeres fontSize, einen leeren Hintergrund und dusk weiterhin true erwarten
- Die Seitzeile lesen und teal / 22px / empty / dusk erwarten, den Flächentext lesen und open erwarten
Fehlgriffe an diesem Chip
Die Seite bleibt offen. Die Zuweisung hatte den falschen Wert.
style.coloram Anfang lesen und navy erwartenswatch.style.font-sizeschreiben; der Parser lehnt das ab- Erwarten, dass
classList.add("dusk")italic instyle.fontStylespeichert - Erwarten, dass dieselbe Klasse
style.colorvon teal wegändert cssTextzuweisen und die inline gesetzten22pxbehalten wollencssTextzuweisen und erwarten, dass die KlasseduskverschwindetremoveProperty("color")aufrufen und erwarten, dassfontSizeauf16pxzurückfällt- Hier
textContentauf die Fläche setzen; die vorige Seite hat Wörter geändert - Hier
createElementaufrufen; die nächste Seite baut neue Knoten
Das nimmst du mit
element.styleliest Inline-Deklarationen; am Anfang iststyle.colorleer und die genutzte Größe16pxstyle.colorundstyle.fontSizespeichern teal und22pxsetProperty("background-color", "wheat")entsprichtstyle.backgroundColorclassList.add("dusk")läsststyle.fontStyleleer und den genutzten Stil italiccssText = "color: maroon;"löscht die anderen Inline-Werte und behält die KlasseremoveProperty("color")löscht nur die Farbe, darum kann die Seitzeile weiter22pxzeigen- Die Zeile lautet teal / 22px / empty / dusk, der Flächentext bleibt open
🧠 Testen Sie Ihr Wissen
Testen Sie Ihr Wissen
Fordern Sie sich mit diesem interaktiven Quiz heraus und sehen Sie, wie gut Sie das Thema verstehen
📝 Anweisungen
- Lesen Sie jede Frage sorgfältig
- Wählen Sie die beste Antwort für jede Frage
- Sie können das Quiz so oft wiederholen, wie Sie möchten
- Ihr Fortschritt wird oben angezeigt