/* SCSS variables are information about icon's compiled state, stored under its original file name .icon-home { width: $icon-home-width; } The large array-like variables contain all information about a single icon $icon-home: x y offset_x offset_y width height total_width total_height image_path; At the bottom of this section, we provide information about the spritesheet itself $spritesheet: width height image $spritesheet-sprites; */ $search-name: 'search'; $search-x: 0px; $search-y: 0px; $search-offset-x: 0px; $search-offset-y: 0px; $search-width: 20px; $search-height: 20px; $search-total-width: 20px; $search-total-height: 20px; $search-image: '../public/assets/img/sprite.png'; $search: (0px, 0px, 0px, 0px, 20px, 20px, 20px, 20px, '../public/assets/img/sprite.png', 'search', ); $spritesheet-width: 20px; $spritesheet-height: 20px; $spritesheet-image: '../public/assets/img/sprite.png'; $spritesheet-sprites: ($search, ); $spritesheet: (20px, 20px, '../public/assets/img/sprite.png', $spritesheet-sprites, ); /* The provided mixins are intended to be used with the array-like variables .icon-home { @include sprite-width($icon-home); } .icon-email { @include sprite($icon-email); } Example usage in HTML: `display: block` sprite:
To change `display` (e.g. `display: inline-block;`), we suggest using a common CSS class: // CSS .icon { display: inline-block; } // HTML */ @mixin sprite-width($sprite) { width: nth($sprite, 5); } @mixin sprite-height($sprite) { height: nth($sprite, 6); } @mixin sprite-position($sprite) { $sprite-offset-x: nth($sprite, 3); $sprite-offset-y: nth($sprite, 4); background-position: $sprite-offset-x $sprite-offset-y; } @mixin sprite-image($sprite) { $sprite-image: nth($sprite, 9); background-image: url(#{$sprite-image}); } @mixin sprite($sprite) { @include sprite-image($sprite); @include sprite-position($sprite); @include sprite-width($sprite); @include sprite-height($sprite); } /* The `sprites` mixin generates identical output to the CSS template but can be overridden inside of SCSS @include sprites($spritesheet-sprites); */ @mixin sprites($sprites) { @each $sprite in $sprites { $sprite-name: nth($sprite, 10); .#{$sprite-name} { @include sprite($sprite); } } }