home | O'Reilly's CD bookshelfs | FreeBSD | Linux | Cisco | Cisco Exam  


Book HomeCascading Style Sheets: The Definitive GuideSearch this book

10.8. Media Types and @-rules

Don't get too excited yet. We aren't talking about media types in the sense of things like audio and video authoring. Well, not exactly, anyway. We're talking about creating rules for presentation within various kinds of media. The defined types of media thus far are:

  • screen, as in a computer screen

  • print, for things like printouts and print-preview displays

  • projection, for projected presentations such as slide shows

  • braille and embossed, for tactile feedback devices and printers

  • aural, for speech generators

  • tv, for television-type displays (think WebTV)

  • tty, for fixed-width character displays

  • handheld , for palmtop computers

  • the ubiquitous all

These are all values of @media, one of several new @-rules. Some others are:

  • @font-face, which is used in the definition of a font by manual means

  • @import, which has more power than under CSS1 by allowing authors to associate media types with @import statements; for example, @import (print.css) print;

  • @page, which allows you to define the styles of a page when using paged-media style sheets; for example, @page {size: 8.5in 11in;}

10.8.1. Paged Media

Since I just brought up paged media, I should probably mention that there are some new properties that apply to such media. Five of them apply to page breaks and where they appear:

page-break-before
page-break-after
page-break-inside
orphans
widows 

The first two are used to control whether a page break should appear before or after a given element, and the latter two are common desktop publishing terms for the minimum number of lines that can appear at the end or beginning of a page. They mean the same thing in CSS2 as they do in desktop publishing.

page-break-inside (first proposed by this author, as it happens) is used to define whether or not page breaks should be placed inside a given element. For example, you might not want unordered lists to have page breaks inside them. You would then declare UL {page-break-inside: avoid;}. The rendering agent (your printer, for example) would avoid breaking unordered lists whenever possible.

There is also size, which is simply used to define whether a page should be printed in landscape or portrait mode and the length of each axis. If you plan to print your page to a professional printing system, you might want to use marks, which can apply either cross or crop marks to your page. Thus you might declare:

@page {size: 8.5in 11in; margin: 0.5in; marks: cross;}

This will set the pages to be U.S. letter-standard, 8.5 inches wide by 11 inches tall, and place cross marks in the corners of each page.

In addition, there are the new pseudo-classes :left , :right, and :first, all of which are applied only to the @page rule. Thus, you could set different margins for left and right pages in double-sided printing:

@page:left {margin-left: 0.75in; margin-right: 1in;}
@page:right{margin-left: 1in; margin-right: 0.75in;} 

The :first selector applies only to the first page of a document, so that you could give it a larger top margin or a bigger font size:

@page:first {margin-top: 2in; font-size: 150%;}


Library Navigation Links

Copyright © 2002 O'Reilly & Associates. All rights reserved.