Tengo una página con muchos datos, tablas y contenido. Quiero hacer una versión impresa que solo muestre muy pocas cosas seleccionadas.¿Cómo mostrar solo ciertas partes con CSS para Imprimir?
En lugar de escribir otra página solo para imprimir, estaba leyendo acerca de la función de CSS para "@media print".
Primero, ¿qué navegadores lo soportan? Como se trata de una función interna, está bien si solo los últimos navegadores lo admiten.
Estaba pensando en etiquetar algunos elementos DOM con una clase "imprimible", y básicamente aplicar "mostrar: ninguno" a todo excepto a aquellos elementos con la clase "imprimible". ¿Eso es factible?
¿Cómo logro esto?
EDIT: Esto es lo que tengo hasta ahora:
<style type="text/css">
@media print {
* {display:none;}
.printable, .printable > * {display:block;}
}
</style>
Pero lo esconde todo. ¿Cómo puedo hacer visibles esos elementos "imprimibles"?
EDIT: Tratando ahora el enfoque negativo
<style type="text/css">
@media print {
body *:not(.printable *) {display:none;}
}
</style>
Esto se ve bien en teoría, sin embargo, no funciona. Tal vez "no" no es compatible con CSS avanzado ...
ocultar creo que debe acercarse a ella desde el otro lado. OCULTAR el contenido que no se va a imprimir, en lugar de ocultarlo todo y solo mostrar los bits que desea imprimir. Porque no es realmente posible lograr en CSS de una manera limpia. – Strelok
En realidad, es posible hacerlo de la manera sugerida por @Strelok: puede marcar todos los elementos que no deben incluirse en la impresión como no impresos, evitando marcar un contenedor de los elementos que realmente desea. .no-print {display: none:} Pero es realmente tonto. La forma en que quieres hacerlo es más limpia e inteligente. Pero triste, esta parece ser la única forma. Espero que no. Lo que se quiere hacer es un buen caso de uso para un padre CSS Selector: https://css-tricks.com/parent-selectors-in-css/ Se podría decir: * {display: none; } .printable, .printable <* {display: block} Triste que el selector no existe. – jgomo3