0.5.0 • Published 3 years ago

@hidoo/unit-mixin-use-spritesheet v0.5.0

Weekly downloads
2
License
MIT
Repository
-
Last release
3 years ago

@hidoo/unit-mixin-use-spritesheet

Mixin for using spritesheet in @hidoo/unit framework.

Installation

$ npm install @hidoo/unit @hidoo/unit-mixin-use-spritesheet

Usage

@import "node_modules/@hidoo/unit/src/index.scss";
@import "node_modules/@hidoo/unit-mixin-use-spritesheet/src/index.scss";

Import with node-sass-magic-importer

@import "~@hidoo/unit";
@import "~@hidoo/unit-mixin-use-spritesheet";

Usage for this mixin

SCSS

// import spritesheet variables
@import "path/to/sprite/icon-image";

// use mixin inside block
.selector {
  @include use-spritesheet($type: "icon-image", $name: "logo");
}

CSS Outputs

.selector-logo {
  /* spritesheet settings */
}

Supported format of spritesheet

This mixin support following format of spritesheet.

$sprites: (
  // 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
      ),
      ...
    )
  ),
  ...
);

Usage with custom variables

$custom-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
      )
    )
  )
);

// define hook that change to use $custom-spritesheets
@function use-spritesheet-hook-resolve-spritesheets() {
  @if global-variable-exists("custom-spritesheets") {
    @return $custom-spritesheets;
  }

  @return null;
}

Usage with suffix of item state

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

SuffixExampleState
(None)example(Default)
--focusexample--focusStyles in :hover, :focus, .is-focus
--disabledexample--disabledStyles in :disabled, .is-disabled.
--if-mobileexample--if-mobileStyles at mobile viewport.
--focus--if-mobileexample--focus--if-mobileStyles in :hover, :focus, .is-focus at mobile viewport.
--disabled--if-mobileexample--disabled--if-mobileStyles in :disabled, .is-disabled at mobile viewport.

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

SuffixExampleState
--currentexample--currentStyles in .is-current.
--current--if-mobileexample--current--if-mobileStyles in .is-current at mobile viewport.

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

SuffixExampleState
--selectedexample--selectedStyles in :checked, .is-selected.
--selected--focusexample--selected--focusStyles in :checked:hover, :checked:focus :checked.is-focus, .is-selected:hover, .is-selected:focus .is-selected.is-focus.
--selected--disabledexample--selected--disabledStyles in :checked:disabled :checked.is-disabled, .is-selected:disabled .is-selected.is-disabled.
--selected--if-mobileexample--selected--if-mobileStyles in :checked, .is-selected at mobile viewport.
--selected--focus--if-mobileexample--selected--focus--if-mobileStyles in :checked:hover, :checked:focus, :checked.is-focus, .is-selected:hover, .is-selected:focus, .is-selected.is-focus at mobile viewport.
--selected--disabled--if-mobileexample--selected--disabled--if-mobileStyles in :checked:disabled, :checked.is-disabled, .is-selected:disabled, .is-selected.is-disabled at mobile viewport.

API

@function _use-spritesheet-get-sheet-by-type

get sheet by type from values of spritesheets

  • Group: Spritesheets
  • Access: private

Parameters

NameTypeDescriptionDefault
$typeStringtype of spritesheet-
$spritesheetsMapdata of spritesheets()

Returns

Map, Null

Dependents

  • @mixin use-spritesheet use spritesheet settings

@function _use-spritesheet-resolve-spritesheets

resolve values of spritesheets

  • Group: Spritesheets
  • Access: private

Returns

Map, Null

Dependents

  • @mixin use-spritesheet use spritesheet settings

@mixin _use-spritesheet-define-responsive

define responsive item

  • Group: Spritesheets
  • Access: private

Parameters

NameTypeDescriptionDefault
$nameStringname of spritesheet item-
$itemsMapspritesheet items()
$optionsMapoptions()

Dependencies

Dependents

  • @mixin use-spritesheet use spritesheet settings

@mixin _use-spritesheet-define-toggle-responsive

define responsive toggle item

  • Group: Spritesheets
  • Access: private

Parameters

NameTypeDescriptionDefault
$nameStringname of spritesheet item-
$itemsMapspritesheet items()
$optionsMapoptions()

Dependencies

Dependents

  • @mixin use-spritesheet use spritesheet settings

@mixin _use-spritesheet-define-toggle

define toggle item

  • Group: Spritesheets
  • Access: private

Parameters

NameTypeDescriptionDefault
$nameStringname of spritesheet item-
$itemsMapspritesheet items()
$optionsMapoptions()

Dependencies

Dependents

  • @mixin use-spritesheet use spritesheet settings

@mixin _use-spritesheet-define

define item

  • Group: Spritesheets
  • Access: private

Parameters

NameTypeDescriptionDefault
$nameStringname of spritesheet item-
$itemsMapspritesheet items()
$optionsMapoptions()

Dependencies

Dependents

  • @mixin use-spritesheet use spritesheet settings

@mixin _use-spritesheet-set-properties

set properties

  • Group: Spritesheets
  • Access: private

Parameters

NameTypeDescriptionDefault
$valuesMapvalues of item()
$use2xBooleanuse 2x image or notfalse

Dependents

  • @mixin _use-spritesheet-define-responsive define responsive item
  • @mixin _use-spritesheet-define-toggle-responsive define responsive toggle item
  • @mixin _use-spritesheet-define-toggle define toggle item
  • @mixin _use-spritesheet-define define item

@mixin use-spritesheet

use spritesheet settings

  • Group: Spritesheets
  • Access: public

Parameters

NameTypeDescriptionDefault
$typeStringtype of spritesheet-
$nameStringname of spritesheet item-
$optionsMapoptions()
$options.use2xBooleanuse 2x image or (one of true, false or "if-mobile")false
$options.responsiveBooleanresponsive or notfalse
$options.toggleBooleantoggle or notfalse
$options.capturing-selectorsListcapturing parent selectors("a", "button")

Examples

scss inputs

// format of spritesheets values
$sprites: (
   // 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
      ),
      ...
    )
  ),
  ...
);

// use this
.selector {
  @include use-spritesheet($type: "icon-image", $name: "logo");
}

css outputs

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

Dependencies

Test

$ yarn test

License

MIT

0.5.0

3 years ago

0.4.4

3 years ago

0.4.3

3 years ago

0.4.2

4 years ago

0.4.1

4 years ago

0.4.0

5 years ago

0.3.0

5 years ago

0.2.0

5 years ago

0.1.0

5 years ago