Skip to content

Instantly share code, notes, and snippets.

@apauly
Last active May 4, 2016 06:00
Show Gist options
  • Save apauly/7917906 to your computer and use it in GitHub Desktop.
Save apauly/7917906 to your computer and use it in GitHub Desktop.
Mixin for responsive sprites with Sass
@mixin responsive-sprite($map, $icon){
$icon-file: sprite-file($map, $icon);
$icon-width: image-width($icon-file);
$icon-height: image-height($icon-file);
$sprite-file: sprite-path($map);
$sprite-width: image-width($sprite-file);
$sprite-height: image-height($sprite-file);
$space-top: floor(nth(sprite-position($map, $icon), 2));
@if $space-top == 0 {
$space-top: 0px
}
width:percentage($sprite-width / $icon-width);
display: block;
height: 0;
padding-bottom: percentage($icon-height / $icon-width);
background-size: 100%;
background-position:0 percentage(
-1 * $space-top / ( $sprite-height - $icon-height )
);
}
@nicolasiensen
Copy link

This is great! But I need it to respect the max width the sprites could reach, any idea how could I achieve this?

@nicolasiensen
Copy link

Figured it out! If you encapsulate the sprite element into a div with max-width equals to the sprite image you are displaying, it will never be wider than it's original width.

@Dobby89
Copy link

Dobby89 commented Feb 1, 2015

This works great, but do you think there would be a way to pass a desired width to the mixin, so that instead of the image being responsive, it gets set to one size?

For example:

.icon-foo{
  @include responsive-sprite($icon-sprites, foo, 200px);
}

This would be useful if you want to have more control over the exact size of the icon without wrapping it in a containing element.

@gfdesign
Copy link

Sorry, I am new in sprites images.
When I compile I get Undefined variable: "$icon-sprites"
Could you tell me how to define this variable?
I am using the same example as you.

@gfdesign
Copy link

Finally, I got it!
But I want the same request as @nicolasiensen
This would be great the image respect the original width and it doesn't span the whole of its container

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment