Per poder imprimir colors de fons cal que l'usuari activi l'opció del navegador, però no passa el mateix amb els border.
Aprofitant aquest fet es pot mostrar un border superposat a un text donant l'efecte d'un color de fons que sempre s'imprimirà.
Aquesta solució permet imprimir colors de fons mitjançant CSS Print tot i que l'usuari tingui inhabilitada l'opció d'imprimir-los. Millor no abusar-ne.
Donat un XHTML tal com:
<div>
<h2>Títol</h2>
<p>Un paràgraf...</p>
</div>
Només cal donar un border superior al div i un margin superior negatiu al títol.
div {
border-top: 24pt solid #999;
}
h2 {
font-size: 18pt;
margin: -12pt 0 0 5pt;
line-height: 0;
}
El valor del margin-top serà la meitat del border-top sempre que el line-height sigui 0. (Aquesta proporció no es compleix en Opera).
Exemple de la tècnica de background imprimibles.
En Internet Explorer si el contingut de la caixa amb el marge negatiu és una imatge en línia falla el desplaçament. Per arreglar-ho cal posar un display: block a la imatge. És a dir:
<div>
<h2><img src="imatge" alt="Títol"/></h2>
<p>Un paràgraf...</p>
</div>
div {
border-top: 24pt solid #999;
}
h2 {
font-size: 18pt;
margin: -12pt 0 0 5pt;
line-height: 0;
}
h2 img {
display: block;
}
Gràcies a en Ramon Vilar per detectar que no rutllava en IE aquest cas.
A més a més, pot ser que apareguin problemes d'apilament si la caixa desplaçada és inline. Llavors caldrà modificar l'apilament.
Comentaris
Comentat per meneame.net el 18/06/06
Backgrounds Imprimibles con CSS...
La notícia está en catalan, aunque no hay que saber catalan para entender los ejemplos. La idea es que por defecto, cuando imprimes una página web no se imprime el background sinó está habilitada la opción. Pues bien, Arnau propone valernos del border ...
Comentat per Francesc el 18/06/06
Bona aquesta. Funciona als principals navegadors?
Comentat per Oriol el 18/06/06
Fins a quin punt és ètic emprar aquesta tècnica per a forçar a l'usuari a imprimir quelcom que no vol imprimir?
La meva opinió és que caldria avisar dels canvis que efectuem mitjançant CSS, XHTML o el que sigui al comportament habitual del seu navegador.
Comentat per are el 18/06/06
@Francesc: Jo ho he provat en Firefox, Safari, IE i Opera.
Opera difereix de la resta en la proporció tal i com comento al darrer paràgraf, la resta funciona.
@Oriol: Com ja has vist he posat una advertència exclusivament per aquest tema. El millor és no fer-ho però suposant que calgués aquest mètode seria una via prou neta.
Comentat per Enrique el 07/09/06
Muy buena solución. La verdad es que ahora estoy liado intentando solucionar esto, osea, imprimir background, y creo esta solución, realmente no imprime backgrounds, pero es 100% válida. Genial idea ;-)