Inhaltsverzeichnis
11 Visuelle EffekteIm Allgemeinen wird der Inhalt einer Block-Box auf die Inhaltskanten der Box begrenzt. In bestimmten Fällen kann es einen Überlauf einer Box geben, das heißt, ihr Inhalt liegt teilweise oder ganz außerhalb der Box, z.B.:
Immer wenn ein Überlauf stattfindet, gibt die 'overflow'-Eigenschaft an, wie (und ob) eine Box abgeschnitten wird. Die 'clip'-Eigenschaft gibt die Größe und den Umriss des Abschneidebereichs an. Die Angabe eines kleinen Abschneidebereichs kann das Abschneiden eines andernfalls sichtbaren Inhalts bewirken.
Wert: |
visible | hidden | scroll | auto | inherit |
Ausgangswert: |
visible |
Angewendet auf: |
Elemente auf Blockebene und ersetzte Elemente |
Vererbt: |
Nein |
Prozentwerte: |
N/A |
Medium: |
visual |
Diese Eigenschaft gibt an, ob der Inhalt eines Elements auf Blockebene abgeschnitten wird, wenn er über die Box des Elements (die als umschließender Block für den Inhalt dient) hinausgeht. Die Werte haben die folgenden Bedeutungen:
Selbst wenn 'overflow' auf 'visible' gesetzt ist, kann Inhalt durch die systemeigene Betriebsumgebung auf das Dokumentfenster eines Benutzerprogramms zugeschnitten werden.
Beispiel
Betrachten Sie das folgende Beispiel eines Block-Zitats (BLOCKQUOTE), das zu groß für seinen umschließenden Block (der durch ein DIV eingerichtet wird) ist. Hier das Quelldokument:
<DIV class="container">
<BLOCKQUOTE>
<P>I didn't like the play, but then I saw
it under adverse conditions - the curtain was up.
<DIV class="attributed-to">- Groucho Marx</DIV>
</BLOCKQUOTE>
</DIV>
Nachfolgend das Stylesheet, das die Größe und den Stil der erzeugten Boxen steuert:
DIV.container { width : 100px; height: 100px;
border: thin solid red;
}
BLOCKQUOTE { width : 125px; height : 100px;
margin-top: 50px; margin-left: 50px;
border: thin dashed black
}
DIV.attributed-to { text-align : right; }
Der Ausgangswert von 'overflow' ist 'visible', deshalb würde das BLOCKQUOTE ohne Abschneiden formatiert, etwa wie folgt:
Wird dagegen 'overflow' für das DIV-Element auf 'hidden' gesetzt, wird das BLOCKQUOTE auf den umschließenden Block zugeschnitten:
Der Wert von 'scroll' teilt den Benutzerprogrammen, die einen sichtbaren Mechanismus zum Scrolling unterstützen, mit, dass sie diesen auch anzeigen sollten, so dass Benutzer auf den zugeschnittenen Inhalt zugreifen können.
Ein Abschneidebereich (clipping region) definiert, welcher Teil des dargestellten Inhalts eines Elements sichtbar ist. Standardmäßig hat der Abschneidebereich dieselbe Größe und dieselbe Form wie die Element-Boxen. Der Abschneidebereich kann jedoch durch die 'clip'-Eigenschaft abgeändert werden.
Wert: |
<shape> | auto | inherit |
Ausgangswert: |
Auto |
Angewendet auf: |
Elemente auf Blockebene und ersetzte Elemente |
Vererbt: |
Nein |
Prozentwerte: |
N/A |
Medium: |
Visual |
Die 'clip'-Eigenschaft bezieht sich auf Elemente, deren 'overflow'-Eigenschaft einen anderen Wert als 'visible' hat. Die Werte können die folgenden Bedeutungen haben:
Die Vorfahren des Elements können ebenfalls Abschneidebereiche haben (falls ihre 'overflow'-Eigenschaft nicht 'visible' ist); dargestellt wird die Schnittmenge aus den verschiedenen Zuschneidebereichen.
Überschreitet der Abschneidebereich die Grenzen des Dokumentfensters des Benutzerprogramms, kann der Inhalt durch die systemeigene Betriebssystemumgebung auf dieses Fenster zugeschnitten werden.
Beispiel
Die beiden folgenden Regeln:
P { clip: rect(5px, 10px, 10px, 5px); }
P { clip: rect(5px, -5px, 10px, 5px); }
erzeugen die rechteckigen Abschneidebereiche, die in den folgenden Abbildungen durch die gestrichelten Linien gekennzeichnet sind:
Hinweis. In CSS2 sind alle Abschneidebereiche rechteckig. Wir erwarten zukünftige Erweiterungen, die auch ein anderes als ein rechteckiges Zuschneiden erlauben.
Wert: |
visible | hidden | collapse | inherit |
Ausgangswert: |
Inherit |
Angewendet auf: |
Alle Elemente |
Vererbt: |
Nein |
Prozentwerte: |
N/A |
Medium: |
visual |
Die 'visibility'-Eigenschaft gibt an, ob die durch ein Element erzeugten Boxen angezeigt werden. Unsichtbare Boxen haben weiterhin Einfluss auf das Layout (um das Erzeugen von Boxen völlig zu unterdrücken, setzen Sie die 'display'-Eigenschaft auf 'none'). Die Werte haben die folgenden Bedeutungen:
Diese Eigenschaft kann in Kombination mit Skripts verwendet werden, um dynamische Effekte zu erzeugen.
Beispiel
Im folgenden Beispiel wird durch Anklicken einer Schaltfläche auf dem Formular eine benutzerdefinierte Skriptfunktion aufgerufen, die veranlasst, dass die betreffende Box sichtbar wird, die andere verborgen. Weil diese Boxen dieselbe Größe und Position haben, ersetzen sie sich letztlich wechselseitig. (Der Skriptcode ist in einer hypothetischen Skriptsprache formuliert. Er kann einen beliebigen Effekt in einem CSS-fähigen Benutzerprogramm haben, muss aber nicht.)
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN">
<HTML>
<HEAD>
<STYLE type="text/css">
<!--
#container1 { position: absolute;
top: 2in; left: 2in; width: 2in }
#container2 { position: absolute;
top: 2in; left: 2in; width: 2in;
visibility: hidden; }
-->
</STYLE>
</HEAD>
<BODY>
<P>Wählen Sie einen Verdächtigen:</P>
<DIV id="container1">
<IMG alt="Al Capone"
width="100" height="100"
src="suspect1.jpg">
<P>Name: Al Capone</P>
<P>Residence: Chicago</P>
</DIV>
<DIV id="container2">
<IMG alt="Lucky Luciano"
width="100" height="100"
src="suspect2.jpg">
<P>Name: Lucky Luciano</P>
<P>Residence: New York</P>
</DIV>
<FORM method="post"
action="http://www.suspect.org/process-bums">
<P>
<INPUT name="Capone" type="button"
value="Capone"
onclick='show("container1");hide("container2")'>
<INPUT name="Luciano" type="button"
value="Luciano"
onclick='show("container2");hide("container1")'>
</FORM>
</BODY>
</HTML>