gihyo.jp » WEB+DESIGN STAGE » 連載 » 独学で極める “Webデザイン”の技と心 » 第10回 CSS Spritesでサイトを高速化

独学で極める “Webデザイン”の技と心

第10回 CSS Spritesでサイトを高速化

この記事を読むのに必要な時間:およそ 1 分

今日は,CSSを使ってサイトを高速化するテクニック「CSS Sprites(CSSスプライト)」についてのお話をさせていただきます。

サイトの高速化というと,プログラムの最適化を行ったり,サーバのチューニングを行ったりというイメージがあるかと思います。実はCSSを上手に使うことによっても,サイトの高速化を行うことができます。しかも,かなりの効果が期待できるのです。

CSS Spritesとは?

通常,ウェブページを制作する場合,デザインファイル(psdやpngなどの画像)をスライスし,HTMLのimg要素として埋め込んだり,CSSの背景画像として指定していることと思います。

それらの画像を一つにまとめ,1度の読み込みでのリクエスト数を減らすテクニックのことを「CSS Sprites」と呼びます。

このテクニックは,以前からマウスオーバーメニューを実現する際にも使われていたものでもありますが,YouTubeのプレーヤーやGoogleなど,大手サイトでもこのテクニックが使われるようになり,CSS Spritesの名前と共に注目を集めるようになりました(※1)。

※1)
英文記事ですが,CSS Spritesの記事(CSS Sprites: What They Are, Why They’re Cool, and How To Use Them)が参考になります。

CSSを工夫することで,サイトを高速化できる具体的な事例

まずは先日私の会社からリリースしましたTwister Alternativeの事例から,CSS Spritesの仕組みと使い方を解説します。

下の画像は,Twister Alternativeで利用しているCSS Sprites用の画像の一部です(解説用に画像の一部だけを表示しています)。

Twister AlternativeのCSS Sprites用画像

Twister AlternativeのCSS Sprites用画像

ご覧のとおり,ロゴやメニュー用アイコン・マウスオーバー時の画像やフォームのボタンまであらゆる画像をひとつにしています。

通常の画像指定を行った場合のソースコードサンプル

例えば,一つの(原寸)画像でロゴを表現する場合,以下2つの方法がよく使われてきました。

(X)HTMLのimg要素で指定
<div id="logo">
<a href="/"><img src="/images/logo.png" alt="Twister Alternative" /></a>
</div>
CSSのbackgroundプロパティで指定

(X)HTML(テキストを画像に置換するため,意味のないspan要素を与えている,※2

<div id="logo"><a href="/"><span>Twister Alternative</span></a></div>

CSS

div#logo a {
    width: 222px; /*画像の横幅*/
    height: 66px; /*画像の高さ*/
    background-image: url(/images/list.png);
    background-repeat: no-repeat;
}

div#logo a span {
    display: none; /*テキストを消してa要素の背景だけを見えるようにする*/
}
※2
画像置換の手法にはspanを入れない方法も含め他にもありますが,ここでは割愛させていただきます。

CSS Spritesの場合のソースコードサンプル

(X)HTML

<div id="logo"><a href="/"><span>Twister Alternative</span></a></div>

CSS

div#logo a {
    width: 222px; /*画像の横幅*/
    height: 66px; /*画像の高さ*/
    background-image: url(/images/sprite.png);
    background-repeat: no-repeat;
    background-position: 0 -34px; /* CSS Sprites用の画像のうち,どの場所の画像を出すのか座標 x軸,y軸の順に指定*/
}

仕組みはとてもシンプルです。一枚の画像のなかから,表示させたい部分の座標をbackground-positionプロパティで指定するだけです。

このサンプルのロゴ部分は,キャンバスの左上を基点としてx軸方向に0px,y軸方向に34pxずれた場所にあるので,background-positionの値は0 -34pxとなります。

このように,背景画像を指定したい要素に対して,ひとつひとつ座標を指定していきます。座標を正確に取得できるソフトであれば作業がやりやすいと思います(※3)。

※3
Fireworksは選択したビットマップアイテムの座標がすぐに把握できるのでおすすめです。

CSS Sprites化できない場合と制約

リピート用画像は別にする

リピートさせるための背景画像は,Sprites用の画像に統合せず別の画像に分ける必要があります。

Windows IE6に対応するための制約

CSS Sprites用の統合画像が,アルファチャンネルを持った透過画像となっている場合,そのままではWindows IE6で正しく表示できません。

IE6でもアルファチャンネル画像を表示するためのhtcファイルや独自拡張・javascriptライブラリなどがありますが,大きな画像の特定の部分だけを表示することができないため現実的ではありません。

IE6用の解決策
  • 見た目に問題のない範囲内で色数を落とし,アルファチャンネルのない透過画像にする
  • 高度な透過が必要のないデザインにする

体感速度の向上

Twister AlternativeにおいてCSS Spritesを利用する前と後では,数字だけでなく体感速度が格段に向上し,CSSと画像の工夫だけでこんなに速くなるのだなと驚きました。ぜひとも一度実践していただくことをおすすめします。

Firefoxの拡張「YSlow」を使うと,閲覧中のページで読み込まれているファイルサイズをグラフ表示できるので,どれだけ速くなっているか確認もできます。

もっと具体的なサンプル・問題点は私の会社のブログでもご紹介していますのであわせてご覧ください。

著者プロフィール

山田あかね(やまだあかね;purprin)

エスカフラーチェLLC,デザイナー。名古屋出身。Web業界とまったく関係ない業種で独立して働く傍ら,Web/XHTML/CSS等技術を独学。2005年「コトノハ -○×ソーシャル」のデザインリニューアルを行ったのをきっかけに上京し転職。株式会社paperboy&co.で主にソーシャルブックマークサービス(POOKMARK Airlines)等の Webサービス開発に携わる。2007年1月,エスカフラーチェLLC の設立に参画し,デザイナーとして幅広く活躍中。

URLhttp://purpr.in/blog/

トラックバック

コメント

コメントの記入

G-CLOUD

ピックアップ

エンジニアパワーアップ講座 ~システム基盤を活用するための基礎知識~

イマドキのエンジニアに要求されるさまざまな知識や能力。これらを効率よくキャッチアップしていくヒントをいろいろな視点から取り上げます。

LinuxCon Japan/ Tokyo 2010の歩き方

9月開催「LinuxCon Japan/ Tokyo 2010」の見どころと楽しみ方を,メインスピーカーの皆さんに自ら紹介していただきましょう。

自分で考えた家が現実に!? ~「3DマイホームデザイナーLS3」で実現する,普請道楽のススメ

「3DマイホームデザイナーLS3」を使えば,パズル感覚の簡単操作で理想の住まいを立体的にシュミレートすることができます。

手軽に使える専用サーバ「さくらのマネージドサーバ」を徹底チェック

1台のサーバを占有して使うことができる「さくらのマネージドサーバ」に新たに加わった「Core 2 Duoプラン」の特徴と魅力をお伝えします。

gihyo.jp インフラエンジニア情報局

ネットワークやITにかかわるあらゆる業種で必要とされるインフラエンジニアに向けた情報や魅力を多角的に紹介します。

一行クイックアンケート

gihyo.jpで取り上げてほしいネタは?

※検索はページ右上の検索ボックスをご利用ください。

その他の連載

ただのメモでは勿体ない!Evernoteに人生を記憶しよう

これからEvernoteをはじめたい,もっとEvernoteを使いこなしたいという方向けにEvernoteの基本的な使い方から応用技,情報整理術やライフログなどの具体的な運用方法まで解説していきます。

Windows Phoneアプリケーション開発入門

Windows Marcketplace for Mobileがサービス開始され,作成したアプリケーションを個人でも世界をターゲットに公開できる環境が整ってきました。これを機にWindows Phoneアプリケーションの開発をしてみませんか?

機能と技術からわかる!システム基盤の実力

この連載では日立製作所のSOAプラットフォーム「Cosminexus(コズミネクサス)」のホワイトペーパーから,システム基盤を構成する技術とその考え方を紹介していきます。

ActionScript 3.0で始めるオブジェクト指向スクリプティング

野中文雄氏が,簡単なスクリプトは書いたことがあるという初級者を対象に,ActionScript 3.0の基本からクラス定義までを解説します。

いま,見ておきたいウェブサイト

この連載では,国内外の最新のウェブサイトを隔週更新で取り上げ,これら最新サイトの特徴や素晴らしい部分を,さまざまな角度から解説していきます。

Google Chrome版Firebug:デベロッパーツール取扱説明書

WebKitのWebInspector(デベロッパーツール)は飛躍的な進化を遂げています。多機能化するデバッガーの使い方とノウハウを詳細に解説します。

Ubuntu Weekly Recipe

Ubuntuの強力なデスクトップ機能を活用するための,いろいろなレシピをお届けします。

memcachedの活用と運用 実践編

本特集では,memcachedを利用している方に向けて,実践的なテクニックを伝授します。

連載一覧

gihyo.jp

  • DEVELOPER STAGE
  • ADMINISTRATOR STAGE
  • WEB+DESIGN STAGE
  • LIFESTYLE STAGE
  • SCIENCE STAGE
  • NEWS & REPORT

書籍案内

  • 新刊書籍
  • 書籍ジャンル一覧
  • 書籍シリーズ一覧
  • 新刊ピックアップ
  • ロングセラー
  • 電脳会議

定期刊行物一覧

  • Software Design
  • WEB+DB PRESS
  • Web Site Expert
  • 組込みプレス

企業動向

[ 企業動向一覧 ]

最近のコメント