我试图为我们的应用程序制作一个可打印的样式表,但我在@media打印的背景颜色有问题。
@media print {
#header{display:none;}
#adwrapper{display:none;}
td {
border-bottom: solid;
border-right: solid;
background-color: #c0c0c0;
}
}
其他一切工作,我可以修改边界和这样,但背景色不会通过打印。我知道,如果没有更多细节,你们可能无法回答我的问题。我只是好奇是否有人有这个问题,或类似的,以前。
还有一个技巧,你可以不用激活打印边框选项,在其他文章中提到过。因为边界是打印出来的,你可以用下面的方法模拟纯色背景:
.your-background:before {
content: '';
display: block;
position: absolute;
top: 0;
right: 0;
left: 0;
z-index: -1;
border-bottom: 1000px solid #eee; /* Make it fit your needs */
}
通过将类添加到元素中来激活它:
<table>
<tr>
<td class="your-background"> </td>
<td class="your-background"> </td>
<td class="your-background"> </td>
</tr>
</table>
尽管这需要一些额外的代码和一些额外的注意来使背景颜色可见,但这是我所知道的唯一解决方案。
注意,这个hack对display: block以外的元素不起作用;或者display: table-cell;,例如<table class="your-background">和<tr class="your-background">将不起作用。
我们使用这个来获得所有浏览器的背景色(仍然需要IE9+)。
我想我应该从最近的打印css经验中添加一个最近和2015年的相关帮助。
无论打印对话框设置如何,都能够打印背景和颜色。
为了做到这一点,我必须使用!important & -webkit-print-color-adjust:exact !important的组合来正确地打印背景和颜色。
此外,在声明颜色时,我发现最顽固的地方需要直接定义目标。例如:
<div class="foo">
<p class="red">Some text</p>
</div>
和你的CSS:
.red {color:red !important}
.foo {color:red !important} /* <-- This won't always paint the p */
在2016/10测试和工作在Chrome, Firefox, Opera和Edge。应该可以在任何浏览器上工作,并且看起来应该总是像预期的那样。
好的,我做了一个跨浏览器的打印背景色的实验。只是复制,粘贴和享受!
这里是一个完整的可打印的HTML页面引导:
<!DOCTYPE html>
<html>
<head>
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css">
<style type="text/css">
/* Both z-index are resolving recursive element containment */
[background-color] {
z-index: 0;
position: relative;
-webkit-print-color-adjust: exact !important;
}
[background-color] canvas {
display: block;
position:absolute;
z-index: -1;
top: 0;
left: 0;
width: 100%;
height: 100%;
}
</style>
</head>
<!-- CONTENT -->
<body>
<!-- PRINT ROW BLOCK -->
<div class="container">
<div class="row">
<div class="col-xs-6">
<div background-color="#A400C1">
<h4>
Hey... this works !
</h4>
<div background-color="#0068C1">
<p>
Ohh... this works recursive too !!
<div background-color="green" style="width: 80px; height: 60px">
Any size !!
</div>
</p>
</div>
</div>
</div>
<div class="col-xs-6">
<div background-color="#FFCB83" style="height: 200px">
Some content...
</div>
</div>
</div>
<script>
var containers = document.querySelectorAll("[background-color]");
for (i = 0; i < containers.length; i++)
{
// Element
var container = containers[i];
container.insertAdjacentHTML('beforeend', '<canvas id="canvas-' + i + '"></canvas>');
// Color
var color = container.getAttribute("background-color");
container.style.backgroundColor = color;
// Inner Canvas
var canvas = document.getElementById("canvas-" + i);
canvas.width = container.offsetWidth;
canvas.height = container.offsetHeight;
var ctx = canvas.getContext("2d");
ctx.fillStyle = color;
ctx.fillRect(0, 0, canvas.width, canvas.height);
}
window.print();
</script>
</body>
</html>
尽管!的重要用法通常不受欢迎,但这是bootstrap.css中令人讨厌的代码,它阻止表行以背景色打印。
.table td,
.table th {
background-color: #fff !important;
}
让我们假设你正在尝试为下面的HTML设置样式:
<table class="table">
<tr class="highlighted">
<td>Name</td>
<td>School</td>
<td>Height</td>
<td>Weight</td>
</tr>
</table>
要覆盖这个CSS,在你的样式表中放置以下(更具体的)规则:
@media print {
table tr.highlighted > td {
background-color: rgba(247, 202, 24, 0.3) !important;
}
}
这是因为该规则比引导默认值更具体。