【发布时间】:2011-03-28 16:29:27
【问题描述】:
我有一个包含大量数据、表格和内容的页面。 我想制作一个只显示极少数选定内容的打印版本。
我没有为打印而写另一个页面,而是阅读了有关“@media print”的 CSS 功能。
首先,哪些浏览器支持它?由于这是一个内部功能,所以只要最新的浏览器支持它就可以了。
我正在考虑使用“可打印”类标记一些 DOM 元素,并且基本上将“显示:无”应用于除具有“可打印”类的那些元素之外的所有元素。 这可行吗?
我如何做到这一点?
编辑: 这是我目前所拥有的:
<style type="text/css">
@media print {
* {display:none;}
.printable, .printable > * {display:block;}
}
</style>
但它隐藏了一切。如何使这些“可打印”元素可见?
编辑: 现在尝试消极的方法
<style type="text/css">
@media print {
body *:not(.printable *) {display:none;}
}
</style>
这在理论上看起来不错,但它不起作用。也许“不”不支持高级css ...
【问题讨论】:
-
我认为你应该从另一边接近它。隐藏不打印的内容,而不是隐藏所有内容并仅显示您想要打印的位。因为用干净的方式在 CSS 中实现是不可能的。
-
实际上可以按照@Strelok 建议的方式进行操作:您可以将所有不应包含在打印中的元素标记为无打印,避免标记您实际想要的元素的容器到。 .no-print{display: none:} 但它真的很愚蠢。你想要做的方式更干净,更聪明。但可悲的是,这似乎是唯一的方法。希望不是。您想要做的是一个很好的父 css 选择器用例:css-tricks.com/parent-selectors-in-css 您可以说:* {display:none;} .printable, .printable
标签: css printing css-selectors