background-sizeが使える環境(IE8を切れる環境)で、
Retinaなケースを考えて作る場合。(画像は@2xサイズで用意する)
・compassは最新のアルファ版を使うと良い (2013.4.14現在)
gem install compass --pre
Sprites are compiled in every call to sprite · Issue #897 · chriseppstein/compass
・pngの生成を高速化すっるには、oily_pngを入れると良い
gem install oily_png
パフォーマンスからみるSass/Compass 第2回:CompassによるCSS Sprite | MOL
・該当ディレクトリでターミナルから、監視開始
compass watch
・CompassのMixin
// スプライト画像 @mixin sprite-background($sprites, $sprites-img, $name) { background-image: $sprites-img; background-repeat: no-repeat; display: block; height: ceil(image-height(sprite-file($sprites, $name)) / 2); width: ceil(image-width(sprite-file($sprites, $name)) / 2); $ypos: ceil(nth(sprite-position($sprites, $name), 2) / 2); background-position: 0 $ypos; @include background-size(ceil(image-width(sprite-path($sprites)) / 2) auto); } $sprites: sprite-map("/common/sprite/*.png", $spacing: 4px); $sprites-img: sprite-url($sprites); #icon-large .sprite{ @include sprite-background($sprites, $sprites-img, 'icon-large'); }
こんな感じ。
参考:
続☆Compassでさくっとスプライトを作る方法
Compassで複数のSprite画像を扱う
Using Compass to generate normal and retina sprite maps
background-sizeが使えないwebサイト制作時なんかを考えると、別の方法も必要になるので、後日検討。