PostCSS Responsive Type

PostCSS plugin for automagical responsive typography. Adds a responsive
property to font-size
that generates complex calc
and vw
based font sizes.
Inspired by this post from @MikeRiethmuller, and Typographic.
Part of Rucksack - CSS Superpowers.

Quick start:
html {
font-size: responsive;
}
Specify parameters:
Units can be in px, rem, or em.
html {
font-size: responsive 12px 21px;
font-range: 420px 1280px;
}
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