Skip to content

Instantly share code, notes, and snippets.

@pierreburel
Forked from kaelig/README.md
Created November 29, 2012 21:38
Show Gist options
  • Save pierreburel/4172090 to your computer and use it in GitHub Desktop.
Save pierreburel/4172090 to your computer and use it in GitHub Desktop.
HiDPI sprites with Compass
/*! HiDPI v1 | MIT License | git.io/hidpi */
$hidpi-debug: false !default;
@import 'compass/css3';
@mixin hidpi-abstract($image, $extension) {
$image-fullname: '#{$image}.#{$extension}';
$image-hidpi-fullname: '#{$image}_x2.#{$extension}';
background-image: image-url($image-hidpi-fullname);
@include background-size(
image-width($image-fullname)
image-height($image-fullname)
);
}
@mixin hidpi($image: false, $extension: png) {
@if $hidpi-debug {
@if $image {
@include hidpi-abstract($image, $extension);
} @else {
@content;
}
} @else {
@if $image {
background-image: image-url('#{$image}.#{$extension}');
}
@media (-webkit-min-device-pixel-ratio: 1.3),
(-o-min-device-pixel-ratio: 2.6/2),
(min--moz-device-pixel-ratio: 1.3),
(min-device-pixel-ratio: 1.3),
(min-resolution: 1.3dppx) {
@if $image {
@include hidpi-abstract($image, $extension);
} @else {
@content;
}
}
}
}
/* HiDPI v1 | MIT License | git.io/hidpi */
/* line 108, icons/*.png */
.icons-sprite, .icons-add, .icons-address-book-2, .icons-address-book, .icons-align-bottom-edges, .icons-align-horizontal-centers, .icons-align-left-edges, .icons-align-right-edges, .icons-align-top-edges, .icons-align-vertical-centers {
background: url('/images/icons-sc320e812f1.png') no-repeat;
}
/* line 108, icons_x2/*.png */
.icons_x2-sprite {
background: url('/images/icons_x2-s6ed877cba6.png') no-repeat;
}
/* line 63, ../../../../../../../Library/Ruby/Gems/1.8/gems/compass-0.13.alpha.0/frameworks/compass/stylesheets/compass/utilities/sprites/_base.scss */
.icons-add {
background-position: 0 0;
}
/* line 63, ../../../../../../../Library/Ruby/Gems/1.8/gems/compass-0.13.alpha.0/frameworks/compass/stylesheets/compass/utilities/sprites/_base.scss */
.icons-address-book-2 {
background-position: 0 -16px;
}
/* line 63, ../../../../../../../Library/Ruby/Gems/1.8/gems/compass-0.13.alpha.0/frameworks/compass/stylesheets/compass/utilities/sprites/_base.scss */
.icons-address-book {
background-position: 0 -64px;
}
/* line 63, ../../../../../../../Library/Ruby/Gems/1.8/gems/compass-0.13.alpha.0/frameworks/compass/stylesheets/compass/utilities/sprites/_base.scss */
.icons-align-bottom-edges {
background-position: 0 -128px;
}
/* line 63, ../../../../../../../Library/Ruby/Gems/1.8/gems/compass-0.13.alpha.0/frameworks/compass/stylesheets/compass/utilities/sprites/_base.scss */
.icons-align-horizontal-centers {
background-position: 0 -48px;
}
/* line 63, ../../../../../../../Library/Ruby/Gems/1.8/gems/compass-0.13.alpha.0/frameworks/compass/stylesheets/compass/utilities/sprites/_base.scss */
.icons-align-left-edges {
background-position: 0 -80px;
}
/* line 63, ../../../../../../../Library/Ruby/Gems/1.8/gems/compass-0.13.alpha.0/frameworks/compass/stylesheets/compass/utilities/sprites/_base.scss */
.icons-align-right-edges {
background-position: 0 -32px;
}
/* line 63, ../../../../../../../Library/Ruby/Gems/1.8/gems/compass-0.13.alpha.0/frameworks/compass/stylesheets/compass/utilities/sprites/_base.scss */
.icons-align-top-edges {
background-position: 0 -112px;
}
/* line 63, ../../../../../../../Library/Ruby/Gems/1.8/gems/compass-0.13.alpha.0/frameworks/compass/stylesheets/compass/utilities/sprites/_base.scss */
.icons-align-vertical-centers {
background-position: 0 -96px;
}
@media (-webkit-min-device-pixel-ratio: 1.3), (-o-min-device-pixel-ratio: 2.6/2), (min--moz-device-pixel-ratio: 1.3), (min-device-pixel-ratio: 1.3), (min-resolution: 1.3dppx) {
/* line 23, ../sass/sprites.scss */
.icons-sprite, .icons-add, .icons-address-book-2, .icons-address-book, .icons-align-bottom-edges, .icons-align-horizontal-centers, .icons-align-left-edges, .icons-align-right-edges, .icons-align-top-edges, .icons-align-vertical-centers {
-webkit-background-size: 16px auto;
-moz-background-size: 16px auto;
-o-background-size: 16px auto;
background-size: 16px auto;
background-image: url('/images/icons_x2-s6ed877cba6.png');
}
/* line 13, ../sass/sprites.scss */
.icons-address-book {
background-position: 0 -32px;
}
/* line 13, ../sass/sprites.scss */
.icons-align-left-edges {
background-position: 0 -96px;
}
/* line 13, ../sass/sprites.scss */
.icons-align-right-edges {
background-position: 0 -80px;
}
/* line 13, ../sass/sprites.scss */
.icons-align-vertical-centers {
background-position: 0 -64px;
}
}
@import "compass/utilities/sprites/base",
"compass/css3/background-size",
"hidpi"; // git.io/hidpi
@import "icons/*.png";
@import "icons_x2/*.png";
@mixin sprite-background-position-fix($map, $map-alt, $sprites: sprite-names($map)) {
@each $sprite in $sprites {
$x: round(nth(sprite-position($map-alt, $sprite), 1) / 2);
$y: round(nth(sprite-position($map-alt, $sprite), 2) / 2);
@if $x != nth(sprite-position($map, $sprite), 1) or $y != nth(sprite-position($map, $sprite), 2) {
.#{sprite-map-name($map)}-#{$sprite}{
background-position: $x $y;
}
}
}
}
@include all-icons-sprites;
@include hidpi {
.icons-sprite {
$icons-sprites-width: image-width(sprite-path($icons-sprites));
@include background-size($icons-sprites-width auto);
background-image: sprite-url($icons_x2-sprites);
}
@include sprite-background-position-fix($icons-sprites, $icons_x2-sprites);
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment