| Jeder DOM-Knoten enthält als Unter-Objekt das style-Objekt. Dieses Objekt hat zahlreiche Eigenschaften, die es erlauben, den CSS-Style eines Objekts gezielt zu lesen oder zu ändern. | Der Zugriff auf das style-Attribut mit Standard-DOM-Methoden ist mühsam, weil das Attribut als komplexer Text vorliegt. Verwenden sie daher das hier vorgestellte style-Unterobjekt. |
|
Ein ganz anderer Zugang ist die Arbeit mit dem Objekt styleSheets : Damit greift man auf externe ( <link>-Element ) styleSheets und interne <style>--Elemente zu. So kann man die Regeln für CSS-Klassen lesen und schreiben, unabhängig davon, ob und wie oft sie angewendet werden. |
Dieses Kapitel ist relativ umfangreich, außerdem kann das Objekt styleSheets evtl. mit dem style-Objekt verwechselt werden. Daher wird dieses Kapitel demnächst in eine eigene Webseite ausgelagert. |
DOM & Javascript
|
Zugriff auf alle Elemente einer Webseite |
CSS
|
Cascading Style Sheets |
styleSheet
|
styleSheet-Objekte legen CSS-Regeln fest |
| style lesen | Lesen von node.style.eigenschaft mit Javascript |
| style schreiben | Schreiben von node.style.eigenschaft mit Javascript |
| Namen-Regeln | CSS-Syntax → Namen von node.style.eigenschaft |
| Dynamische styles | style-Block mit Live-Javascript erstellen |
| Liste | Unverbindliche Liste der Eigenschaften |
| Kein Live-Test | Reaktion ihres aktuellen Browsers ? |
node.style.eigenschaft lesen |
|
|
Zuerst wird der gesuchte DOM-Knoten identifiziert.
Danach haben sie Zugriff auf sein Unterobjekt style und dessen
zahlreiche Eigenschaften. Dabei erhalten sie nur Auskunft über jene Eigenschaften, die über ein style-Attribut definiert wurden (hier: color ). Falls der style durch andere Mittel festgelegt wurde (z.B. Vererbung), erhalten sie eine "Leer"-Auskunft. Live- |
<div id="t1" style="color:blue;">
Mustertext
</div>
n = document.getElementById("t1");
nco = n.style.color; nfs = n.style.fontSize; alert("color="+nco+"\nfontSize="+nfs); |
|
Auch ohne explizite Zuweisung wird jedes Element mit einem
bestimmten style dargestellt. Dieser ist im Browser vor-eingestellt
und kann durch stylesheets, Vererbung usw. geändert werden. Wenn sie den aktuellen style ermitteln wollen, unabhängig davon, auf welchem Wege dieser zustande gekommen ist, dann müssen sie leider je nach Browser unterschiedliche Methoden anwenden. M$IE bietet das Objekt currentStyle, welches sich verhält wie das style-Objekt, jedoch den kompletten Regel-Satz des DOM-Knotens enthält, selbst wenn dieser ganz ohne style- oder class-Attribute formatiert wurde. currentStyle kann nur gelesen werden (readonly). Gecko (Firefox) bietet die Funktion getComputedStyle: Diese bietet zusätzlich genaue Informationen über die aktuelle Dimension des Objekts ( width, height ). Live- |
// M$IE
nco = n.currentStyle.color;nfs = n.currentStyle.fontSize; alert("color="+nco+"\nfontSize="+nfs); // Gecko (Firefox, Mozilla(
nco=window.getComputedStyle(n,null).color;nfs=window.getComputedStyle(n,null).fontSize; alert("color="+nco+"\nfontSize="+nfs); ♦ Details zum Thema Javascript-Objekt |
node.style.eigenschaft schreiben |
|
|
Zuerst wird der gesuchte DOM-Knoten identifiziert. Danach haben sie Zugriff
auf sein Unterobjekt style und dessen zahlreiche
Eigenschaften. Dabei können sie jede style-Eigenschaft schreiben, unabhängig davon, ob sie bereits vorher festgelegt wurde. Jede style-Zuweisung lässt sich mit einem Leer-String wieder löschen. Damit wird allerdings nur die explizite Zuweisung gelöscht: Die Vor-Einstellungen durch stylesheets, Vererbung etc. treten wieder in Kraft. Live- |
<div id="t2" style="color:blue;">
Mustertext
</div>
n = document.getElementById("t2");
n.style.color = "black";
// Löschen:
// n.style.color=""; |
Regeln für die Namen von node.style.eigenschaft |
|
|
In CSS-Manuals und References finden sie alle Eigenschaften
nach CSS-Syntax beschrieben. Nur selten finden sich Hinweise auf den Namen der
entsprechenden node.style.eigenschaft Sie können den Namen der node.style.eigenschaft nach den beiden rechts beschriebenen Regeln ableiten. Ich habe jedoch keinen Hinweis gefunden, ob diese Regeln streng gelten, sie sind vermutlich unverbindlich ! |
►
Der Name des style-Unterobjekts entspricht bei einfachen Namen genau der CSS-Syntax. Beispiel: CSS color -> node.style.color ► Wenn der CSS-Name einen Bindestrich enthält, dann wird dieser weggelassen, dafür beginnt das folgende Wort mit einem Großbuchstaben. Beispiel: CSS background-color -> node.style.backgroundColor |
Dynamische styles: styleSheet ( <style>-Block) mit Javascript erstellen |
|
|
Mit der Javascript-Methode document.write lassen sich dynamisch
beliebige Inhalte in eine Webseite schreiben ->
auch interne styleSheets
( <style>-Elemente). Damit können sie Live auf Client-Seite entscheiden, welche CSS-Styles zur Anwendung kommen. Hinweis: styles müssen vor ihrer Verwendung definiert werden, das entsprechende Script muss sich daher vor der erstmaligen Verwendung im HTML-Code befinden ! In diesem Beispiel wird der CSS-style "teststyle" dynamisch erstellt: Morgens, tagsüber und abends wird der Style unterschiedlich formatiert. Der Quelltext des <style>-Elements wird in der Variablen txt aufgebaut und zuletzt mit document.write in die Webseite geschrieben. Anschließend kann der hier definierte Style in beliebig vielen class-Attributen verwendet werden. Wenn sie den Quelltext dieser Webseite ansehen, dann finden sie an der entsprechenden Stelle das Javascript-Programm, nicht jedoch den von ihm "geschriebenen" <style>-Element. Hinweis: Die Namen der verwendeten Farben finden sie im Kapitel "Farben". |
Javascript:
<script type="text/javascript">
txt = "<style type='text/css'>";
txt+=".teststyle{font-weight:bold;"; stunde = new Date().getHours(); tvar = "background-color:aqua;" tvar = "text-align:center;"; if(stunde < 10) {
tvar = "background-color:lime;"
}tvar = "text-align:left;"; else if(stunde > 18) {
tvar = "background-color:yellow;"
}tvar = "text-align:right;"; txt+=tvar+"}"; txt+="</style>"; document.write(txt); </script>
HTML:
<div class="teststyle"></div>
Live-HTML:
|
Liste von Eigenschaften des style-Unterobjekts |
|||
|
Hinweis: Verschiedene Browser &
Versionen unterstützen unterschiedliche Eigenschaften !
Daher ist diese Liste unverbindlich !! - Der Inhalt entspricht dem derzeit
"besten Wissen" und enthält jene Eigenschaften, die von allen aktuell
gängigen Browsern unterstützt werden.
|
|||
|
background backgroundAttachment backgroundColor backgroundImage backgroundPosition backgroundPositionX backgroundPositionY backgroundRepeat border borderBottom borderBottomColor borderBottomStyle borderBottomWidth borderCollapse borderColor borderLeft borderLeftColor borderLeftStyle borderLeftWidth borderRight borderRightColor borderRightStyle borderRightWidth borderSpacing borderStyle borderTop borderTopColor borderTopStyle borderTopWidth borderWidth bottom |
captionSide clear clip color content counterIncrement counterReset cssFloat cursor direction display emptyCells font fontFamily fontSize fontSizeAdjust fontStretch fontStyle fontVariant fontWeight getAttribute() height left letterSpacing lineHeight listStyle listStyleImage listStylePosition listStyleType |
margin marginBottom marginLeft marginRight marginTop markerOffset marks maxHeight maxWidth minHeight minWidth orphans outline outlineColor outlineStyle outlineWidth overflow overflowX overflowY padding paddingBottom paddingLeft paddingRight paddingTop page pageBreakAfter pageBreakBefore pageBreakInside position |
quotes right setAttribute() styleFloat tableLayout textAlign textDecoration textDecorationBlink textDecorationLineThrough textDecorationNone textDecorationOverline textDecorationUnderline textIndent textShadow textTransform top unicodeBidi verticalAlign visibility widows width wordSpacing zIndex |
| Darüber hinaus bieten übliche Browser - z.B. M$IE und Gecko (Firefox) - eine lange Liste spezieller Eigenschaften, die nur vom jeweiligen Browser unterstützt wird. In diesem Web werden nur anerkannte Standards unterstützt, wo immer das möglich ist, daher werden solche Hersteller-spezifischen Eigenschaften nicht angeführt. Die Verwendung ist problematisch, da von vorneherein feststeht, dass BesucherInnen mit unterschiedlichen Browsern die "Wirkung" nur teilweise sehen. | |||
|
Netscape: style-Object Properties: Erklärungen, Syntax style-Object Cross Reference: guter Vergleich der Browser-Fähigkeiten (auch M$IE) SelfHTML (de): style-Objekt |
|||
|