第6章 Sassを更に便利にする Compass
6-7 高度なCSSスプライトの使用方法(Sprite Helpers)
スプライト関数(Sprite Helpers)
sprite-map()関数
@import "compass"; $map: sprite-map("icon/*.png", $spacing: 20px, $layout: horizontal);
sprite()関数
.top { background: sprite($map, top); }
.top { background: url('../img/icon-s6d95478305.png') -520px 0; }
sprite-url()関数
.top { background: sprite-url($map); }
.top { background: url('../img/icon-s6d95478305.png'); }
sprite-path()関数
.top { background: url(sprite-path($map)); }
.top { background: url(icon-s6d95478305.png); }
sprite-file()関数
.top { background: sprite-file($map, top); }
.top { background: /Users/impress/compass-folder/img/icon/top.png; }
.top { width: image-width(sprite-file($map, top)); height: image-height(sprite-file($map, top)); }
.top { width: 32px; height: 32px; }
sprite-position()関数
.top { background: sprite-position($map, top); }
.top { background: -520px 0; }
.top { background: sprite-position($map, top); &:hover { background: sprite-position($map, top_hover); } }
.top { background: -520px 0; } .top:hover { background: -572px 0; }
.top { background: nth(sprite-position($map, top), 1) nth(sprite-position($map, top), 2); }
.top { background: -520px 0; }
sprite-map-name()関数
.top:after { content: quote(sprite-map-name($map)); }
.top:after { content: "icon"; }
関数を組み合わせて使う
@mixin sprite-bg($sprite) { background: sprite-url($map) sprite-position($map, top) #{"/"} image-width(sprite-file($map, $sprite)) image-height(sprite-file($map,$sprite)) no-repeat; }
.top { @include sprite-bg(top); }
.top { background: url('../img/icon-s6d95478305.png') -520px 0 / 32px 32px no-repeat; }
@mixin sprite-half($sprite) { background: sprite-url($map) (nth(sprite-position($map, $sprite), 1)/2) (nth(sprite-position($map, $sprite), 2)/2) #{"/"} (image-width(sprite-file($map, $sprite))/2) (image-height(sprite-file($map,$sprite))/2) no-repeat; } .top { @include sprite-half(top); }
.top { background: url('../img/icon-s6d95478305.png') -260px 0 / 16px 16px no-repeat; }
sprite-map()関数で使えるミックスイン
spriteミックスイン
//背景を取得する .top1 { @include sprite($map, top); } //引数でサイズ、背景位置をまとめて取得できる .top2 { @include sprite($map, top, true, 100, 100); }
.top1 { background-position: -520px 0; } .top2 { background-position: -420px 100px; height: 32px; width: 32px; }
sprite-dimensionsミックスイン
//サイズを取得する .top3 { @include sprite-dimensions($map, top); }
top3 { height: 32px; width: 32px; }
sprite-background-positionミックスイン
//背景位置を取得する(引数で位置を調整する) .top4 { @include sprite-background-position($map, top, 100, 100); }
.top4 { background-position: -420px 100px; }
sprite-replace-textミックスイン
//画像置換も書き込む(引数でサイズ、背景位置の調整ができる) .top5 { @include sprite-replace-text($map, top, true); }
.top5 { text-indent: -119988px; overflow: hidden; text-align: left; background-position: -520px 0; height: 32px; width: 32px; background-image: url('../img/icon-s6d95478305.png'); background-repeat: no-repeat; }