Compassを使用して、CSS Spriteを自動生成する方法。
CSS Spriteは高速化(HTTPリクエストを減らす)ための方法ですが、手間が掛かるため大変です。
しかし、Compassを使用すると簡単に使用することが出来ます。
mixinで画像サイズを取得
Compassには非常に便利な関数が用意されています。
『image-width』『image-height』は、画像のパスを指定するだけで、画像のサイズを取得できてしまいます。
こちらをよく使用するので、mixinにしてしまいます。
@mixin getImgSize($img, $w:0, $h:0){ width: image-width($img) - $w; height: image-height($img) - $h; }
第一引数で、パスを渡します。第二でpaddingなどを指定していればpaddingの横幅分渡し、第三引数でも同じくpaddingの高さを渡します。
config.rbの設定
config.rbに画像フォルダのパスを指定します。
#環境に合わせて下さい。 images_dir = "img"
と、画像のパスを指定します。
CSS Spriteを作成する
CSS Spriteを作成するにはCompass の『sprite-map』関数を使用します。
sprite-mapでCSS Spriteを作成し、これを変数に入れ、画像のパス・画像のポジションを取得します。
$sprites: sprite-map("sprite/*.png"); a { text-indent: 100%; white-space: nowrap; display:block; overflow: hidden; background : url(sprite-path($sprites)); background-position: sprite-position( $sprites, test ); @include getImgSize("sprite/test.png"); } a.test2{ background-position: sprite-position( $sprites, test2 ); }
とすることで、画像のサイズ、CSS Spriteのパス、画像のポジションを自動で取得出来ます。