Donnerstag, 28. August 2014

Vererbung in CSS

Verzeichnisse und Dateien für dieses Tutorial:
style\default.css
home.html

Im Tutorial Selektoren in CSS wurde schon auf die Vererbung eingegangen, dieses Tutorial soll zeigen wie die Elemente (HTML-Tags) die Eigenschaften weiter vererben, auch wenn nicht alle Eigenschaften auf jedes Element angewandt werden können. Wie wir bereits wissen ist, dass das Element deren Eigenschaften geerbt wird, als Elternelement bezeichnet wird und jenes Element das erbt, wird als Kindelement bezeichnet.


In der Grafik können wir sehen wie die Vererbung aufgebaut ist (Wenn ein Element nicht in der Grafik ist, kann es durchaus sein, dass keine Vererbung möglich ist). Wenn wir z.B. die selbe Schriftfarbe in allen Elementen (Tags) möchten, können wir dies im body-Element angeben.

Hier ein Beispiel:

home.html
  1. <html>
  2.         <head>
  3.                 <title> Vererbung in CSS </title>
  4.                 <link rel="stylesheet" type="text/css" href="style/default.css" />
  5.         </head
  6.         <body>
  7.                 Dies ist ein normaler Text!
  8.                 <p> Dies ist ein Textabsatz! </p>
  9.                 <ul>
  10.                         <li> Erste Zeile der Liste </li>
  11.                         <li> Zweite Zeile der Liste </li>
  12.                 </ul>
  13.         </body>
  14. </html>

default.css
  1. body {
  2.         color: #AA00FF;
  3. }


Wie wir sehen haben alle Elemente die selbe Farbe, da die Eigenschaften vom Elternelement body immer weiter vererbt wird, zur nächsten Kindklasse. Wir könnten die Eigenschaften auch schon im Element html definieren, was aber wenig sinn macht, da erst ab der Kindklasse body die Eigenschaften dargestellt werden können.

Beschränkungen der Vererbung
Viele Eigenschaften vererben ihre Werte nicht. Die Ausnahme ist der Wert inherit (erben) durch diesem Wert wird der Eigenschaftswert des Elternelements vererbt.

Es ist auch darauf zu achten in welcher Reihenfolge vererbt wird, die Werte können sich durch einer neuen Zuweisung verändert haben. Hier ein Beispiel:

default.css
  1. body {
  2.         color: #AA00FF;
  3. }
  4. ul {
  5.         color: #0000FF;
  6. }


Hier wird in der Zeile 5 den Element eine neue Schriftfarbe definiert, dadurch wir diese Farbe in den Kindklassen weiter vererbt die von ul erben.

Es kann auch sein, dass schon Werte vordefiniert wurden und sie dadurch nicht vererbt werden können.

Durch relative Wertangabe angegeben, mit den Maßeinheiten (Maßeinheiten in CSS) em, ex oder % die erst errechnet werden und dadurch kein Wert geerbt werden kann.

Veraltete HTML-Elemente können auch nicht vererbt werden wie z.B. die Tags i oder b. Deshalb sollten veraltete HTML-Elemente nicht mehr verwendet werden.

Durchaus gibt aber auch Eigenschaften die ihre Werte nicht vererben, darauf wird aber hier noch nicht eingegangen, da wir sie noch nicht kennen und diese hier zu erklären zuviel für das Tutorial wäre.