Druckstylesheets
5Dokumente einfach für den Druck aufbereiten
Inhalt:
In diesem Artikel lernst du, wie man schnell und einfach ein Druckstylesheet mit CSS entwirft, das nicht nur dem Anwender Nerven und Frustration beim Drucken erspart, sondern nach der richtigen Erstellung auch universell auf allen Seiten einer Website anwendbar ist.
Ziel
Ziel des Druckstylesheets soll es sein, den wichtigen Inhalt der zu druckenden Seite möglichst platzsparend und druckerfreundlich, d.h. ohne unnötige Bilder und Farben, darzustellen. Auch soll das Druckstylesheet seitenübergreifend funktionieren, so dass es für neue Seiten deiner Website ohne erneute Anpassung funktioniert.
Das media-Attribut
Um dem Drucker mitzuteilen, welches Stylesheet er für den Druck verwenden soll, bedienen wir uns dem media-Attribut. Mit dem media-Attribut lassen sich für nahezu alle Ausgabegeräte eigene Stylesheets definieren.
So können wir leicht unserem Drucker ein Stylesheet zuweisen:
<link rel="stylesheet" type="text/css" href="print.css" media="print" />
Eine ausführliche Liste über alle Werte des media-Attributes findest du bei SelfHtml.
Anpassen der Website für den Druck
Um Seitenelemente per CSS für den Druck formatieren zu können, sollten sie eine eindeutige Bezeichnung per ID oder Klasse besitzen.
Eine ID oder eine Klasse wird vergeben, indem in das entsprechende Element das class-Attribut oder das id-Attribut eingefügt wird.
<div id="navigation"> <p class="infotext"></p> </div>
Zugehöriges CSS:
#navigation {
/* Hier folgen die CSS-Anweisungen */
}
.infotext {
/* Hier folgen die CSS-Anweisungen */
}
Der Unterschied zwischen IDs und Klassen besteht darin, dass IDs nur einmal pro Seite vergeben werden dürfen (wie zum Beispiel für die Navigation). Klassen hingegen werden für Elemente vergeben, die öfters innerhalb einer Seite vorkommen können, wie z.B. Textabsätze.
Ausblenden nicht benötigter Seitenelemente
Seitenelemente wie die Navigation, Werbebanner, Partner-Links oder Formularelemente können problemlos vor dem Drucker versteckt werden und werden auf einem Ausdruck nicht benötigt.
#header, #main_navigation, #sub_navigation, #info, #ads, #portrait {
display: none !important;
}
Der Zusatz „!important” sorgt dafür, dass die CSS-Angaben nicht von anderen Stylesheets überschrieben werden.
Anpassen des Schriftbildes
Im Gegensatz zum Web, wo serifenlose Schriften (Arial, Verdana, Tahoma, etc.)
aufgrund besserer Lesbarkeit bevorzugt verwendet werden, setzt man beim Druck eher auf Serifenschriften wie z.B. Times New Roman. Auch ändere ich das Schriftgrößenformat für den Druck gerne ab, und verwende die Einheit pt (Punkt), eine im Druck üblicherweise eingesetzte Schriftgrößeneinheit. Eine Größe von etwa 12pt ist gut lesbar.
Überschriften werden noch ein wenig größer gemacht, und schon steht der nächste Teil des Stylesheets:
html {
font-family: "Times New Roman", serif !important;
color: #000000 !important;
}
p {
font-size: 12pt !important;
}
h1 {
font-size: 15pt !important;
}
h2 {
font-size: 14pt !important;
}
h3 {
font-size: 13pt !important;
}
Anpassen von Hintergründen
Als letztes Setzen wir die Hintergrundfarben unserer noch angezeigten Elemente auf Weiß, und entfernen eventuell vorhandene Hintergrundbilder.
#content, .textabsatz, .infoxbox {
background: #FFFFFF !important;
}
Fazit
Für die meisten Seiten reichen bereits diese kurzen Angaben, um die Seite für den Druck ausreichend anzupassen.
Unter Datei » Drucken findest du in nahezu jedem modernen Browser eine Druckvorschau, anhand welcher du dein Druckstylesheet während der Erstellung ständig überprüfen kannst.
Dieser Artikel wurde verfasst von Martin Reithmayer.
Der Artikel ist am 14.05.2007 um 18:22 Uhr veröffentlicht worden und
wurde bislang 5 mal kommentiert.
Tags: CSS
paby am 27.04.2007 um 16:37 Uhr
hallo martin,
es gibt nix schlimmeres, als tutorials, die im ausdruck abgeschnitten sind oder voll mit unnötiger navi/reklame...
schönes tutorial hast du da gemacht
have fun - paby
Klaus Scharwächter am 22.01.2008 um 15:41 Uhr
Hi,
"!important" sollte nur in Ausnahmefällen verwendet werden, am besten sogar überhaupt nicht.
Im Falle einer druck.css nebst media="print" ist sie unnötig, da die druck.css ja praktischerweise nicht aus der screen.css generiert wird, sondern wieder bei null angefangen wird.
Übliche Fehlerquellen wie höhere Spezifität durch Nachfahrenselektoren und damit wiederausschalten einer display:none;-Formatierung kommen so gar nicht erst zum Tragen.
Gruß
Klaus
Lizzard am 22.01.2008 um 23:54 Uhr
Hallo Klaus,
natürlich hast du in diesem Fall recht, doch nicht jeder achtet beim Erstellen seiner Stylesheets darauf, die einzelnen CSS-Dokumente dem jeweiligen Ausgabeformat (Screen, Print, Handheld, etc.) zuzuordnen. Somit würde ein Stylesheet auch für Print gelten, und Einstellungen für den Druck würden u.U. nicht zum gewünschten Erfolg führen. Die "!important" sind hier eher eine Präventivmaßnahme um Interferenzen mit anderen Stylesheets zu vermeiden. Natürlich ist bei einer guten CSS-Struktur "!important" überflüssig, da gebe ich dir absolut recht.
Grüße,
Lizzard
Jens Meiert am 12.03.2008 um 10:40 Uhr
Ich darf ganz unverschämt auf die Methode hinweisen, ein Druck-Stylesheet auch einfach via @media zu "implizieren" …
Link: http://meiert.com/de/publications/articles/20070409/
Schon seit vielen Jahren beschäftige ich mich aktiv mit Webgestaltung und der Arbeit unter Linux. Dieser Blog dient mir als
Sprachrohr, meine Erfahrungen und Eindrücke aus verschiedensten Bereichen rund um den Computer an interessierte Anwender weiterzugeben.
gen am 15.04.2007 um 20:57 Uhr
Ein echt guter Artikel! Werde das demnächst auch auf meinen Seiten einbinden.
Ich denke das man oft keine Lust hat sich noch ein Extra Druck-Stylesheet zu machen, jedoch ist es umso wichtiger, wenn man sich überlegt wie viele Leute die Angewohnheit haben Webseiten auszudrucken.
Viele Grüße,
gen