第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;
}


