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

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

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

今日は,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/

トラックバック

コメント

コメントの記入

パスサポ

多数の情報処理技術者試験対策書籍の発行実績を誇る技術評論社がお届けする,資格試験合格サイト「めざせ! 情報処理試験 パスサポ」が開設されました。

ピックアップ

サクセスストーリーに続く,快適サーバー運用管理のヒント!

データの増大,煩雑な管理,システムダウン,セキュリティなど,迫りくる課題からシステム管理者の負担を軽くするポイントを解説します。

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

ネットワークやITにかかわるあらゆる業種で必要とされるインフラエンジニアに向けた技術情報や心構え,その魅力について多角的に紹介。

テストエンジニア ステーション

いま,ITに関わるあらゆる開発業務で注目されつつあるテスト系エンジニアをターゲットにしたコンテンツサイトを展開します。

一行クイックアンケート

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

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

その他の連載

もっと便利に!jQueryでラクラクサイト制作(実践サンプル付き)

本連載では,実践サンプルとともに,jQueryを上手に活用してサイト制作の品質向上・効率化を実現するための実践テクニックを解説します。

サクセスストーリーに続く,快適サーバー運用管理のヒント!

サーバーを自社で運用管理するのはもう限界…。データの増大,煩雑な管理,システムダウン,セキュリティなど,迫りくる課題からシステム管理者の負担を軽くするポイントを解説します。

続・先取り! Google Chrome Extensions

2010年1月のリリースが予定されているGoogle Chrome 4に搭載されるExtensionsについて,その詳細を先取りで解説します。最新情報から,ユーザースクリプトやテーマの作り方など関連情報もお届けします。

モダンPerlの世界へようこそ

この連載では,Perlの世代間ギャップに悩んでいる方に,いくらかの背景知識と,これだけは知っておいたほうがよいという最低限の慣用句をお届けします。

Hosting Department:ホスティングを活用するための基礎知識

本連載では,ホスティングサービスを活用する上で知っておきたい基礎知識を解説します。

Blogopolisから学ぶ計算幾何

計算幾何学は,図形に関するアルゴリズムを研究するコンピュータサイエンスの一分野です。本連載では,ビジュアルブログ検索エンジン「Blogopolis」で採用されている計算幾何のアプローチを例に取り上げながら,計算幾何の初歩を実践的に学習します。

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

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

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

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

連載一覧

gihyo.jp

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

書籍案内

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

定期刊行物一覧

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

最近のコメント