Compass を使って、CSS Sprite による画像ナビゲーションを簡単に作成します。
[markdown]
以前に画像ナビゲーションを下記の方法で作成しました。
> [CSS: 画像ナビゲーションのマウスオーバー処理を visibility: hidden と Sass の @for で作る | deadwood](https://www.d-wood.com/blog/2014/06/27_6414.html)
この方法では、例えば透過画像を使いたい場合に、下に敷いた画像が見えてしまいます。
赤がにじんでいるように見えます(下図、上の「よこなが」)。

Compass を使った CSS Sprite で作ります。
## CSS Sprite とは
Compass のドキュメント。
> [Compass Sprites | Compass Documentation](http://compass-style.org/reference/compass/utilities/sprites/)
### Compass を利用しない方法
Compass を利用しない場合、色々手間がかかります。
こちらが参考になりました。
> [CSSスプライトについてあれこれ。](http://lopan.jp/css-sprites/)
### メリットとデメリット
下記のようなメリットがあります。
> [コーダー必見、SCSS・Compassで開発効率アップ|便利なCSS Sprite実装編 | Developers.IO](http://dev.classmethod.jp/ria/html5/web-desiner-corder-scss-create-css-sprite/)
>
> CSS Spriteのメリット
>
> 1. 画像をくっつけることによってHTTPリクエスト数の削減
> 1. マウスオーバーなどで表示を切り替えるがスムーズ(個別に画像を読み込んでいる場合、切り替わったときに読み込みが発生します)
> 1. CSSのみでボタンなどのアフォーダンスを切り替えることができる
>
> CSS Spriteのデメリット
>
> 1. 画像をまとめて作るのが手間
> 1. 画像に変更があった場合、座標の変更が手間
> 1. 画像をまとめる際に汎用性を考えどの座標に配置するか頭を使う
> 1. デザインする際に書き出しようのファイルを作る必要がある
> 1. alt属性は使えずテキストを置くことはできるが、テキストを見えなようにするテクニック(画像置換)は要注意
>
> CSS Spriteは価値のあるテクニックですが上記のような手間のかかるものでもあります。
> そこでSCSS・Compassを使うことでほとんどのデメリットを解消することができます。
## 準備
CSS Sprite を利用します。
今回は上図サンプルのように、縦横の大きさがバラバラの画像を利用し、マウスホバー処理をさせます。
### Compass を設定する
config.rb で画像パスに関わる設定は以下あたりでしょうか。
`relative_assets` では、絶対パスから相対パスに変更します。
“`ruby:config.rb
http_path = “/”
images_dir = “images”
relative_assets = true
“`
> * [Compass: 生成される CSS の画像パスを変更する | deadwood](https://www.d-wood.com/blog/2014/08/18_6643.html)
ちなみに Grunt で設定したい場合には、こちらを参考にすると良さそうです。
> [Compass+GruntでCSSスプライトを使う | chikathreesix](http://chikathreesix.com/?p=167)
### 画像を切り出す
画像をパーツ毎に切り出しておきます。
対応する画像は .png のみです。
なお、下記のような画像 `_hover` を追加した画像を用意しておくと、css の `:hover` 処理まで行ってくれるのであらかじめ用意しておきます(詳しくは後述)。
ちなみに `_active` で `:active`、`_target` で `:target` のコードが生成されます。
* images /menus/y.png
* images /menus/y_hover.png
* images /menus/h.png
* images /menus/h_hover.png
今回は `menus` というフォルダに画像を入れておきます。
> [Sprite Magic Selectors | Compass Documentation](http://compass-style.org/help/tutorials/spriting/magic-selectors/)
このディレクトリ名は、Compass の記述内でも利用することになります。
マップ名とよばれるので `