SHOEISHA iD

※旧SEメンバーシップ会員の方は、同じ登録情報(メールアドレス&パスワード)でログインいただけます

DeveloperZine(デベロッパージン)- エンジニアの意思決定を支える技術情報メディア ProductZine

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

そこが知りたい! Web標準サイトの活かし方

「印刷用ページ」の作り方

そこが知りたい!Web標準サイトの活かし方(5)


さまざまなデバイス向けのCSS

 Webページは、PCディスプレイで閲覧されるだけではありません。印刷されることもありますし、携帯電話からアクセスされることもあります。最近では、携帯ゲーム機やテレビゲーム機での利用も一般的になってきました。

 以降の連載では、プリンタ、携帯電話、携帯ゲームなど、さまざまなデバイス向けページ制作を扱っていく予定です。今回は、Web以外のメディアとして最も基本的な印刷用ページについて詳しく扱いますが、まずは全デバイスに共通する基礎知識として、CSSで各メディアをコントロールする仕組みについて軽く説明しておきましょう。

デバイスの振り分け

 かつては、PCディスプレイで閲覧するWebページとは別に印刷用のWebページを作成するなど、各デバイス用のページをわざわざ用意するケースも多かったのですが、Web標準が当たり前となった現在では、1つのWebページ(XHTML)に対して各デバイス用の複数のCSSを適用するのが一般的になっています。

 デバイスごとのCSSを用意するだけで、それぞれのデバイスにあったスタイルを自動的に振り分けることができるため、Webページ自体(XHTML)を作り変える必要がありません。これにより、制作や管理上のコストを削減できるというメリットがあります。

 ただし、デバイスによっては仕様が大きく異なるため、現状では、1つのWebページですべてのデバイスに完全に対応することは非常に困難です。CSSだけで対応できるものとそうでないものをまとめると次のようになります。

CSSだけで対応できるデバイスと別途ページを制作した方がよいデバイス
CSSのみでOK パソコンのディスプレイ, プリンタ, NTTドコモ以外の携帯電話
別途ページ制作が必要 NTTドコモの携帯電話, Nintendo DS, PSP, Nintendo Wii, PlayStation 3

 これらのデバイスについては以降の連載記事の中で詳しく扱っていきますが、CSSだけで対応できないものに関しては、JavaScriptやPHPなどでデバイスごとの振り分けをするなどの工夫が必要です。

CSSのメディアタイプ

 さて、CSSだけで対応できるデバイスに関しては、基本的にCSSでコントロールするわけですが、仕組みとしてはCSSで定義されている「メディアタイプ」というものを指定します。メディアタイプを指定することで、各デバイスに応じたスタイルを自動的に適用できるようになります。例えば「screen」と指定することで一般的なPCディスプレイを対象に、「print」と指定することで印刷を対象にスタイルを適用できます。指定できるメディアタイプは次の表のとおりです。

 なお、CSS2.1勧告候補では「aural」は非推奨とされ、代わりに「speech」が将来のメディアタイプとして予約されています。

CSSのメディアタイプ
メディアタイプ 説明
all 全デバイス
aural 音声出力(音声ブラウザなど)
braille 点字ピンディスプレイなど
embossed 点字プリンタなど
handheld 携帯端末(PDA、携帯電話など)
print 印刷出力(印刷プレビューなどを含む)
projection プロジェクター、映写機など
screen 一般的なPCディスプレイ
tty 固定ピッチフォントで表示されるメディア
tv テレビ、テレビゲーム機など

メディアタイプの指定方法

 メディアタイプを指定するには、link要素やstyle要素のmedia属性で指定する方法と、@mediaで指定する方法、@importで指定する方法の3つの方法があります。それぞれの特徴を踏まえ、目的に合った方法を採用するとよいでしょう。いずれの方法も、カンマ区切りで複数のメディアタイプを指定することができ、メディアタイプを指定しない場合には、すべてのメディアに適用されます。

link要素やstyle要素のmedia属性でメディアタイプを指定

 link要素やstyle要素のmedia属性にメディアタイプを指定して、外部スタイルシートやスタイル全体を特定のメディアに適用できます。これは最も一般的でシンプルな方法ですが、メディアタイプを変更する場合、すべての(X)HTMLファイルを修正する必要が出てきます。

[リスト1]link要素やstyle要素のmedia属性でメディアタイプを指定
<!-- PCディスプレイに適用 -->
<link rel="stylesheet" type="text/css" href="screen.css" media="screen" />
<!-- 印刷に適用 -->
<style type="text/css" media="print">
em {font-weight: bold; }
</style>
@mediaでメディアタイプを指定

 メディアごとのスタイルがほとんど変わらず、少しの調整で済む場合などは、メディアタイプを@mediaで指定するのがよいでしょう。例えば、すべてのスタイルを1つの外部スタイルシートで管理したい場合などに向いています。

[リスト2]@mediaでメディアタイプを指定
/* 印刷に適用 */
@media print {
  em { font-weight: bold ; }
}
@importでメディアタイプを指定

 @importで外部スタイルを読み込む際に、メディアタイプを指定できます。@importは、(X)HTMLファイルから読み込まれる外部スタイルシート内に記述することもできるため、振り分けるファイルやメディアタイプなどを後から変更したい場合などに向いています。

 @importは、CSSファイルの最初(@charsetがある場合は、その直後)に記述する必要がある点に注意しましょう。@mediaや通常のスタイル指定が、@importより先に出現してはいけません。

[リスト3]@importでメディアタイプを指定
/* PCディスプレイに適用 */
@import url("screen.css") screen;
/* 印刷に適用 */
@import url("print.css") print;

次のページ
印刷用ページの作り方

この記事は参考になりましたか?

そこが知りたい! Web標準サイトの活かし方連載記事一覧

もっと読む

この記事の著者

山田 祥寛(ヤマダ ヨシヒロ)

静岡県榛原町生まれ。一橋大学経済学部卒業後、NECにてシステム企画業務に携わるが、2003年4月に念願かなってフリーライターに転身。Microsoft MVP for Visual Studio and Development Technologies。執筆コミュニティ「WINGSプロジェクト」代表。主な著書に「独習シリーズ(Java・C#・Python・PHP・Ruby・JSP&サーブレットなど)」「速習シリーズ(ASP.NET Core・Vue.js・React・TypeScript・ECMAScript、Laravelなど)」「改訂3版JavaScript本格入門」「これからはじめるLaravel実践入門」「はじめてのAndroidアプリ開発 Kotlin編 」他、著書多数

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

WINGSプロジェクト 宮本麻矢(ミヤモト マヤ)

WINGSプロジェクトについて>有限会社 WINGSプロジェクトが運営する、テクニカル執筆コミュニティ(代表 山田祥寛)。主にWeb開発分野の書籍/記事執筆、翻訳、講演等を幅広く手がける。 2026年時点での登録メンバは約50名で、現在も執筆メンバを募集中。興味のある方は、どしどし応募頂きたい。著書記事多数。 RSS X: @WingsPro_info(公式)、@WingsPro_info/wings(メンバーリスト) Facebook

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

この記事は参考になりましたか?

この記事をシェア

CodeZine(コードジン)
https://codezine.jp/article/detail/4649 2010/04/09 10:48

イベント

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー