ページを印刷しようとしています。そのページで私はテーブルに背景色を与えました。印刷プレビューをクロムで表示すると、背景色のプロパティが表示されません。
だから私はこのプロパティを試してみました:
-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>[email protected]</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>
Chrome CSSプロパティ-webkit-print-color-adjust: exact;
は適切に機能します。
ただし、印刷用の正しいCSSを使用していることを確認するのは難しい場合があります。あなたが抱えている困難を避けるためにいくつかのことができます。まず、すべての印刷用CSSを画面用CSSから切り離します。これは@media print
と@media screen
を通して行われます。
印刷時に他のすべてのCSSが含まれているため、追加の@media print
CSSを設定するだけでは不十分なことがよくあります。このような場合は、印刷規則が自動的に非印刷CSS規則に勝たないので、CSSの特殊性に注意する必要があります。
あなたの場合は、-webkit-print-color-adjust: exact
が機能しています。しかし、あなたのbackground-color
と色の定義は他のCSSよりも高い特異性で打ち負かされています。
Iはほとんどどのような状況でも!important
の使用を推奨しませんが、以下の定義は正しく機能し、問題を明らかにします。
@media print {
tr.vendorListHeading {
background-color: #1a4567 !important;
-webkit-print-color-adjust: exact;
}
}
@media print {
.vendorListHeading th {
color: white !important;
}
}
そのCSSプロパティはあなたが必要とするのはそれだけで私のために動作します... Chromeでプレビューするときあなたはそれを見るためのオプションを持っていますBWと色(色:オプション - 色または白黒)あなたがそのオプションを持っていない場合は、私はこのChrome拡張機能をつかみ、あなたの生活を楽にすることをお勧めします:
あなたがいじるに追加したサイトはあなたのメディアプリントCSSでこれを必要とします(あなたはそれを単に追加する必要があります...
メディア印刷CSSを本体に含める:
@media print {
body {-webkit-print-color-adjust: exact;}
}
UPDATE[OK]をあなたの問題はbootstrap.cssです...それはあなたと同じようにメディアプリントCSSを持っています....あなたはそれを削除し、それはあなたに色を与えるはずです....あなたは自分自身でやるか、ブートストラップprint cssに固執する必要があります。
これをクリックすると色が見えます.... http://jsfiddle.net/rajkumart08/TbrtD/1/embedded/result/
これを表示するには、background-colorタグに!important
属性を追加するだけで済みます。Webkitパーツは不要です。
background-color: #f5f5f5 !important;
ブートストラップまたは他のサードパーティのCSSを使用している場合は、必ずそのメディア画面のみを指定して、自分のCSSファイルで印刷メディアの種類を制御できるようにします。
<link rel="stylesheet" media="screen" href="">
あなたのCSSはこのようなものでなければなりません:
@media print {
body {
-webkit-print-color-adjust: exact;
}
}
.vendorListHeading th {
background-color: #1a4567 !important;
color: white !important;
}
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
}
@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;
}
注意すべき点がいくつかあります。
より詳細なデモンストレーションのために私の フィドル を見てください。
これはCSSの問題ですか。この問題に関してGoogleに投稿された記事がいくつかあります。 http://productforums.google.com/forum/#!category-topic/chrome/discuss-chrome/eMlLBcKqd2s
印刷プロセスに関連している可能性があります。 Webキットでもあるsafariでは、背景ダイアログと背景色を印刷するチェックボックスがプリンタダイアログにあります。
私は purgatory101の答え を使用しましたが、特にCSSスタイルシートをライブラリで使用することはできないということで、すべての色(アイコン、背景、テキスト色など)を維持するのに問題DOM要素の色を動的に変更します。そのため、印刷前に要素のスタイル(background-colour
とcolour
)を変更し、印刷が完了したらスタイルをクリアするスクリプトがあります。 @media print
スタイルシートにたくさんのCSSを書かないようにすると便利です。ページ構造に関係なく動作するからです。
FontAwesomeアイコンの色を維持するために特別に作られたスクリプトの一部(または色付きのコンテンツを挿入するために:before
セレクタを使用する任意の要素)があります。
互換性: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 からのコピーです。
box-shadow
プロパティを使用することもできます。
ブートストラップのcssファイルには、@ media print {*、:after、:before ....}の下に、!importantというラベルの付いた色と背景のスタイルを持つスタイルがあります。これら2つのcssを殺すとうまくいきます。
ブートストラップは実行時にバックグラウンドカラーを印刷しないようにしないようにしないように決定します。良い仕事のブートストラップ...
ブートストラップを使用しているのであれば、これに対する最善の解決策は、1つの操作だけで、この中のすべてのコードを削除@ media print {}します。印刷プレビューを撮りながら、より多くの設定から背景グラフィックを有効にします。
「メディアスタイルの印刷」オプションなしでBootstrapをダウンロードする場合、この問題は発生せず、bootstrap.cssファイルの「@media print」コードを手動で削除する必要はありません。
ブートストラップを使用している場合は、カスタムCSSファイルでこのコードを使用してください。ブートストラップは、印刷プレビューですべての色を削除します。
@media print{
.box-text {
font-size: 27px !important;
color: blue !important;
-webkit-print-color-adjust: exact !important;
}
}