svg-sprite NPM version Build Status Coverage Status Dependency Status Development Dependency Status

This file is part of the documentation of svg-sprite — a free low-level Node.js module that takes a bunch of SVG files, optimizes them and creates SVG sprites of several types. The package is hosted on GitHub.

Aligning and duplicating shapes

CSS sprites with "vertical" or "horizontal" layout use only one axis for positioning the shapes inside the sprite. For the opposite axis, svg-sprite uses 0 as default positioning value. That's why the weather icons are left-aligned in the following example:

Sprite with vertical layout and default x-axis positioning

To use these icons as centered background images, you would need them to be centered within the sprite as well. This is where the extended alignment options jump in. To control the placement of the shapes, use the shape.align option to specify the path of a YAML file with the following format:

<shape-ID-or-path>:
  <template-string-with-placeholder>: <positioning> 

svg-sprite's default behaviour can be expressed as follows:

"*" :
  "%s" : 0

Centering shapes

With only these two lines

"*" :
  "%s" : .5

all the icons in the example sprite above get centered:

Sprite with vertical layout and centered x-axis positioning

Creating displaced shape copies

You can leverage the <template-string-with-placeholder> for creating displaced on-the-fly copies of your shapes:

"*" :
  "%s" : .5

weather-clear :
  -left : 0 
  -right : 1

weather-storm :
  "%s" : 0

Remember that the omitting the placeholder "%s"will make the template strings to be used as a suffices, effectively leading to the virtual shape IDs / CSS class names "weather-clear-left" and "weather-clear-right" ("-left" is equivalent to "%s-left").

Sprite with vertical layout, mixed x-axis positioning and displaced copies

As the displaced copies are created with the <use> element, your sprite doesn't get significantly bigger in file size by duplicating shapes this way. For each of the duplicates, an individual CSS rule is created in the stylesheet resources, using the virtual shape ID as selector class name.