Hallo Kristian,
Aber die CSS-Datei wird größer und ich muss ja auch für jedes Objekt eine
eigene Klasse anlegen, so die Eigenschaften der Objekte nicht immer gleich
sind. Dadurch wird ja die CSS-Datei ziemlich groß.
Überlege mal anders: Benötigt wirklich zwingend jedes Element eine eigene
Klasse oder kannst Du auch generischere Regeln definieren. Soll heißen:
Regeln, die auch auf mehrere Elemente wirken.
Und weiter rationalisieren: Können einige Eigenschaften auf mehrere Elemente
wirken, wie kann man dieses am besten verteilen, daß nicht zu viel
Redundanz entsteht?
Ich gebe mal ein paar Beispiele. Zuerst das Stylesheet:
p {
font-size:2em;
margin:20px 40px;
color:black;
background-color:white;
}
p#achtungachtung {
font-size:3em;
margin:50px;
border:1px solid black;
background-color:yellow;
}
p.hervorgehoben-1 {
border:10px solid red;
}
p.hervorgehoben-2 {
border:10px solid blue;
}
Jeder normale Absatz kriegt nun eine Schriftgröße von 2em in Schwarz auf
Weiß und einen Randabstand von 20 Pixeln oben und unten und 40 Pixeln
rechts und links:
<p>Dies ist ein Absatz.</p>
Fügt man dann noch eine Klasse hinzu, können extra Angaben hinzugefügt
werden. Dieser Absatz hat nun also eine Schriftgröße von 2em in Schwarz
auf Weiß, einen Randabstand von 20 Pixeln oben und unten und 40 Pixeln
rechts und links und zusätzlich einen dicken fetten roten Rahmen:
<p class="hervorgehoben-1">Dies ist ein Absatz mit rotem Rahmen.</p>
Dieser hier ebenso, nur in blau:
<p class="hervorgehoben-2">Dies ist ein Absatz mit blauen Rahmen<./p>
Dieser Absatz hat einen blauen Rahmen. Er hat zwar beide Klassen, aber
hier gewinnt die Klasse, die später im Stylesheet steht:
<p class="hervorgehoben-1 hervorgehoben2">
Dies ist ein Absatz mit blauen Rahmen.
</p>
Dieser Absatz hat eine Schriftgröße von 3em, einen dünnen schwarzen
Rahmen, einen Randabstand von 50 Pixeln zu allen Seiten, einen gelben
Hintergrund und darauf schwarze Schrift. Die schwarze Schrift erbt er
von den Definitionen für einen normalen Absatz, alles andere wird
überschrieben:
<p id="achtungachtung">Dies ist ein Absatz, der mich aufmerken läßt.</p>
Und dieser Absatz hat genau dieselbe Formatierung. Er hat zwar eine
Klasse und die zur Klasse gehörende Deklaration steht im Stylesheet nach
der Deklaration für die ID, aber IDs haben eine höhere Wertigkeit als
Klassen, sie »gewinnen«.
(Man möge die Farbwahl und die Trivialität des Beispieles entschuldigen)
Wenn man diese Möglichkeiten geschickt nutzt, kann man größere Stylesheets
bequem auf kürzere eindampfen. Man muß nur dabei im Kopf den Gedankensprung
von <font> zu CSS machen. Bei CSS »denkt« man generischer als bei <font>.
Man überlegt sich, welche Angaben generisch sind, welche auf mehrere
Elemente zutreffen, welche auf welche Arten von Elemente zutreffen. Bei
der Nutzung von <font> denkt man mehr in die Richtung, wie jetzt genau
dieses Element formatiert werden soll, nicht in welche Klasse oder Art
von Elementen dieses Element nun gerade fällt und was diese gemeinsam
haben. Und in CSS kann man wunderbar die oben beschriebene Kaskade
ausnutzen - schließlich heißt es ja Cascading Style Sheets.
Wenn man die Nutzung von <font> dann eins zu eins auf CSS übertragen will,
dann landet man meist erst bei Inlinestyles mit dem style-Attribut direkt
in HTML oder aber in Massen von class-Attributen, jede auf ein einzelnes
Element (meist ein <div>) zugeschnitten. Dabei sollen Klassen gerade
bestimmte Elemente in Klassen zusammenfassen, das heißt eine Gemeinsamkeit
definieren oder feststellen (richtiger wäre dann wahrscheinlich id).
Natürlich muß man dann immer wieder von Fall zu Fall abwiegen und manchmal
geht es auch nicht anders, beispielsweise, wenn man etwas ganz spezielles
vorhat (</chräckerargument>). Wenn das auf Dich zutrifft, dann entschuldige
meinen Sermon. ;-)
Aber ein gutes Stylesheet kann dabei helfen, sich nur auf den HTML-Quellcode
konzentrieren zu können, da dieses Stylesheet dann auf mehrere Seiten mit
mehreren Elementen zutrifft. Etwas, das gerade der Vorteil von CSS ist.
Tim