SHOEISHA iD

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

連載記事

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

翔泳社では、「独習」「徹底入門」「スラスラわかる」「絵で見てわかる」「一年生」などの人気シリーズをはじめ、言語や開発手法、最新技術を解説した書籍を多数手がけています。プロジェクトマネジメントやチームビルティングといった管理職向けの書籍も豊富です。

ITエンジニアとしてのスキルアップ・リスキリングに、ぜひお役立てください。

書籍に関する記事を見る

'); googletag.cmd.push(function() { googletag.pubads().addEventListener('slotRenderEnded', function(e) { var ad_id = e.slot.getSlotElementId(); if (ad_id == 'div-gpt-ad-1659428980688-0') { var ad = $('#'+ad_id).find('iframe'); if ($(ad).width() == 728) { var ww = $(window).width(); ww = ww*0.90; var style = document.createElement("style"); document.head.appendChild( style ); var sheet = style.sheet; sheet.insertRule( "#div-gpt-ad-1659428980688-0 iframe {-moz-transform: scale("+ww/728+","+ww/728+");-moz-transform-origin: 0 0;-webkit-transform: scale("+ww/728+","+ww/728+");-webkit-transform-origin: 0 0;-o-transform: scale("+ww/728+","+ww/728+");-o-transform-origin: 0 0;-ms-transform: scale("+ww/728+","+ww/728+");-ms-transform-origin: 0 0;}", 0 ); sheet.insertRule( "#div-gpt-ad-1659428980688-0 div{ height:"+(90*ww/728)+"px;width:"+728+"px;}", 0 ); } else { if ($(window).width() < 340) { var ww = $(window).width(); ww = ww*0.875; var style = document.createElement("style"); document.head.appendChild( style ); var sheet = style.sheet; sheet.insertRule( "#div-gpt-ad-1659428980688-0 iframe {-moz-transform: scale("+ww/320+","+ww/320+");-moz-transform-origin: 0 0;-webkit-transform: scale("+ww/320+","+ww/320+");-webkit-transform-origin: 0 0;-o-transform: scale("+ww/320+","+ww/320+");-o-transform-origin: 0 0;-ms-transform: scale("+ww/320+","+ww/320+");-ms-transform-origin: 0 0;}", 0 ); sheet.insertRule( "#div-gpt-ad-1659428980688-0 div{ height:"+(180*ww/320)+"px;width:"+320+"px;}", 0 ); } } } }); }); } else { document.write('
'); document.write('
'); }
これから身につけるWebサイト高速化テクニック

HTTPリクエスト数削減テクニック2: CSS Sprite編

これから身につけるWebサイト高速化テクニック(6)

 本連載ではWeb担当者やWebデザイナー、コーダーの方々に向けて、Webサイト高速化に関する手法や技術について解説していきます。今回は、CSS Spriteについて紹介します。

はじめに

 こんにちは、クラスメソッド株式会社の野中です。

 HTTPリクエスト削減テクニックの紹介に入り、前回の『リクエスト数削減テクニック1:インラインイメージ編』では、インラインイメージについて紹介しました。本記事では「CSS Sprite」の基本的な知識と使い方、使いどころについて解説します。すでに定番のテクニックとなっていますが、何となく使っていることが多いと思います。初学者の方にも理解していただけるよう詳しく解説します。

対象者

 対象者は主にコーダー、フロントエンドエンジニアです。

 デザインとコーディングを合わせて担当するWebデザイナーも対象です。

  • コーダー・フロントエンドエンジニア
  • Webデザイナー
  • Webディレクター
  • Web担当者

CSS Spriteとは

 Webサイトではアイコンやナビゲーションなどに多くの画像が使われ、サイトによっては20個30個とたくさんのアイコンが使われています。これらの画像を一つ一つリクエストしていると同時接続数の制限によりブロックされるため、遅延の原因です。CSS Spriteは複数の画像を1つにまとめて配信することで、リクエスト数を大きく削減できるテクニックです。

 CSS Spriteで使われる、いくつかの画像を1つにまとめたものをSprite画像と呼びます。代表的なSprite画像の例は、Youtubeで使われているこちらの画像でしょう。

Youtubeで使われているSprite画像(図01)
Youtubeで使われているSprite画像(図01)

 CSS SpriteはこのようなSprite画像を背景画像とし、CSSを使って一部分だけ見せるテクニックです。

1. CSS Spriteの仕組み

 初学者向けにCSS Spriteの仕組みについて、もう少し詳しく解説したいと思います。分かりやすいように、ナビゲーションイメージを用意しました。

完成形のナビゲーション例(図02)
完成形のナビゲーション例(図02)

 このナビゲーションは1つのボタンが横幅160pxに縦幅85pxです。

 このボタンはマウス操作によって反応させたいので通常・マウスオーバー・クリック・現在の場所を表す4つの違ったスタイルを用意します。6つのボタンに4つのスタイルがあり6×4=24個の画像が必要になります。CSS Spriteを使わない場合、24回のHTTPリクエストが行われるわけですが、少ない数字ではありませんね。このような画像にCSS Spriteのテクニックを使えば、1回のリクエストにまとめられるというわけです。

 この24個の画像を1つのSprite画像にまとめたものが、以下の画像になります。

Sprite画像(図03)
Sprite画像(図03)

 このSprite画像は、CSSプロパティのbackground-imageとbackground-positionを使って表示位置を制御します。

 下記の図のようにSprite画像の左上を始点に、表示したい要素の左上を終点として背景画像の移動距離を計算します。

CSS Spriteの仕組み(図04)
CSS Spriteの仕組み(図04)

 この始点からの移動距離がbackground-positionの座標です。

2. 高精細ディスプレイ(Retina Display)の場合

 昨今、スマートフォンの普及に伴い、PCの表示よりスマートフォンへの対応を優先することも多いと思います。

 高精細ディスプレイに対応させるには、基本的な仕組みは同じですが気をつけるポイントが2つあります。

  • 高精細ディスプレイに対応する高解像度画像を用意する
  • background-sizeプロパティを使い背景画像の表示サイズを指定する

 background-sizeとは、背景画像を任意の表示サイズにするためのプロパティです。

 このプロパティを指定することで、Sprite画像の座標指定を解像度を意識する必要がなくなります。

3. CSS Spriteの作業と流れ

 実際に1つの要素に対してCSS Spriteを使う場合、主な行程は以下のとおりです。

  1. Sprite画像の作成(高精細ディスプレイの場合は解像度ごとに作成します)
    1. Sprite画像化する画像を選定する
    2. Sprite画像用のデザインファイルを作る
    3. 個々の画像の配置場所を考える
    4. それぞれの座標をメモする
    5. Sprite画像を書き出す
  2. CSSの指定
    1. background-imageプロパティにSprite画像を指定する
    2. background-positionプロパティで座標指定を行う
  3. Retinaディスプレイの場合(オプション)
    1. Media Queriesを使い、デバイスサイズに合わせた背景画像を指定する
    2. background-positionプロパティを使い、背景画像のサイズを指定する

 実際にやってみると分かりますが、これを手作業で行うのはとても手間がかかります。後ほど簡単に紹介しますが、CSS Spriteを自動化できるツールを活用した方が良いでしょう。

会員登録無料すると、続きをお読みいただけます

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

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます
  • ・翔泳社の本が買える!
    500円分のポイントをプレゼント

メールバックナンバー

次のページ
CSS Spriteの記述方法

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

これから身につけるWebサイト高速化テクニック連載記事一覧

もっと読む

この記事の著者

野中 龍一(クラスメソッド株式会社)(ノナカ リュウイチ(クラスメソッドカブシキガイシャ))

クラスメソッドで企画、制作、運用までやるWebマスター。Webデザイン、Webサイト高速化、広義のHTML5、JavaScript、jQuery、CSS3、PHP、AWSを広く浅くやってます。クラスメソッド開発ブログを作ってる中の人。http://dev.classmethod.jp/author/nonaka-ryuichi/

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

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

この記事をシェア

CodeZine(コードジン)
https://codezine.jp/article/detail/7425 2013/10/22 14:00
" ); }

おすすめ

アクセスランキング

  1. 1
    「Dify」、イベントやスケジュールを契機にAIワークフローを開始する新基盤を追加
  2. 2
    アリババ、Qwenを統合したAIブラウザ「Quark」デスクトップ版発表 NEW
  3. 3
    Linux Foundation、「Linuxカーネル開発 初心者向けガイド」日本語版を無料公開
  4. 4
    日本IBM、AIエージェント主導の開発ツール「Project Bob」を発表——要件定義から実装までを自律実行
  5. 5
    青山学院大学、設置を構想する「統計データサイエンス学環(仮称)」の特設ページを公開 NEW
  1. 6
    Unity、Webベースのノーコード3Dエディタ「Unity Studio」ベータ版を発表
  2. 7
    「属人化テスト」からの脱却。AIを味方にして未経験者を即戦力にしたtoridoriのQA組織の作り方
  3. 8
    GitHub CopilotがBYOK機能のパブリックプレビューを開始、各プロバイダーのAPIキーを直接接続
  4. 9
    GoogleがAI駆動開発を支援するIDE「Antigravity」を無料公開
  5. 10
    エクセルソフト、12月4日にオンラインでAIデータ解析入門ウェビナーを開催

アクセスランキング

  1. 1
    「Dify」、イベントやスケジュールを契機にAIワークフローを開始する新基盤を追加
  2. 2
    アリババ、Qwenを統合したAIブラウザ「Quark」デスクトップ版発表 NEW
  3. 3
    Linux Foundation、「Linuxカーネル開発 初心者向けガイド」日本語版を無料公開
  4. 4
    日本IBM、AIエージェント主導の開発ツール「Project Bob」を発表——要件定義から実装までを自律実行
  5. 5
    青山学院大学、設置を構想する「統計データサイエンス学環(仮称)」の特設ページを公開 NEW
  6. 6
    Unity、Webベースのノーコード3Dエディタ「Unity Studio」ベータ版を発表
  7. 7
    「属人化テスト」からの脱却。AIを味方にして未経験者を即戦力にしたtoridoriのQA組織の作り方
  8. 8
    GitHub CopilotがBYOK機能のパブリックプレビューを開始、各プロバイダーのAPIキーを直接接続
  9. 9
    GoogleがAI駆動開発を支援するIDE「Antigravity」を無料公開
  10. 10
    エクセルソフト、12月4日にオンラインでAIデータ解析入門ウェビナーを開催
  1. 1
    Linux Foundation、「Linuxカーネル開発 初心者向けガイド」日本語版を無料公開
  2. 2
    VS CodeでPython開発環境を構築しよう
  3. 3
    VSCodeでGitHub Copilotのタスク管理が可能に
  4. 4
    MCP Python SDKで天気予報サーバーを開発──実装から動作確認まで徹底解説
  5. 5
    マネーフォワード流Cursorでの開発自動化方法。「コンテキストエンジニアリング」で一歩先の生産性へ
  6. 6
    GoogleがAI駆動開発を支援するIDE「Antigravity」を無料公開
  7. 7
    Claude Codeでレビュー負荷軽減──KINTOテクノロジーズが実践する「説明補助ツール」としての生成AI活用術
  8. 8
    【トップページを実装しよう!】PythonとSQLで実装する「ホームページ」の仕組み
  9. 9
    Google、Gemini API向けのRAGシステム「File Search Tool」を発表
  10. 10
    Googleがコード理解を支援する「Code Wiki」を公開、リポジトリ更新に合わせたドキュメントの自動生成など

イベント

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

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

メールバックナンバー

アクセスランキング

  1. 1
    「Dify」、イベントやスケジュールを契機にAIワークフローを開始する新基盤を追加
  2. 2
    アリババ、Qwenを統合したAIブラウザ「Quark」デスクトップ版発表 NEW
  3. 3
    Linux Foundation、「Linuxカーネル開発 初心者向けガイド」日本語版を無料公開
  4. 4
    日本IBM、AIエージェント主導の開発ツール「Project Bob」を発表——要件定義から実装までを自律実行
  5. 5
    青山学院大学、設置を構想する「統計データサイエンス学環(仮称)」の特設ページを公開 NEW
  1. 6
    Unity、Webベースのノーコード3Dエディタ「Unity Studio」ベータ版を発表
  2. 7
    「属人化テスト」からの脱却。AIを味方にして未経験者を即戦力にしたtoridoriのQA組織の作り方
  3. 8
    GitHub CopilotがBYOK機能のパブリックプレビューを開始、各プロバイダーのAPIキーを直接接続
  4. 9
    GoogleがAI駆動開発を支援するIDE「Antigravity」を無料公開
  5. 10
    エクセルソフト、12月4日にオンラインでAIデータ解析入門ウェビナーを開催

アクセスランキング

  1. 1
    「Dify」、イベントやスケジュールを契機にAIワークフローを開始する新基盤を追加
  2. 2
    アリババ、Qwenを統合したAIブラウザ「Quark」デスクトップ版発表 NEW
  3. 3
    Linux Foundation、「Linuxカーネル開発 初心者向けガイド」日本語版を無料公開
  4. 4
    日本IBM、AIエージェント主導の開発ツール「Project Bob」を発表——要件定義から実装までを自律実行
  5. 5
    青山学院大学、設置を構想する「統計データサイエンス学環(仮称)」の特設ページを公開 NEW
  6. 6
    Unity、Webベースのノーコード3Dエディタ「Unity Studio」ベータ版を発表
  7. 7
    「属人化テスト」からの脱却。AIを味方にして未経験者を即戦力にしたtoridoriのQA組織の作り方
  8. 8
    GitHub CopilotがBYOK機能のパブリックプレビューを開始、各プロバイダーのAPIキーを直接接続
  9. 9
    GoogleがAI駆動開発を支援するIDE「Antigravity」を無料公開
  10. 10
    エクセルソフト、12月4日にオンラインでAIデータ解析入門ウェビナーを開催
  1. 1
    Linux Foundation、「Linuxカーネル開発 初心者向けガイド」日本語版を無料公開
  2. 2
    VS CodeでPython開発環境を構築しよう
  3. 3
    VSCodeでGitHub Copilotのタスク管理が可能に
  4. 4
    MCP Python SDKで天気予報サーバーを開発──実装から動作確認まで徹底解説
  5. 5
    マネーフォワード流Cursorでの開発自動化方法。「コンテキストエンジニアリング」で一歩先の生産性へ
  6. 6
    GoogleがAI駆動開発を支援するIDE「Antigravity」を無料公開
  7. 7
    Claude Codeでレビュー負荷軽減──KINTOテクノロジーズが実践する「説明補助ツール」としての生成AI活用術
  8. 8
    【トップページを実装しよう!】PythonとSQLで実装する「ホームページ」の仕組み
  9. 9
    Google、Gemini API向けのRAGシステム「File Search Tool」を発表
  10. 10
    Googleがコード理解を支援する「Code Wiki」を公開、リポジトリ更新に合わせたドキュメントの自動生成など