206

私はこの会社で新しいです、そして、我々は何マイルものcssを使う製品を持っています。アプリ用に印刷可能なスタイルシートを作成しようとしていますが、で問題が発生しbackground-colorてい@media printます。

    @media print {
      #header{display:none;}
      #adwrapper{display:none;}
      td {
        border-bottom: solid; 
        border-right: solid; 
        background-color: #c0c0c0;
      }
    }

他のすべては機能します。境界線などを変更できますがbackground-color、印刷には反映されません。これで、詳細がないと私の質問に答えられない可能性があることを理解しました。以前に誰かがこの問題、または同様の問題を抱えていたかどうか、私はただ興味がありました。

4

22 に答える 22

310

Chromeでバックグラウンド印刷を有効にするには:

body {
  -webkit-print-color-adjust: exact !important;
}
于 2013-02-09T03:34:37.207 に答える
267

ユーザーが印刷設定で[背景色と画像の印刷]をオフにしている場合、CSSはそれを上書きしないため、常にそれを考慮してください。これはデフォルト設定です。

背景色と画像を印刷するように設定すると、そこにあるものが機能します。

それはさまざまな場所で見つかります。IE9betaでは、[印刷]->[ページオプション]の[用紙オプション]にあります。

FireFoxでは、[ページ設定]->[フォーマットとオプション]タブの[オプション]にあります。

于 2010-10-08T20:17:56.927 に答える
97

とった:

CSS:

box-shadow: inset 0 0 0 1000px gold;

テーブルセルを含むすべてのボックスで機能します!!!

  • (PDFプリンターの出力ファイルを信じる場合..?)
  • UbuntuのChrome+Firefoxでのみテストされています...
于 2013-03-03T11:33:03.143 に答える
36

これを試してみてください、それはグーグルクロームで私のために働きました:

<style media="print" type="text/css">
    .page {
        background-color: white !important;
    }
</style>
于 2013-03-06T14:27:01.590 に答える
27

-webkit-print-color-adjust: exact; 単独でis Not enough あなたは!important属性で使用する必要があります

これは、それぞれに追加し、各タグに属性を付けた、 Chromeでプレビューを印刷しています!importantbackground-colorcolor

Chromeでの印刷プレビュー

これは、追加するにChromeでプレビューを印刷しています!important

ここに画像の説明を入力してください

さて、divのスタイルを知る方法を知るためinject !importantに、この答えをチェックしてください。「!important」ルールでスタイルを注入することはできません。

于 2016-10-17T13:35:24.487 に答える
11

動作する2つのソリューション(少なくとも最新のChromeでは-それ以上のテストは行われていません):

  1. !通常のcss宣言の重要な権利は機能します(@media印刷でも)
  2. svgを使用する
于 2013-06-07T04:56:44.167 に答える
7

「プリンターフレンドリー」なページを作成したい場合は、@ media print CSSに「!important」を追加することをお勧めします。これにより、ほとんどのブラウザが背景画像や色などを印刷するようになります。

例:

background:#3F6CAF url('example.png') no-repeat top left !important;
background-color: #3F6CAF !important;
于 2015-04-19T03:29:15.480 に答える
6

他の投稿で言及されている境界線の印刷オプションをアクティブにせずに実行できる別のトリックがあります。境界線印刷されているので、このハックで無地の背景色をシミュレートできます。

.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">&nbsp;</td>
    <td class="your-background">&nbsp;</td>
    <td class="your-background">&nbsp;</td>
  </tr>
</table>

これには、背景色を表示するための追加のコードと特別な注意が必要ですが、それでも私が知っている唯一の解決策です。

display: block;このハックは、または以外の要素では機能しないことに注意してください。display: table-cell;たとえば<table class="your-background">、とは機能し<tr class="your-background">ません。

これを使用して、すべてのブラウザーで背景色を取得します(それでも、IE9 +が必要です)。

于 2015-01-07T14:57:02.613 に答える
6

クロムについては、私はこのようなものを使用しました、そしてそれは私のためにうまくいきました。

ボディタグ内で、

<body style="-webkit-print-color-adjust: exact;"> </body>

または、特定の要素について、テーブルがあり、td、つまりセルを埋めたい場合を考えてみましょう。

<table><tr><td style="-webkit-print-color-adjust: exact;"></tr></table>
于 2016-08-21T07:18:41.247 に答える
6

使用法は一般的に眉をひそめていますが、これはテーブルの行がで印刷されないよう!importantにする問題のあるコードです。bootstrap.cssbackground-color

.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;
    }
}

これは、ルールがブートストラップのデフォルトよりも具体的であるために機能します。

于 2018-04-28T16:11:31.163 に答える
3

この問題が見つかったのは、背景色も「印刷」されていないGoogleAppsScriptのhtml出力からPDFを生成しようとしたときに同様の問題が発生したためです。

-webkit-print-color-adjust:exact;!importantソリューションはもちろん機能しませんでしたが、機能しましbox-shadow: inset 0 0 0 1000px gold;た...素晴らしいハック、ありがとうございました:)

于 2016-04-13T20:18:16.757 に答える
3

このスニペットを印刷メディアクエリに追加したところ、すべてのスタイルが意図したとおりに適用されました。

       * {
        color-adjust: exact!important;  
        -webkit-print-color-adjust: exact!important; 
         print-color-adjust: exact!important;
      }
于 2021-06-16T08:36:28.720 に答える
2

最近の印刷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 */
于 2015-09-30T04:23:10.097 に答える
2

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>
于 2016-10-15T18:03:20.723 に答える
1

私が見つけた最良の「解決策」は、目立つ「印刷」ボタンまたはリンクを提供することです。このボタンは、背景を有効にするためにプリンター設定を調整する必要があることを大胆に、簡潔に、簡潔に説明する小さなダイアログボックスをポップアップします。および画像印刷。これは私にとって非常に成功しています。

于 2012-07-31T18:15:56.160 に答える
1

場合によっては(コンテンツがないが背景があるブロック)、ブロックごとに個別に境界線を使用してオーバーライドできます。

例えば:

.colored {
  background: #000;
  border: 1px solid #ccc;
  width: 8px;
  height: 8px;
}

@media print {
  .colored div {
    border: 4px solid #000;
    width: 0;
    height: 0;
  }
}
于 2013-03-27T12:37:22.567 に答える
1
* {
  -webkit-print-color-adjust: exact;
}

また、[有効にする]>[CSSメディアをエミュレートする]>[Inspact]>[その他のツール]>[レンダリング]を選択します。非常に詳細な手順はここにあります。

于 2021-11-02T05:39:46.353 に答える
0

タグを使用しcanvasて背景を「描画」できます。これはIE9、Gecko、およびWebkitで機能します。

于 2014-10-14T09:52:35.370 に答える
0

背景色の代わりに画像(または背景色の画像)を使用してもかまわない場合は、FireFox、Chrome、さらにはIEでも、オーバーライドなしで以下の解決策が機能します。ページのどこかに画像を設定し、ユーザーが印刷するまで非表示にします。

背景画像のあるページのhtml

<img src="someImage.png" class="background-print-img">

Css

.background-print-img{
    display: none;
}

@media print{
    .background-print-img{
        background:red;
        display: block;
        width:100%;
        height:100%;
        position:absolute;
        left:0;
        top:0;
        z-index:-10;
    }

}

于 2015-02-10T16:26:48.523 に答える
0

印刷スタイルシートの内側を設定しないでください。background-color通常のcssファイルに属性を設定するだけで問題なく動作します:)

この例を確認してください:ヘッダーとフッターを備えた究極の印刷HTMLテンプレート

デモ:ヘッダーとフッターのデモを含む究極の印刷HTMLテンプレート

于 2019-07-30T10:44:21.480 に答える
0
tr.group-title {
  padding-top: .5rem;
  border-top: 2rem solid lightgray;
}

tr.group-title > td h5 {
  margin-top: -1.9rem;
}

          <tbody>
            <tr class="group-title">
              <td colspan="6">
                <h5 align="center">{{ group.title }}</h5>
              </td>
            </tr>

ChromeとEdgeで動作します

于 2020-06-30T13:41:29.847 に答える
0

    body{
        background-color: #E5FFE5;
    }
    .bg_print{
       border-bottom: 30px solid #FFCC33;
    }
    .orange_bg_print_content{
        margin-top: -25px;
        padding: 0 10px;
    }
    <div class="bg_print">
    </div>
    <div class="orange_bg_print_content">
        My Content With Background!
    </div>

Chrome、Firefox、Edgeでテストされ、動作します...

于 2021-02-23T06:22:31.180 に答える