| CSS bietet die Möglichkeit, Formatierungen speziell für den Bedarf von Print-Medien zu formulieren. Das geht weit über die Möglichkeiten von Standard-HTML hinaus. | Mit CSS ist es möglich, sowohl getrennte Webseiten für Monitor und Druck zu optimieren, als auch Kombi-Seiten je nach Medium unterschiedlich zu formatieren. |
CSS
|
Cascading Stylesheets |
| Medien-Regeln | Getrennte CSS-Regeln für verschiedene Ausgabe-Medien |
Getrennte Stylesheet-Dateien für verschiedene Medien |
|
Getrennte <style>-Elemente für verschiedene Medien |
|
Einzelne CSS-Anweisungen für verschiedene Medien |
|
| @page | Seiten-Format, linke und rechte Seiten |
| size & margin | Seitengröße und -Rand, Abstand (Einzug) und Rand |
| page-break | Seiten-Umbruch |
| querformat | Eigene Namen für Seitenformate |
| position | Absolute und relative Position von Elementen |
| float | Text fließt um andere Elemente |
| display | Ein- und Ausblenden von Elementen: display und visibility |
| Verwandte Themen | Layout für den Ausdruck optimieren, Druck mit Javascript |
Medien-spezifische Formatierung |
||||||||||||||||
|
Es ist fast immer sinnvoll, verschiedene CSS-Regeln für die Ausgabe auf
unterschiedlichen Medien festzulegen. Je nach gewünschter Reichweite der CSS-Regeln
sind diese auf unterschiedliche Weise mit den Webseiten und den darin enthaltenen Elementen
verknüpft. Jede dieser Varianten verfügt über die Möglichkeit,
Medien-spezifische Regeln anzugeben. ♦ Details zur CSS-Anwendung auf 3 Ebenen der Reichweite |
Für die Anwendung gilt die gleiche Strategie wie für CSS allgemein: • Am besten ist die zentrale Festlegung von Medien-spezifischen Regeln für alle Webseiten. • Weniger effizient sind CSS-Regeln für einzelne Webseiten. • Regeln für einzelne HTML-Elemente erfordern den größten Aufwand. |
|||||||||||||||
|
||||||||||||||||
| Diese Seite bietet ein Kapitel für jede Ebene der Medien-spezifischen Formatierung. | Klicken sie in eine Zeile der Tabelle, um direkt zum betreffenden Kapitel zu gelangen. | |||||||||||||||
|
▲
Alle Kapitel dieser Seite demonstrieren Möglichkeiten, die
gleiche Webseite sowohl für den Bildschirm als auch
für den Ausdruck zu verwenden. CSS bietet dazu viele interessante
Möglichkeiten. ▼ Alle Varianten stellen jedoch einen Kompromiss dar - zwischen der idealen Formatierung für den Monitor und jener für den Drucker. Bei detaillierter Ausarbeitung der CSS-Regeln nimmt der Aufwand rasch zu. ▼ Leider sind die meisten Web-Editoren nicht in der Lage, das Aussehen in einer der beiden Ausgabe-Varianten eindeutig anzuzeigen. Daher kann die Entwicklung teilweise nur 'blind' erfolgen, d.h. man muss die Seite jedesmal anzeigen und ausdrucken, um das Ergebnis zu kontrollieren. |
Eine sehr empfehlenswerte Alternative ist die doppelte Ausführung von Webseiten, deren Ausdruck wahrscheinlich ist: ▲ In diesem Fall werden 2 getrennte Seiten für Bildschirm und Drucker erzeugt. Das macht die Entwicklung rasch, einfach und übersichtlich. ▼ Auf der Bildschirm-Variante wird eine ▼ Bei jeder Änderung des Inhalts müssen beide Seiten synchron geändert werden. Das ist ein schwerwiegender Nachteil für Webseiten, die oft geändert werden. ▲ Die ideale Lösung für diesen Fall sind dynamische Webseiten: In diesem Fall wird der Inhalt zentral verwaltet und mit Hilfe eines Programms (Perl, PHP, Python, ..) automatisch auf mehrere Webseiten verteilt. ♦ Details zum Druck mit Javascript |
|||||||||||||||
<style>-Elemente |
|
|
In einem HTML <style>-Element werden die CSS-Regeln für
diese Webseite festgelegt. Durch Angabe des media Attributs wird die
Anwendung der darin festgelegten CSS Regeln auf ein bestimmtes Medium beschränkt. Damit wird die gleiche Webseite für verschiedene Medien unterschiedlich formatiert. Im Beispiel wird die Hintergrund-Farbe der Seite (des HTML <body>-Elements) für den Bildschirm hellblau festgelegt, für den Ausdruck weiß. |
Steuerung durch verschiedene <style>-Elemente:
<style type="text/css" media="screen">
/* <![CDATA[ */
body{background-color:#CCF;}
/* ]]> */
</style><style type="text/css" media="print"> /* <![CDATA[ */
body{background-color:#FFF;}
/* ]]> */
</style>
|
|
Wenn eine CSS-Anweisung für alle Medien gelten soll,
dann gibt es 3 Möglichkeiten: • Allgemein gültige CSS-Anweisungen werden in jedes <style>-Element eingetragen, z.B. sowohl in jenes für screen als auch für print |
•
Man definiert ein weiteres <style>-Element
ohne media-Attribut und trägt
darin alle CSS-Anweisungen mit allgemeiner Gültigkeit ein.
• Man verwendet die ↓ CSS @media-Anweisung |
| Die kompliziert aussehenden Kommentar-Zeilen der Beispiele sind nur für → XHTML notwendig, stören aber auch in HTML nicht, weil sie ohnehin in CSS-Kommentare /* ... */ eingeschlossen werden. |
XML-konforme Bezeichnung
für eingebettete Daten - in diesem Fall für CSS-Anweisungen:
<![CDATA[
... ]]> |
@media |
|
|
Die CSS-Anweisung @media beschränkt die Gültigkeit
der nachfolgenden CSS-Regeln auf ein bestimmtes Medium. Die Gültigkeit dieser
Einschränkung erstreckt sich auf alle CSS-Regeln innerhalb der
nachfolgenden {} Klammern. Diese Variante erlaubt es, innerhalb einer externen Stylesheet-Datei oder innerhalb eines <style>-Elements getrennte Regeln für verschiedene Medien zu definieren. In diesem Fall darf jedoch die Gültigkeit der Datei bzw. des <style>-Elements nicht durch ein ↑ media-Attribut eingeschränkt werden ! |
<style type="text/css">
/* <![CDATA[ */
@media screen, handheld
{
@media print
body{background-color:#CCF;}
}
{
body{background-color:#FFF;}
}
/* ]]> */
</style>
|
@page |
|
|
Die CSS-Anweisung @page legt Regeln zur Formatierung der
Druck-Seite fest. Definieren sie hier die ↓ Größe (size, meist für → A4 wie im Beispiel rechts) und die Ränder. Lassen sie genügend Rand frei, denn die meisten gängigen Drucker können nicht bis zum Rand ('abfallend') drucken ! Die Regeln einer @page-Anweisung bleiben am Bildschirm ohne Wirkung. ♦ Details zu den Standard-Formaten von Papier-Seiten |
Ausdruck auf einer
A4-Seite:
<style type="text/css">
/* <![CDATA[ */
@page { size:210mm 297mm;
margin-top:15mm;
}
margin-bottom:15mm; margin-left:20mm; margin-right:20mm; /* ]]> */
</style>
|
|
Unterschiede für rechte und linke Seiten: Wenn sie ein Druckwerk binden, dann ist es sinnvoll, Innen- und Außenränder unterschiedlich zu formatieren. |
@page { size:...; margin...;}
@page :left { size:...; margin...;} @page :right { size:...; margin...;} |
Seitengröße und -Rand: size, margin, padding, border |
|
sizeDie CSS-Eigenschaft size definiert die Größe der Druckseite. Sie wird normalerweise innerhalb einer ↑ @page-Anweisung verwendet.• Für die Standard-Größe → A4 geben sie als Wert einen von {auto,portrait,landscape} an. • Für die absolute Festlegung geben sie Breite und Höhean, durch Leerzeichen getrennt. Als Einheit wird sinnvoll cm oder mm verwendet. Rechts im Beispiel die Maße einer Standard A4-Seite. |
Einstellung der Seiten-Größe mit CSS:
size:auto;
size:portrait; /* A4-Seite: */
size:21.0cm 29.7cm;size:210mm 297mm; |
marginDie CSS-Eigenschaft margin regelt den Außen-Rand um ein beliebiges Element, d.h. seinen Abstand vom parent-Element.• Eigenschaft margin erzeugt den gleichen Rand rund um das Element. • Die Eigenschaften margin-top,margin-bottom,margin-left,margin-right erlauben die getrennte Einstellung der 4 Ränder. Übliche PC-Drucker können nicht bis zum Rand (abfallend) drucken - Lassen sie sicherheitshalber etwas mehr Rand frei, als ihr eigener Drucker gerade noch schafft ! ♣ Tipp: Die CSS-Eigenschaft margin lässt sich nicht nur auf @page Seiten sondern auf fast alle HTML-Elemente anwenden. Damit lässt sich z.B. ein Einzug genau festlegen. |
Einstellung des Außen-Rands mit CSS:
margin:0px;
margin:3mm;
margin:5mm; margin-left:1mm; margin-right:1mm;
<div style="margin-left:1cm;">
Einzug links !
</div>
|
paddingDie CSS-Eigenschaft padding regelt den Innen-Rand eines Elements, d.h. den Abstand aller innerhalb liegenden child-Elemente. Der erzielte Effekt ist identisch mit jenem von margin, wirkt jedoch in die umgekehrte Richtung.Wenn in einem übergeordneten parent-Element ein padding und in einem seiner child-Elemente ein margin festgelgt wird, dann addieren sich die beiden Abstände. |
Einstellung des Innen-Rands mit CSS
<div style="border:1px solid blue; padding:2mm;">
child-Element
|
borderDie CSS-Eigenschaft border regelt die Umrahmung eines Elements. Damit lässt sich ein sauberer Rand um jedes beliebige Element ziehen. Farbe, Aussehen ung Stärke lassen sich getrennt einstellen, die 4 Ränder lassen sich auch unterschiedlich formatieren.♦ Details dazu in jeder CSS-Referenz unter dem Stichwort border |
<div style="border:1px solid blue;">
Mustertext
</div>
|
Seiten-Umbruch |
|
page-break-beforeDie CSS-Eigenschaft page-break-before bewirkt vor dem entsprechenden Element einen Seiten-Umbruch ('neue Seite') beim Ausdruck. Auf Bildschirm-Seiten gibt es keinen Seiten-Umbruch, dort werden lange Seiten bei Bedarf auf- und ab-gerollt (scroll).Wenn kein Umbruch angegeben wird, dann wird beim Erreichen der ↑ Seiten-Größe (size) automatisch die nächste Seite begonnen. Optionale Argumente für alle page-break-Eigenschaften: always (immer), avoid (hier nicht), left (neue Seite links), right (neue Seite rechts), inherit (vom parent-Element erben). |
<div>
Letzte Zeile der alten Seite
</div><div style="page-break-before:always"> Erste Zeile der neuen Seite
</div>
|
page-break-afterDie CSS-Eigenschaft page-break-after bewirkt im Ausdruck einen Seiten-Umbruch nach dem entsprechenden Element. Die Anwendung erfolgt sinngemäß so wie für page-break-before |
<div style="page-break-after:always">
Alte Seite
</div><div> Neue Seite </div> |
page-break-insideDie CSS-Eigenschaft page-break-inside kann einen Seiten-Umbruch innerhalb eines Elements unterbinden. Aus der Textverarbeitung ist dieses Verhalten von der Option 'Absatz-Zeilen nicht trennen' bekannt. |
<div style="page-break-inside:avoid">
Zeilen nicht trennen !
</div>
|
|
|
|
Sichtbarkeit ein- und ausblenden |
|||||||||||||
|
Die CSS-Eigenschaften display,visibility steuern die Sichtbarkeit. Beispiel: Es ist sinnvoll, im Ausdruck alle interaktiven Elemente (Bildschirmtasten, Auswahl-Optionen, Markierungs-Kästchen, ...) unsichtbar zu machen, da sie auf Papier keinen Sinn ergeben. Die Wirkung der beiden CSS-Eigenschaften wird mit einem kleinen Javascript-Programm demonstriert. Klicken sie im Beispiel rechts auf eine der CSS-Klassen. |
Text vorher
<div> Steuern sie Live die Sichtbarkeit dieses Hinweises ! </div> Text nachher |
||||||||||||
|
►
Mit display:inline oder
mit visibility:visible wird ein Element angezeigt. ► Mit display:none verschwindet das Element und 'macht Platz', d.h. die nachfolgenden Elemente rücken nach. |
►
Mit visibility:hidden verschwindet das Element, sein Platz im
Layout bleibt jedoch erhalten. ♦ Details dazu in den Kapiteln CSS Sichtbarkeit und Javascript @ style-Objekt |
||||||||||||
|