O truque está em gerar o mesmo conteúdo usando scripts CSS diferentes. Ao definir ou incluir um ou vários scripts, pode-se determinar o valor da propriedade media. Se houver um script com media: screen, o estilo é aplicado quando a saída for a tela do monitor; se houver um com media: print, o estilo é aplicado quando a saída for para a impressora.
Os valores da propriedade media são vários:
media="all" para todos os tipos de mídia.
media="aural" para voz sintetizada gerenciada por computador.
media="braille" para aparelhos que produzem escrita Braille (para cegos).
media="embossed" para impressoras Braille.
media="handheld" para handhelds.
media="print" para impressoras.
media="projection" para projeção de dados (data show).
media="screen" para a tela do monitor.
media="tty" para mídia não gráfica (teletipo ou browser Lynx).
media="tv" para dispositivos de saída semelhantes a TV.
Como inserir um script CSS
Há várias maneiras de se inserir um script CSS.
A tradicional é colocar o script na área head da página:
<html>
<head>
<title>Exemplo</title>
<style type="text/css">
... aqui vão as elementos: propriedades ...
</style>
</head>
<body>
...
Outra forma clássica é criar um arquivo próprio para o script e incluí-lo na página:
<html>
<head>
<title>Exemplo</title>
<link rel="stylesheet" type="text/css" href="formatos.css">
<style type="text/css">
... aqui vão as elementos: propriedades ...
</style>
</head>
<body>
...
Como mostrado acima, um método não exclui o outro. Além disto, mais de um script externo pode ser incluído, para o mesmo tipo de saída ou para saídas diferentes:
<html>
<head>
<title>Exemplo</title>
<link rel="stylesheet" media="screen" href="website.css">
<link rel="stylesheet" media="print, embossed" href="imprimir.css">
<link rel="stylesheet" media="aural" href="voz.css">
</head>
<body>
...
Apenas os navegadores mais recentes aceitam o método @import e, com exceção do Internet Explorer, aceitam associar @import com o tipo de mídia:
<html>
<head>
<title>Exemplo</title>
<style type="text/css">
@import url(imprimir.css) print, embossed;
@import url(pocketPC.css) handheld;
@import url(normal.css) screen;
</style>
</head>
<body>
...
Há ainda o método @media que pode ser usado para definir propriedades de seletores para diversas saídas:
<html>
<head>
<title>Exemplo</title>
<style type="text/css">
@media print {
seletor { propriedade: valor; }
}
@media screen, handheld {
seletor { propriedade: valor; }
}
</style>
</head>
<body>
...