我正在尝试显示打印预览div(示例中为#preview
)。有没有办法只将print.css
用于特定div及其子项覆盖所有本地定义?
基本上,我希望能够做类似的事情:
#preview element {
definition equal to definition of an element in print.css
}
在main.css中,但是有很多定义。它不太干,跟随选项更连贯。
第二种方法是将print.css
包含在主文档中,并从
element {
definition
}
为:
element, #preview element {
definition
}
但在我看来这有点麻烦 什么是解决这个问题的最佳方法?
更新只是举个例子:
在主文档中我有红色下划线链接,它们应该是蓝色未装饰的印刷版本。因此,当动态形成预览内容时,我会弹出div,其中所有链接都应该是蓝色未修饰的。但只有在特定的div(#preview
)中,在文档的其余部分中,它们仍然是红色并加下划线。
答案 0 :(得分:1)
也许将div设为iframe,其中包含由print.css设置的不同页面
或者,您可以将print.css标签上的媒体设置为“打印”,但在打印预览期间,您可以使用脚本将媒体更改为“全部”。
答案 1 :(得分:1)
也许我还没有理解你的问题,但似乎你应该能够通过简单地在主样式表之后链接print.css样式表,并在print.css中为所有选择器添加前缀“#preview”来实现这一点。
在链接示例中,您需要指定如下样式:
#preview a, #preview a:link
{
text-decoration:none;
color:blue;
}
除非您动态创建print.css文件,否则这应该非常简单。
答案 2 :(得分:0)
<link rel="stylesheet" href="/main.css" type="text/css">
<link rel="stylesheet" href="/print.css" type="text/css">
</head>
<body>
<div id="main">
content
</div>
main.css:
selector1 {style}
selector2 {style}
and so on
print.css:
#print selector1 {style}
#print selector2 {style}
and so on
然后,当您生成打印预览时,只需将主包装的ID(通过JavaScript或其他)从“main”更改为“print”。
答案 3 :(得分:0)
我记得,更具体的CSS声明将始终覆盖不太具体的声明,除非较不具体的声明被标记为重要声明。
因此...... #preview element { }
将始终覆盖element { }
答案 4 :(得分:0)
将其添加到样式表中:
@media print {
#preview a:link {
color:blue;
}
}