目次
webpack-spritesmithで複数のスプライト画像を作るってどうやるのか今ひとつわからなくてやってみたやり方の紹介。
やってみたら単純なことですね。SpritesmithPluginをnewしてpluginに複数設定してやればいい。
元となる画像をディレクトリわけて配置してそれぞれのディレクトリからスプライト画像を作る。
わける基準は例えばスプライト化した画像を最適化(減色をする)場合なんかは色味でわけると減色効率がよかったりする。
赤系は赤系だけでスプライト化するとかね。
ファイル構成はこんな感じ。
1 | ├── app |
package.jsonの中はこんな感じ。
1 | { |
スプライト化する画像をこの場合は「sprite_assets01」と「sprite_assets02」にわけてる。
このディレクトリ内の画像がそれぞれsprite01.pngっていう名前でスプライト画像として出力されて、
scssも「_sprite01.scss」と「_sprite02.scss」っていう名前で出力される。
1 | @import 'sprite01'; |
以下がwebpack.config.jsです。
1 | var path = require('path'); |
同系色を同じスプライトにした方が良いよってのもあるけど、Retina対応の画像と普通の画像って感じにわけてもいい。 Retina対応なんだけどスプライト画像といっしょに出力されるScssにはmixinも含まれるんだけどRetina対応じゃなかったりする。 で以下がデフォルトで出力されるScssのmixin。
1 | @mixin sprite-width($sprite) { |
これだとRetina用に書き出した2倍のサイズの画像だと変になる。 背景画像のサイズを半分にして位置も半分にするmixinを追加するといい。 出力されたScssに記述すると書き換えられるたびに追記しないといけないので自分で作ったScssに追記するのをおすすめする。
1 | @mixin sprite-position-2x($sprite) { |