-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathflexImage-mixin.scss
34 lines (29 loc) · 1.18 KB
/
flexImage-mixin.scss
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
// Remove units and return val
// http://stackoverflow.com/questions/10756928/getting-only-x-or-y-position-from-sprite-in-compass
@function strip-units($number) {
@return $number / ($number * 0 + 1);
}
@mixin flexImage( $containerWidth, $elemWidth, $elemHeight, $fileName, $fullSpriteName ) {
$spriteWidth: strip-units( image-width(sprite-path($fullSpriteName)) );
$spriteHeight: strip-units( image-height(sprite-path($fullSpriteName)) );
$offsetX: abs( strip-units( nth(sprite-position($fullSpriteName, $fileName), 1) ) );
$offsetY: abs( strip-units( nth(sprite-position($fullSpriteName, $fileName), 2) ) );
$bgWidth: percentage( $spriteWidth / $elemWidth );
$bgHeight: percentage( $spriteHeight / $elemHeight );
$bgOffsetX: null;
$bgOffsetY: null;
@if $offsetX == 0 {
$bgOffsetX: 0;
} @else {
$bgOffsetX: percentage( $offsetX / ( $spriteWidth - $elemWidth ) );
}
@if $offsetY == 0 {
$bgOffsetY: 0;
} @else {
$bgOffsetY: percentage( $offsetY / ( $spriteHeight - $elemHeight ) );
}
width: percentage( $elemWidth / $containerWidth );
padding-top: percentage( $elemHeight / $containerWidth );
background-size: $bgWidth $bgHeight;
background-position: $bgOffsetX $bgOffsetY;
}