@hidoo/styleunit

v1.0.0-alpha.9

The unit oriented CSS framework implemented in Sass.

@hidoo/styleunit/plugin/spritesheet

Provides mixin to defined styles using spritesheet.

Usage

SCSS

// Use spritesheet plugin with configuration
@use 'node_modules/@hidoo/styleunit/src/plugin/spritesheet' with (
  $spritesheets: (
    'icon-image': (
      'image': 'path/to/sprite/icon-image.png',
      'items': (
        'logo': (
          'width': 10px,
          'height': 10px,
          'total-width': 30px,
          'total-height': 30px,
          'offset-x': -10px,
          'offset-y': -10px
        )
      )
    )
  )
);

// Use this mixin inside block
.selector {
  @include spritesheet.define($type: 'icon-image', $name: 'logo');
}

CSS Outputs

.selector-logo {
  --background-image: url(path/to/sprite/icon-image.png);
  background-image: var(--background-image);
}
.selector-logo {
  --overflow: hidden;
  --color: transparent;
  --text-indent: -100%;
}
.selector-logo {
  --width: 10px;
  width: var(--width);
  --height: 10px;
  height: var(--height);
  --background-position: -10px -10px;
  background-position: var(--background-position);
  --background-size: 30px 30px;
  background-size: var(--background-size);
}

Supported format of spritesheet

This mixin support following format of spritesheet.

$spritesheets: (
  // output each by files of spritesheet
  'icon-image': (
      'image': 'path/to/sprite/icon-image.png',
      'items': (
        // output each by items
        'logo': (
            'width': 10px,
            'height': 10px,
            'total-width': 30px,
            'total-height': 30px,
            'offset-x': -10px,
            'offset-y': -10px
          ),
        ...
      )
    ),
  ...
) !default;

Usage with prefix and suffix of item state

The state can be expressed by specifying the following prefix and suffix in the item name.

Prefix Suffix Example State
(None) (None) example Default styles
(None) --focus example--focus Styles in :hover, :focus, .is-focus
(None) --disabled example--disabled Styles in :disabled, .is-disabled.
sm: (None) sm:example Styles if viewport is "sm".
sm: --focus sm:example--focus Styles in :hover, :focus, .is-focus if viewport is "sm".
sm: --disabled sm:example--disabled Styles in :disabled, .is-disabled if viewport is "sm".

When $options: ("toggle": false);

Prefix Suffix Example State
(None) --current example--current Styles in .is-current.
sm: --current sm:example--current Styles in .is-current if viewport is "sm".

When $options: ("toggle": true);

Prefix Suffix Example State
(None) --selected example--selected Styles in :checked, .is-selected.
(None) --selected--focus example--selected--focus Styles in :checked:hover, :checked:focus :checked.is-focus, .is-selected:hover, .is-selected:focus .is-selected.is-focus.
(None) --selected--disabled example--selected--disabled Styles in :checked:disabled :checked.is-disabled, .is-selected:disabled .is-selected.is-disabled.
sm: --selected sm:example--selected Styles in :checked, .is-selected if viewport is "sm".
sm: --selected--focus sm:example--selected--focus Styles in :checked:hover, :checked:focus, :checked.is-focus, .is-selected:hover, .is-selected:focus, .is-selected.is-focus if viewport is "sm".
sm: --selected--disabled sm:example--selected--disabled Styles in :checked:disabled, :checked.is-disabled, .is-selected:disabled, .is-selected.is-disabled if viewport is "sm".

License

MIT