#header
私の Web サイトのヘッダーは、 div内の 2 つの画像 (1 つは左に、もう 1 つは右にフローティング) で構成されています。
すべてのブラウザーで美しくレンダリングされますが、ページを印刷しようとすると、画像は表示されますが、#header
div の背景色は表示されません。
これを修正するにはどうすればよいですか?
そのように使用できますmedia-query
:
#header { width: 100%; height: 100px; }
@media screen
{
#header > #left { background: url("display1.png"); }
#header > #right { background: url("display2.png"); }
}
@media print
{
#header > #left { background: url("print.png"); }
#header > #right { display: none; }
}
次に、HTML に挿入します。
<div id="header">
<div id="left"></div>
<div id="right"></div>
</div>
ブラウザーは経済的になりました。デフォルトでは、背景色を印刷しなくなりました。
FireFox などの一部のブラウザではそれを管理できますが、それはユーザーごとの設定です。
使用できますmedia="print"
:
<style type="text/css">
#img{background-image:url('img1.jpg');}
</style>
<style type="text/css" media="print">
#img{background-image:url('img2.jpg');}
</style>
しかし、問題がブラウザが背景色を印刷しないことであり、Firefox を使用している場合は、次のことができます。
[ファイル] > [ページ設定...] > [書式とオプション] > [オプション] > [印刷の背景 (色と画像)]
また
Firefox ボタン > 印刷... > ページ設定... > 書式とオプション > オプション > 背景を印刷 (色と画像)
実際、シンシア、あなたがこのようなことをするつもりなら、最も理にかなっているのはprint-header.gif
、両方の画像のソースとして画像を使用することだと思います.
このメソッドは CSSスプライトと呼ばれます。CSS ポジショニングを使用して、画面に必要な画像の部分のみを表示.header-left
し.header-right
ます。印刷の場合、展開.header-left
して画像全体を表示し、header-right を非表示にすることができます。これは<img>
、ページ上で 1 つ少なくなり、HTTP リクエストを削減していることを意味します (画像に対して 1 つ対 3 つ)。
通常、このメソッドは背景画像でのみ使用されます (ステップ 1 に戻ります!) が、clip
プロパティを使用して前景画像で使用できます。CSS は次のようになります。
screen.css:
div#header {
position: relative;
}
img.header-left {
position: absolute;
clip:rect(top, right, bottom, left);
}
img.header-right {
position: absolute;
clip:rect(top, right, bottom, left);
top: offset;
left: offset;
}
印刷.css:
img.header-left {
position: static;
clip: auto;
}
img.header-right {
display: none;
}
HTMLは次のようになります
<div id="header">
<img src="/images/print-header.gif" class="header-left" />
<img src="/images/print-header.gif" class="header-right" />
</div>
解決策を見つけました!
2 つの元の画像を組み合わせた 2 番目のヘッダー画像 (見栄えを良くするために少しパディングを追加) を作成し、印刷専用に使用しました。
印刷用に画像を表示する方法を次に示しますが、それ以外の場合は表示されません。
というクラスを作成.print-header
し、メインの style.css で次のように設定しました。
.print-header { display:none }
私のprint.cssでは、次のように設定しました:
.print-header { display:block !important }
.header-left { display:none } /* this hides the original left header image when printing */
.header-right { display:none } /* this hides the original right header image when printing */
そして、HTMLを次のように変更しました:
<div id="header">
<img src="/images/logo.gif" class="header-left" />
<img src="/images/cta.gif" class="header-right" />
<img src="/images/print-header.gif" class="print-header" />
</div>
そして出来上がり!ブラウザーでは元の 2 つの画像のヘッダーが表示され、印刷時には単一の画像のヘッダーが表示されます。