JSPM

tailwindcss-scrims

1.0.0
  • ESM via JSPM
  • ES Module Entrypoint
  • Export Map
  • Keywords
  • License
  • Repository URL
  • TypeScript Types
  • README
  • Created
  • Published
  • Downloads 117
  • Score
    100M100P100Q79115F
  • License MIT

Tailwind CSS plugin to generate scrim classes.

Package Exports

  • tailwindcss-scrims

This package does not declare an exports field, so the exports above have been automatically detected and optimized by JSPM instead. If any package subpath is missing, it is recommended to post an issue to the original package (tailwindcss-scrims) to support the "exports" field. If that is not possible, create a JSPM override to customize the exports field for this package.

Readme

Tailwind CSS Scrims

Configurable Tailwind plugin for generating scrim utility classes.

What are Scrims?

In photography, a scrim is something that softens light — from the sun, or a flash — and is typically a piece of fabric, paper or acrylic stretched across a frame.

In UX, a scrim is a design technique (a gradient or overlay) used to make text more legible when overlaid on an image. The kind of visual treatment that is becoming increasingly common in card-based design.

A typical scrim is a neutral gradient that starts about half-way down an image and increases to 30%-40% opacity, creating a subtle darkening effect that provides enought contrast for white text to be legible.

Install

tailwindcss-scrims automatically generates generates scrim class variations for specified directions, distances and gradient densities.

npm install --save-dev tailwindcss-scrims

Usage

// tailwind.js
module.exports = {
  // ...
  plugins: [
    require('tailwindcss-scrims')({
      directions: {
        't': 'to bottom',
        'b': 'to top',
        'r': 'to left',
        'l': 'to right',
      },
      distances: {
        '1/4': '25%',
        '1/3': '33.33333%',
        '1/2': '50%',
        '2/3': '66.66666%'
        '3/4': '75%',
      },
      colors: {
        default: [rgba(0,0,0,0.4), rgba(0,0,0,0)],
      },
      variants: ['responsive', 'hover'],
    })
  ]
  // ...
}

Options

directions (optional)

Default:

{
  't': 'to bottom',
  'b': 'to top',
  'r': 'to left',
  'l': 'to right',
}

This is where you can define the direction — or location of emphasis — for a scrim. i.e. where the scrim color is darkest. Each direction is specified as a key/value pair. The key is used in the utility class name, the value is a valid CSS Gradient direction.

distances (optional)

Default:

{
  '1/4': '25%',
  '1/3': '33.33333%',
  '1/2': '50%',
  '2/3': '66.66666%'
  '3/4': '75%',
}

This defines the distance the scrim covers. i.e. how much of the image is covered by the scrim gradient. Each distance is specified as a key/value pair. The key is used in the utility class name, the value is a valid CSS Gradient 'stop' location.

colors (optional)

Default:

{
  default: [rgba(0,0,0,0.4), rgba(0,0,0,0)],
}

colors define the {start} and {end} colors (including alpha) for a scrim.

variants (optional)

Default:

['responsive', 'hover']

As per the tailwind plugin docs you can also pass variants (responsive, hover, etc.) as an option.

require('tailwindcss-scrims')({
  variants: ['responsive', 'hover'],
})

Example

This configuration:

// tailwind.js
module.exports = {
  // ...
  plugins: [
    require('tailwindcss-scrims')({
      directions: {
        't': 'to bottom',
        'b': 'to top',
      },
      distances: {
        default: '25%',
        '1/2': '50%',
      },
      colors: {
        default: [rgba(0,0,0,0.4), rgba(0,0,0,0)],
      },
      variants: [],
    })
  ]
  // ...
}

Results in the following utilities:

.scrim-t::after: {
  content: " ",
  position: absolute,
  top: 0,
  left: 0,
  width: 100%,
  height: 100%,
  backgroundImage: linear-gradient(to bottom, rgba(0,0,0,0.4), rgba(0,0,0,0) 25%);
}

.scrim-t-1\/2::after: {
  content: " ",
  position: absolute,
  top: 0,
  left: 0,
  width: 100%,
  height: 100%,
  backgroundImage: linear-gradient(to bottom, rgba(0,0,0,0.4), rgba(0,0,0,0) 50%);
}

.scrim-b::after: {
  content: " ",
  position: absolute,
  top: 0,
  left: 0,
  width: 100%,
  height: 100%,
  backgroundImage: linear-gradient(to top, rgba(0,0,0,0.4), rgba(0,0,0,0) 25%);
}

.scrim-b-1\/2::after: {
  content: " ",
  position: absolute,
  top: 0,
  left: 0,
  width: 100%,
  height: 100%,
  backgroundImage: linear-gradient(to top, rgba(0,0,0,0.4), rgba(0,0,0,0) 50%);
}