我正在尝试打印页面。在那个页面中,我给了一张表背景颜色。 当我在chrome中查看打印预览时,它没有采用背景颜色属性...
所以我尝试了这个属性:
-webkit-print-color-adjust: exact;
但仍然没有显示颜色。
.vendorListHeading {
background-color: #1a4567;
color: white;
-webkit-print-color-adjust: exact;
}
<div class="bs-docs-example" id="soTable" style="padding-top: 10px;">
<table class="table" style="margin-bottom: 0px;">
<thead>
<tr class="vendorListHeading" style="">
<th>Date</th>
<th>PO Number</th>
<th>Term</th>
<th>Tax</th>
<th>Quote Number</th>
<th>Status</th>
<th>Account Mgr</th>
<th>Shipping Method</th>
<th>Shipping Account</th>
<th style="width: 184px;">QA</th>
<th id="referenceSO">Reference</th>
<th id="referenceSO" style="width: 146px;">End-User Name</th>
<th id="referenceSO" style="width: 118px;">End-User's PO</th>
<th id="referenceSO" style="width: 148px;">Tracking Number</th>
</tr>
</thead>
<tbody>
<tr class="">
<td>22</td>
<td>20130000</td>
<td>Jim B.</td>
<td>22</td>
<td>510 xxx yyyy</td>
<td>zznn@abc.co</td>
<td>PDF</td>
<td>12/23/2012</td>
<td>Approved</td>
<td>PDF</td>
<td id="referenceSO">12/23/2012</td>
<td id="referenceSO">Approved</td>
</tr>
</tbody>
</table>
</div>
答案 0 :(得分:367)
Chrome CSS属性-webkit-print-color-adjust: exact;
正常运行。
但是,确保使用正确的CSS进行打印通常很棘手。可以采取一些措施来避免您遇到的困难。首先,将所有打印CSS与屏幕CSS分开。这是通过@media print
和@media screen
完成的。
通常只是设置一些额外的@media print
CSS是不够的,因为您在打印时仍然包含所有其他CSS。在这些情况下,您只需要了解CSS特性,因为打印规则不会自动赢取非打印CSS规则。
在您的情况下,-webkit-print-color-adjust: exact
正在运行。但是,您的background-color
和颜色定义会被具有更高特异性的其他CSS击败。
虽然我几乎在任何情况下不赞同使用!important
,但以下定义可以正常运行并揭露问题:
@media print {
tr.vendorListHeading {
background-color: #1a4567 !important;
-webkit-print-color-adjust: exact;
}
}
@media print {
.vendorListHeading th {
color: white !important;
}
}
答案 1 :(得分:65)
CSS属性就是你所需要的它对我有用...在Chrome中预览你可以选择看它BW和颜色(颜色:选项 - 颜色或黑白)所以如果你没有这个选项,那么我建议你抓住这个Chrome扩展程序,让你的生活更轻松:
你在小提琴上添加的网站需要你的媒体印刷css(你只需要添加它...
媒体打印身体中的CSS:
@media print {
body {-webkit-print-color-adjust: exact;}
}
<强>更新强> 好的,所以你的问题是bootstrap.css ...它有一个媒体打印css以及你做....你删除它,这应该给你的颜色....你需要做自己的或坚持bootstraps print css。
当我点击打印时,我看到了颜色.... http://jsfiddle.net/rajkumart08/TbrtD/1/embedded/result/
答案 2 :(得分:26)
我只需要将!important
属性添加到background-color标签上,以便显示它,不需要webkit部分:
background-color: #f5f5f5 !important;
答案 3 :(得分:26)
如果关闭背景图形设置,Chrome在打印时将无法呈现背景色或其他几种样式。
这与css,@ media或特异性无关。您可能会破解它的方式,但获取chrome以显示背景颜色和其他图形的最简单方法是在“更多设置”下正确选中此复选框。
答案 4 :(得分:10)
如果您使用的是bootstrap或任何其他第三方CSS,请确保仅在其上指定媒体屏幕,以便您可以在自己的CSS文件中控制打印媒体类型:
<link rel="stylesheet" media="screen" href="">
答案 5 :(得分:7)
你的CSS必须是这样的:
@media print {
body {
-webkit-print-color-adjust: exact;
}
}
.vendorListHeading th {
background-color: #1a4567 !important;
color: white !important;
}
答案 6 :(得分:6)
在@media print
样式表中使用以下内容。
h1 {
background-color:#404040;
background-image:url("img/404040.png");
background-repeat:repeat;
box-shadow: inset 0 0 0 1000px #404040;
border:30px solid #404040;
height:0;
width:100%;
color:#FFFFFF !important;
margin:0 -20px;
line-height:0px;
}
以下是需要注意的几点:
请参阅我的fiddle以获取更详细的演示。
答案 7 :(得分:6)
要解决使用BOOTSTRAP.CSS的问题,这就是解决方法!
我尝试了所有解决方案,但是这些解决方案都无法正常工作……直到我发现bootstrap.css的超级烦人的@media print
会重置您所有的颜色,背景色,阴影等。
@media print{*,:after,:before{color:#000!important;text-shadow:none!important;background:0 0!important;-webkit-box-shadow:none!important;box-shadow:none!important}
因此,请从bootstrap.css(或bootstrap.min.css)中删除此部分
或在您要在自己的@media print
中打印的页面的CSS中覆盖这些值
@media print {
body {
-webkit-print-color-adjust: exact;
}
.customClass{
//customCss + !important;
}
//more of your custom css
}
答案 8 :(得分:5)
您确定这是一个CSS问题吗?谷歌在这个问题上有一些帖子: http://productforums.google.com/forum/#!category-topic/chrome/discuss-chrome/eMlLBcKqd2s
可能与打印过程有关。在safari上,也是webkit,还有一个复选框,用于在打印机对话框中打印背景图像和颜色。
答案 9 :(得分:2)
我使用了purgatory101's answer,但无法保留所有颜色(图标,背景,文字颜色等等),尤其是CSS样式表无法与动态更改DOM元素颜色的库一起使用。因此,这是一个脚本,可以在打印之前更改元素的样式(background-colour
和colour
),并在打印完成后清除样式。避免在@media print
样式表中编写大量CSS是很有用的,因为它适用于任何页面结构。
脚本的一部分专门用于保持FontAwesome图标的颜色(或任何使用:before
选择器插入彩色内容的元素。)
<强> JSFiddle showing the script in action 强>
兼容性适用于Chrome,我没有测试其他浏览器。
function setColors(selector) {
var elements = $(selector);
for (var i = 0; i < elements.length; i++) {
var eltBackground = $(elements[i]).css('background-color');
var eltColor = $(elements[i]).css('color');
var elementStyle = elements[i].style;
if (eltBackground) {
elementStyle.oldBackgroundColor = {
value: elementStyle.backgroundColor,
importance: elementStyle.getPropertyPriority('background-color'),
};
elementStyle.setProperty('background-color', eltBackground, 'important');
}
if (eltColor) {
elementStyle.oldColor = {
value: elementStyle.color,
importance: elementStyle.getPropertyPriority('color'),
};
elementStyle.setProperty('color', eltColor, 'important');
}
}
}
function resetColors(selector) {
var elements = $(selector);
for (var i = 0; i < elements.length; i++) {
var elementStyle = elements[i].style;
if (elementStyle.oldBackgroundColor) {
elementStyle.setProperty('background-color', elementStyle.oldBackgroundColor.value, elementStyle.oldBackgroundColor.importance);
delete elementStyle.oldBackgroundColor;
} else {
elementStyle.setProperty('background-color', '', '');
}
if (elementStyle.oldColor) {
elementStyle.setProperty('color', elementStyle.oldColor.value, elementStyle.oldColor.importance);
delete elementStyle.oldColor;
} else {
elementStyle.setProperty('color', '', '');
}
}
}
function setIconColors(icons) {
var css = '';
$(icons).each(function (k, elt) {
var selector = $(elt)
.parents()
.map(function () { return this.tagName; })
.get()
.reverse()
.concat([this.nodeName])
.join('>');
var id = $(elt).attr('id');
if (id) {
selector += '#' + id;
}
var classNames = $(elt).attr('class');
if (classNames) {
selector += '.' + $.trim(classNames).replace(/\s/gi, '.');
}
css += selector + ':before { color: ' + $(elt).css('color') + ' !important; }';
});
$('head').append('<style id="print-icons-style">' + css + '</style>');
}
function resetIconColors() {
$('#print-icons-style').remove();
}
然后修改window.print
功能,使其在打印前设置样式并在之后重置它们。
window._originalPrint = window.print;
window.print = function() {
setColors('body *');
setIconColors('body .fa');
window._originalPrint();
setTimeout(function () {
resetColors('body *');
resetIconColors();
}, 100);
}
找到用于创建CSS的图标路径的部分:在元素之前是this SO answer
的副本答案 10 :(得分:1)
在@media print {*,:after,:before ....}下的bootstrap css文件中有一种样式,其颜色和背景样式标记为!important,它删除任何元素上的任何背景颜色。杀掉那两块css就可以了。
Bootstrap正在做出执行决定,你应该从不在打印中有任何背景颜色,因此你必须编辑他们的css或者拥有更高优先级的另一种重要风格。干得好的工作......
答案 11 :(得分:1)
您还可以使用box-shadow
属性。
答案 12 :(得分:0)
您可以通过 !important 使用内联 css 样式。 例如。
<p style="background:red!important">ABCD</p>
答案 13 :(得分:0)
答案 14 :(得分:0)
这是最好的解决方案,如果您使用的是引导程序,则只需删除其中的所有代码即可 @media print {} 。并在进行打印预览时通过更多设置启用背景图形。
答案 15 :(得分:0)
如果您正在使用 Bootstrap 。只需在自定义css文件中使用此代码。 Bootstrap会在打印预览中删除所有颜色。
@media print{
.box-text {
font-size: 27px !important;
color: blue !important;
-webkit-print-color-adjust: exact !important;
}
}
答案 16 :(得分:-1)
我加载外部css源文件并更改media =&#34; screen&#34;媒体=&#34;打印&#34;并且显示了我桌子的所有边框
试试这个:
<link rel="stylesheet" media="print" href="bootstrap.css" />
<link rel="stylesheet" media="screen" href="bootstrap.css" />
答案 17 :(得分:-1)
如果您在没有&#34;打印媒体样式的情况下下载Bootstrap&#34;选项,你不会有这个问题,也不必删除&#34; @media print&#34;在bootstrap.css文件中手动编写代码。