印刷時に画面のデザインやスタイルを変更する - CSS
印刷時にCSSを利用して、画面のデザインやスタイルを変更するコードを紹介します。
概要
印刷時にスタイルを変更するには、htmlファイルでスタイルシートのリンクをするlinkタグでmedia属性を指定するか、CSSファイル中でメディアクエリを利用する方法があります。
linkタグでmedia属性を指定する場合
コード
linkタグでmedia属性を指定する場合のコードです。
index.html
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
<title></title>
<meta charset="utf-8" />
<link rel="stylesheet" href="style.css" type="text/css" media="screen" />
<link rel="stylesheet" href="print.css" type="text/css" media="print" />
</head>
<body>
<div class="MenuFrame">
メニュー1<br />
メニュー2<br />
メニュー3<br />
メニュー4<br />
メニュー5<br />
メニュー6<br />
</div>
<div class="ContentsFrame">
<h2>見出しです。</h2>
<p>コンテンツです。</p>
<p>
あいうえおかきくけこさしすせそたちつてとなにぬねのはひふへほまみむめもやゆよらりるれろわをん
ABCDEFGHIJKLMNOPQRSTUVWXYZ-/*+1234567890
ABCDEFGHJIKLMNOPQRSTUVWXYZ
ΑΒΓΔΕΖΗΘΙΚΛΜΝΞΟΠΡΣΤΥΦΧΨΩ
αβγδεζηθικλμνξοπρστυφχψω
</p>
<h2>見出しです。</h2>
<p>コンテンツです。</p>
<p>
あいうえおかきくけこさしすせそたちつてとなにぬねのはひふへほまみむめもやゆよらりるれろわをん
ABCDEFGHIJKLMNOPQRSTUVWXYZ-/*+1234567890
ABCDEFGHJIKLMNOPQRSTUVWXYZ
ΑΒΓΔΕΖΗΘΙΚΛΜΝΞΟΠΡΣΤΥΦΧΨΩ
αβγδεζηθικλμνξοπρστυφχψω
</p>
<h2>見出しです。</h2>
<p>コンテンツです。</p>
<p>
あいうえおかきくけこさしすせそたちつてとなにぬねのはひふへほまみむめもやゆよらりるれろわをん
ABCDEFGHIJKLMNOPQRSTUVWXYZ-/*+1234567890
ABCDEFGHJIKLMNOPQRSTUVWXYZ
ΑΒΓΔΕΖΗΘΙΚΛΜΝΞΟΠΡΣΤΥΦΧΨΩ
αβγδεζηθικλμνξοπρστυφχψω
</p>
</div>
<div class="ClearLeft"></div>
</body>
</html>
screen.css
.MenuFrame{
width:200px;
float:left;
background-color:#fff8aa;
color:#ff6a00;
}
.ContentsFrame {
float:left;
width:600px;
background-color:#ededed;
color:#535353;
}
.ClearLeft{
clear:left;
}
print.css
.MenuFrame{
display:none;
}
.ContentsFrame {
width:100%;
}
.ClearLeft{
clear:left;
}
解説
Webブラウザでの通常の表示の場合は、style.cssのスタイルシートが適用されます。印刷時はmedia="print"が指定された、print.cssが適用されます。print.cssでは左側のMenuFrameを非表示にしており1段の表示となります。また、ContentsFrameもwidthを100%としており、用紙の幅に合わせて印刷をするレイアウトにします。また、文字色も指定なしにすることで黒文字に白背景とします。
実行結果
上記のHTMLファイルをWebブラウザで表示します。下図の画面が表示されます。
Webブラウザから印刷プレビューを表示します。印刷プレビューでは、左側のメニューが表示されず、カラーも白黒になることが確認できます。
実際にPDFで印刷した結果です。印刷プレビューと同様のレイアウトで印刷できています。
単一のスタイルシートで処理する場合
コード
単一のスタイルシートで実現する場合のコードです。
index2.html
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
<title></title>
<meta charset="utf-8" />
<link rel="stylesheet" href="style2.css" type="text/css" />
</head>
<body>
<div class="MenuFrame">
メニュー1<br />
メニュー2<br />
メニュー3<br />
メニュー4<br />
メニュー5<br />
メニュー6<br />
</div>
<div class="ContentsFrame">
<h2>見出しです。</h2>
<p>コンテンツです。</p>
<p>
あいうえおかきくけこさしすせそたちつてとなにぬねのはひふへほまみむめもやゆよらりるれろわをん
ABCDEFGHIJKLMNOPQRSTUVWXYZ-/*+1234567890
ABCDEFGHJIKLMNOPQRSTUVWXYZ
ΑΒΓΔΕΖΗΘΙΚΛΜΝΞΟΠΡΣΤΥΦΧΨΩ
αβγδεζηθικλμνξοπρστυφχψω
</p>
<h2>見出しです。</h2>
<p>コンテンツです。</p>
<p>
あいうえおかきくけこさしすせそたちつてとなにぬねのはひふへほまみむめもやゆよらりるれろわをん
ABCDEFGHIJKLMNOPQRSTUVWXYZ-/*+1234567890
ABCDEFGHJIKLMNOPQRSTUVWXYZ
ΑΒΓΔΕΖΗΘΙΚΛΜΝΞΟΠΡΣΤΥΦΧΨΩ
αβγδεζηθικλμνξοπρστυφχψω
</p>
<h2>見出しです。</h2>
<p>コンテンツです。</p>
<p>
あいうえおかきくけこさしすせそたちつてとなにぬねのはひふへほまみむめもやゆよらりるれろわをん
ABCDEFGHIJKLMNOPQRSTUVWXYZ-/*+1234567890
ABCDEFGHJIKLMNOPQRSTUVWXYZ
ΑΒΓΔΕΖΗΘΙΚΛΜΝΞΟΠΡΣΤΥΦΧΨΩ
αβγδεζηθικλμνξοπρστυφχψω
</p>
</div>
<div class="ClearLeft"></div>
</body>
</html>
style2.css
.MenuFrame{
width:200px;
float:left;
background-color:#fff8aa;
color:#ff6a00;
}
.ContentsFrame {
float:left;
width:600px;
background-color:#ededed;
color:#535353;
}
@media print {
.MenuFrame{
display:none;
}
.ContentsFrame {
width:100%;
background-color:#FFFFFF;
color:#000000;
}
}
.ClearLeft{
clear:left;
}
解説
Webブラウザでの通常の表示の場合は、スタイルシートの内容が適用されます。印刷時は@media print{}ブロック内のスタイルも適用されます。@media print{}ブロックでは左側のMenuFrameを非表示にしており1段の表示となります。また、ContentsFrameもwidthを100%としており、用紙の幅に合わせて印刷をするレイアウトにします。また、文字色も黒(#000000)を指定し、背景色も白(#FFFFFF)を設定しています。
実行結果
実行結果は先のコードと同様のものになります。
著者
iPentecのメインデザイナー
Webページ、Webクリエイティブのデザインを担当。PhotoshopやIllustratorの作業もする。