Skip to content

Latest commit

 

History

History
128 lines (94 loc) · 3.19 KB

README.md

File metadata and controls

128 lines (94 loc) · 3.19 KB

PostCSS Responsive Type

NPM version Build Status Dependency Status

PostCSS plugin for automagical responsive typography. Adds a responsive property to font-size that generates complex calc and vw based font sizes.

Inspired by Typographic.

Part of Rucksack - CSS Superpowers.

Responsive Type Demo

Quick start:
html {
  font-size: responsive;
}
Specify parameters:

Units can be in px, rem, or em.

html {
  font-size: responsive 12px 21px; /* min-size, max-size */
  font-range: 420px 1280px; /* viewport widths between which font-size is fluid */
}
Expanded syntax:
html {
  font-size: responsive;
  min-font-size: 12px;
  max-font-size: 21px;
  lower-font-range: 420px;
  upper-font-range: 1280px;
}
What it outputs:
html {
  font-size: calc(12px + 9 * ( (100vw - 420px) / 860));
}

@media screen and (max-width: 420px) {
  html {
    font-size: 12px;
  }
}

@media screen and (min-width: 1280px) {
  html {
    font-size: 21px;
  }
}

That calc expression is equivalent to

min-size + (max-size - min-size) * ( (100vw - min-width) / ( max-width - min-width) )

--

Defaults

To get started you only need to specify font-size: responsive;, all other properties have sane defaults.

min-font-size: 14px

max-font-size: 21px

lower-font-range: 420px

upper-font-range: 1280px

--

Browser Support

postcss-responsive-type just uses calc, vw units, and media queries behind the scenes, so it works on all modern browsers (IE9+). Although Opera Mini is not supported.

Legacy browsers will ignore the output responsive font-size. You can easily provide a simple static fallback:

.foo {
  font-size: 16px;
  font-size: responsive;
}

Alternatively, if you feel the need to fully support legacy browsers or Opera Mini, there are polyfills that can help!

--

Usage

postcss([ require('postcss-responsive-type') ])

See PostCSS docs for examples for your environment.

You can use postcss-responsive-type with Stylus through PostStylus.

--

License

MIT © Sean King