有没有办法让媒体打印CSS到普通视图?

时间:2016-05-06 20:16:53

标签: javascript html css printing

我开发了一个包含大量打印媒体查询的网站,以便在打印页面时对齐内容。当您在Web浏览器上进入打印模式时,查询效果很好。但我想在常规网页上应用/删除那些@media print查询而无需进入打印模式。(通过点击按钮)有什么办法可以实现这一目标吗?

3 个答案:

答案 0 :(得分:3)

除了Boldewyn的回答外,如果您在@media print标记中包含<style>个样式,则可以将其替换为@media screen

Array.prototype.forEach.call(document.getElementsByTagName('style'), function(style) {
    style.innerText = style.innerText.replace(/@media print/gi, '@media screen');
});

请参见demo

答案 1 :(得分:2)

添加到yezzz的答案:如果您在HTML中链接了打印CSS,如

<link rel="stylesheet" media="print" href="...">

您可以删除media属性,以便在服务器或Javascript上随处启用这些样式:

document.querySelector('[media="print"]').removeAttribute('media');

请注意,如果打印样式表中的语句包含在@media print {}规则中,则不起作用。

答案 2 :(得分:1)

首先想到的是使用类。简单的例子,给你一般的想法。如果您有一个按钮可以在身体上切换emulateprint类,您可以使用例如。这个css:

body {
  color: black;
}
body.emulateprint {
  /* put same styles as @media print in here */
  color: red;
}

@media print {
  body {
    color:red;
  }
}
相关问题