Zehn kurze Tipps
In diesem Artikel werden einige bekannte oder weniger bekannte Tipps vorgestellt, die praktisch oder experimentell sein können.
Nach obenZwei Klassen zusammen angeben
Was viele nicht wissen: Man kann zwei Klassen aufeinmal für dasselbe Element angeben - damit spart man sich oft eine Menge Schreibarbeit.
<p class="abstand gruen">Beispieltext</p>
.abstand{
margin-left:2em;
}
.gruen{
color:green;
}
Nach obenDen Anfangsbuchstaben gestalten
Beliebtes Gestaltungsmittel für Printmedien ist die Hervorhebung des Anfangsbuchstabens bei Texten. Zum Beispiel in Form von verzierten Lettern bei alten Büchern oder einfach nur hervorgehoben durch eine Vergrößerung zur Einleitung eines neuen Kapitels bei modernen Texten. Dies kann man natürlich auch einfach mit CSS für das Web umsetzen.
Beispieltext, der mit Hilfe des Selektors ":firstchild" formatiert wurde
<p class="text">Ich bin eine Copy für Anzeigen und ich erkläre den Superwitz aus Headline und Bild da oben. Meistens mach ich noch ein paar Bemerkungen darüber, wie toll das Produkt ist aber heute hab ich dazu überhaupt keine Lust.</p>
p.text{
color:black;
}
p.text:first-letter{
font-size:30px;
float:left;
padding:0 10px 0 0;
}
Beispieltext, der mit Hilfes des span-Elements formatiert wurde
<p class="text"><span>I</span>ch bin eine Copy für Anzeigen und ich erkläre den Superwitz aus Headline und Bild da oben. Meistens mach ich noch ein paar Bemerkungen darüber, wie toll das Produkt ist aber heute hab ich dazu überhaupt keine Lust.</p>
p.text span{
font-size:30px;
float:left;
padding:0 10px 0 0;
}
Beispieltext mit Bild, statt Anfangsbuchstaben:
<p class="text"><span>I</span>ch bin eine Copy für Anzeigen und ich erkläre den Superwitz aus Headline und Bild da oben. Meistens mach ich noch ein paar Bemerkungen darüber, wie toll das Produkt ist aber heute hab ich dazu überhaupt keine Lust.</p>
p.text span{
background:url(bild.jpg) no-repeat left;
display:block;
height:30px;
width:30px;
text-indent:-9999px;
float:left;
padding:0 10px 0 0;
}
Hier kann man sich die Beispiel dazu ansehen
Nach obenBilder ersetzen
Es ist immer ratsam, reguläres Markup statt Bilder zu verwenden, wenn Informationen übermittelt werden sollen. Bilder, die Bestandteil des Design sind, haben im Quelltext nichts zu suchen und sollten per CSS eingebunden werden, etwas was schließlich auch der Zugänglichkeit dient.
So sollte man Bilder nicht einbinden:
<h2><img src="ueberschrift" alt="Überschrift" /></h2>
Dies ist nicht nur für Textbrowser katastrophal, auch Suchmaschinen werden dsicher das alt-Attribut nicht so bewerten wie den Text einer Überschrift.
Schon besser wäre dies:
<h2 id="headline">Dies ist eine Überschrift</h2>
Aber was ist, wenn man einen ganz speziellen Font in seine Seite integrieren möchte und man unsicher ist, dass die Besucher diesen auch installiert haben?
Der Trick ist, man bindet ein Hintergrundbild mit dem Text der Überschrift in der gewünschen Schrift per CSS ein und blendet den Text der Überschrift mit einem großen negativen Texteinzug aus.
#headline{
text-indent:-9999px;
background:url(headline.jpg) no-repeat;
}
Nach obenCursor wechseln
Manchmal bietet es sich bei bestimmten Elementen an, den Cursor zu wechseln. Zum Beispiel bei einem Link "FAQ" oder bei einem Submit-Button
Beispiel: Link
<p><a class="help" href="#">FAQ</a></p>
Anmerkung: Für Links ist cursor:pointer; voreingestellt.
a.help{
cursor:help;
}
Beispiel: Button
Für Input-Elemente ist cursor:text; voreingestellt, was bei einem Button verwirrend wäre.
<p><input class="submit" type="submit" id="Submit" /></p>
input[type=submit], input.submit{
cursor:pointer;
}
Weitere Werte für cursor findet man auf css4you.de.
Nach obenGrafische Aufzählungspunkte
Wenn man die vorgegenen Listenpunkte nicht mag, kann man auch leicht per CSS grafische Listenpunkte erstellen
<ul>
<li>Text</li>
<li>Text</li>
<li>Text</li>
</ul>
ul{
list-style-image:url("bild.gif");
}
Eine andere Möglichkeit ist, den Listentyp zu entfernen und ein Hintergrundbild statt dessen einzufügen.Der Vorteil davon ist, dass man dann bessere Ausrichtungsmöglichkeiten hat.
ul{
list-style:none;
}
ul li{
background:url(bild.jpg) no-repeat top left;
padding-left: 20px;
}
Nach obenInnenabstände ohne padding erstellen
Da der IE 5.x und IE 6 im Quirksmode den Innenabstand padding nicht in die Größenberechnung mit einbezieht (fehlerhaftes Boxmodel), kommt es bei CSS-Layouts oft bei diesen Browsern zu Darstellungsfehlern.
Um dies zu beheben, greift man oft auf allerlei Hacks zurück, die Schwachstellen in der Implementierung älterer IE Versionen sich zu nutze machen. Es geht jedoch eleganter: Man vermeidet padding im Zielelement und benutz statt dessen margin für alle Tochterelemente.
Folgende Ausgangsstruktur:
<div id="mutterelement">
<h2>Überschrift</h2>
<p>Text</p>
</div>
Der Bereich "Mutterelement" soll einen Innenabstand von 20px auf beiden Seiten bekommen, ohne dass sich die Gesamtbreite von 500px ändert.
Man wendet einfach margin per Universalselektor auf alle Tochterelemente an (betimmte Abstände kann man nachträglich korrigieren, die einem nicht passen):
#mutterelement{
width:500px;
}
#mutterelement *{
margin-left:20px;
margin-right:20px;
}
Nach obenAbstände und Ränder zurücksetzen
Da Browser teilweise unterscheidliche Standardabstände für Elemente besitzen, ist es ratsam die Abstände für alle Elemente zu entfernen und sie nach Bedarf wieder hinzuzufügen.
Das Entfernen aller Abstände erreicht man leicht mit dem Universalselektor:
*{
padding:0;
margin:0;
}
Störend ist meist auch der voreingestellte Rand für Bilder, daher ist es nicht schlecht, wenn man diesen anfangs ebenfalls entfernt. Man sollte aber nicht border:0; in den Universalselektor mit hineinnehmen, da man sonst auch die Ränder von Formularelementen entfernt, die man sicher benötigt.
img{
border:0;
}
Nach obenTransparenz per CSS für Mozilla, Safari und IE
Im Folgenden wird gezeigt, wie man für Mozilla, Safari und den IE mit CSS transparente Bereiche definieren kann.
Ausgangsstruktur
<div id="box">
<div id="transparent">
<p>ganz viel Text ganz viel Text ganz viel Text ganz viel Text ganz viel Text ganz viel Text ganz viel Text ganz viel Text ganz viel Text ganz viel Text ganz viel Text ganz viel Text ganz viel Text ganz viel Text ganz viel Text ganz viel Text </p>
</div>
</div>
Der Bereich mit der ID "transparent" soll, wie der Name schon verrät, transparent werden, jedoch dessen Tochterelemente nicht.
Für Safari und Mozilla ab Version 1.7b verwendet man die CSS3 Eigenschaft opacity, für ältere Mozilla Versionen -moz-opacity und für den IE den alpha-Filter.
Außerdem wird gesagt, dass Safari 1.1 zur Darstellung von Transparenz -khtml-opacity benötigt.
Damit die Tochterelemente nicht dir Transparenz vererbt bekommen, muß der Bereicht mit der ID "transparent" relativ positioniert werden. Die Formatierungen sehen dann zum Beispiel so aus:
#box{
width:300px;
height:300px;
padding:20px;
}
#transparent{
position:relative;
opacity: 0.5;
-moz-opacity:0.5;
-khtml-opacity:0.5;
filter:alpha(opacity=50);
background:white;
}
#transparent *{
color:black;
}
Achtung: Die drei Eigenschaften opacity, -moz-opacity, -khtml-opacity und der alpha-Filter sind nicht CSS2 valide, wobei zu bemerken ist, dass opacity valides CSS3 ist.
Nach obenEin Select-Feld gestalten.
Im Folgenden wird gezeigt, wie man Selectfelder ein wenig mit CSS aufpeppen kann.
<form name="Beispiel">
<select name="selectname" size="1">
<option class="eins">Option eins</option>
<option class="zwei">Option zwei</option>
<option class="eins">Option eins</option>
<option class="zwei">Option zwei</option>
</select>
</form>
Die Formatierungen dazu:
option {color:white;}
option.eins {background: blue;}
option.zwei {background: red;}
Nach obenScrollbare Bereiche - Iframe Nachbildung
Oft werden Iframes trotz ihrer Nachteile verwendet, um kleinere scrollbare Bereiche zu schaffen. Dies kann man jedoch auch ohne Frames mit CSS erreichen.
Beispielmarkup
<div class="scroll">
<p>Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh.</p>
<p>Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh.</p>
</div>
Für den Bereich mit der Klasse "scroll" muss eine Breite oder Höhe angegeben werden. Entscheident ist die Eigenschaft overflow mit dem Wert auto.
Beispiel CSS
div.scroll {
height: 400px;
width: 300px;
overflow: auto;
border: 1px solid black;
background: #ccc;
padding: 10px;
}
fphilipe
Die Methode mit text-indent: -9999px; wird ab CSS3 nicht mehr nötig sein, denn dann kann man die neue Farbmethode rgba (a steht für alpha) verwenden:
rgba(0,0,0,0);
pberndt
"Bei Hover Cursor wechseln" ist Unsinn: Den Cursor sieht man ohnehin nur, wenn sich die Maus über dem Objekt befindet. Lässt man also das :hover weg, funktionierts genau so - nur auch im IE.
Twisting
Stimmt. Ich nehm's mal raus...aber warum fällt das jetzt erst auf? ;)
Der Kommentator
Hallo,
gute Tips die du da hast. Allerdings würde ich die Text-indent -9999px Ausblend-methode über einen <span> Container lösen, der den Text dann mit display:none, ausblendet.
Twisting
@Kommentator: Jedem das Seine...spans würden unnötiges Markup produzieren ohne Bedeutung.
bl@cksmily
@ Transparenz per CSS für Mozilla, Safari und IE
Im FF sieht das ganze verdammt gut aus, aber im IE (Version 6.0 mit SP 1), gibt es keine Transparenz, ab welcher Version ist denn eine Transparenz erkennbar oder muss man die Werte noch anpassen?
inoX
und wieso verschwindet der hintergrund bei visibility:hidden;? das macht für mich keinen sinn, zumal man ja auchnoch display:none; zur verfügung hat. das text-indent:-9999; oder rgba(0,0,0,0); halte ich zumindest für keine sinngemäße lösung. dann bau ich lieber n <span class="hide"> um den text.
Mastershrimp
Das mit den 2 Klassen hat mal eben mein Weltbild veränder ;-)
Wusste ich noch nicht. Mal schaun wann ichs brauchen kann.
Gilt das eigentlich nur für 2 Klassen, oder auch für >2?
noname
@Mastershrimp
Es geht auch bei mehreren