Last active
October 7, 2021 09:38
-
-
Save nickawalsh/4232779 to your computer and use it in GitHub Desktop.
Auto Hi-res Sprites
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
@import compass | |
$icons: sprite-map("icons/*.png") | |
$icons-hd: sprite-map("icons-hd/*.png") | |
i | |
background: $icons | |
display: inline-block | |
@media (-webkit-min-device-pixel-ratio: 1.5), (min-resolution: 144dpi) | |
background: $icons-hd | |
+background-size(image-width(sprite-path($icons)) auto) | |
@each $icon in sprite_names($icons) | |
.icn-#{$icon} | |
+sprite-dimensions($icons, $icon) | |
background-position: sprite-position($icons, $icon) | |
@media (-webkit-min-device-pixel-ratio: 1.5), (min-resolution: 144dpi) | |
$offset: nth(sprite-position($icons-hd, $icon), 2) / 2 | |
background-position: 0 $offset |
Important fix for retina icon serving - the background-size
declaration needs to come after the background
declaration.
Thanks nick. I just wrapped up Assembling Sass 2
$icons : sprite-map("icons/*.png", $layout: smart)
$icons-hd : sprite-map("icons-hd/*.png")
$layout: smart — will save some kb for you. But use it only with non-retina sprite.
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Huh, that's really interesting - thanks for posting your findings (and sorry I missed them the first time around). I'll let you know if we stumble across a way to fix that without the extra duplication.