/postcss-short

Use advanced shorthand properties in CSS

Primary LanguageJavaScriptCreative Commons Zero v1.0 UniversalCC0-1.0

PostCSS Short PostCSS

NPM Version Build Status Support Chat

PostCSS Short lets you use advanced shorthand properties in CSS.

PostCSS Short has been featured in Smashing Magazine. I hope all of these shorthands are useful and clear to first-time lookers. I hope they improve the readability of your stylesheets and save you development time along the way. Thank you so much for your support.

Features

Size

Declare width and height together with size.

/* before */

.icon {
  size: 48px;
}

/* after */

.icon {
  width: 48px;
  height: 48px;
}

Margin and Padding

Avoid clobbering previous margin or padding values with a skip token.

/* before */

.frame {
  margin: * auto;
}

/* after */

.frame {
  margin-right: auto;
  margin-left: auto;
}

Position

Declare top, right, bottom, and left values in position. Just like before, omit sides with a skip token.

/* before */

.banner {
  position: fixed 0 0 *;
}

/* after */

.banner {
  position: fixed;
  top: 0;
  right: 0;
  left: 0;
}

Color

Declare color and background-color together.

/* before */

.canvas {
  color: #abccfc #212231;
}

/* after */

.canvas {
  color: #abccfc;
  background-color: #212231;
}

Overflow

Declare individual x and y values in overflow. Omit sides with a skip token.

/* before */

.scrollable {
  overflow: * auto;
}

/* after */

.scrollable {
  overflow-y: auto;
}

Border

Omit sides within border- properties and fully define individual values on the border property.

/* before */

.container {
  border: 1px 2px / * / #343434;
}

.container--variation {
  border-width: * * 3px;
}

/* after */

.container {
  border-width: 1px 2px;
  border-color: #343434;
}

.container--variation {
  border-bottom-width: 3px;
}

Border Radius

Declare border-radius properties using the clockwise syntax.

/* before */

.container {
  border-bottom-radius: 10px;
}

/* after */

.container {
  border-bottom-left-radius: 10px;
  border-bottom-right-radius: 10px;
}

Font Size

Declare font-size and line-height together.

/* before */

.heading {
  font-size: 1.25em / 2;
}

/* after */

.heading {
  font-size: 1.25em;
  line-height: 2;
}

Font Weight

Declare font-weight with common names.

/* before */

p {
  font-weight: light;
}

/* after */

p {
  font-weight: 300;
}

Usage

Add PostCSS Short to your project:

npm install postcss-short --save-dev

Use PostCSS Short to process your CSS:

const postcssShort = require('postcss-short');

postcssShort.process(YOUR_CSS /*, processOptions, pluginOptions */);

Or use it as a PostCSS plugin:

const postcss = require('postcss');
const postcssShort = require('postcss-short');

postcss([
  postcssShort(/* pluginOptions */)
]).process(YOUR_CSS /*, processOptions */);

PostCSS Short runs in all Node environments, with special instructions for:

Node PostCSS CLI Webpack Create React App Gulp Grunt

Plugins

PostCSS Short is powered by the following plugins:

Some of these plugins have more features than are described here.

Options

features

Each plugin’s options may be configured by targeting the plugin’s namespace. Any plugin may be disabled by setting the plugin’s options as false.

postcssShort({
  features: {
    'font-size': {
      prefix: 'x'
    },
    'position': false
  }
});

prefix

The prefix option defines a prefix required by properties being transformed. Wrapping dashes are automatically applied, so that x would transform -x-border.

postcssShort({ prefix: 'x' });
.example-1 {
  -x-border-color: blue blue *;
  -x-color: * #fafafa;
}

/* becomes */

.example-1 {
  border-top-color: blue;
  border-right-color: blue;
  border-left-color: blue;
  background-color: #fafafa;
}

skip

The skip option defines the skip token used to ignore portions of the shorthand.

postcssShort({ skip: '-' });
.example-1 {
  border-color: blue blue -;
  color: - #fafafa;
}

/* becomes */

.example-1 {
  border-top-color: blue;
  border-right-color: blue;
  border-left-color: blue;
  background-color: #fafafa;
}