@danscan/modular-scale
v0.1.0
Published
Easily configure and generate modular scales in `rem`s.
Downloads
11
Readme
Modular Rem Scale
Easily configure and generate modular scales in rem
s.
Configuration
The ModularRemScale
constructor takes a config
object with the following properties:
| property | type | description |
|----------|------|-------------|
|firstPower
|number
|The power value of the first step in the scale.|
|ratio
|number | RatioName
|The ratio to use for the scale.|
|rootFontSizePx
|number
|The root font size to use when converting rem
values to px
.|
Methods
| method | type | description |
|----------|------|-------------|
|getMap
|(steps: number) => ModularRemScaleMap
|Generate an object of steps
entries, mapping step numbers (starting at 1) to rem
values on the scale.|
|getStepPx
|(step: number) => string
|Get the px
value of a step on the scale.|
Named Ratios
| Key | Value | Decimal Value |
|------------------|-------------|-------------------|
|minor-second
|16 / 15
|1.0667 |
|major-second
|9 / 8
|1.125 |
|minor-third
|6 / 5
|1.2 |
|augmented-fourth
|√2
|1.4142 |
|perfect-fifth
|3 / 2
|1.5 |
|minor-sixth
|8 / 5
|1.6 |
|golden
|1.618033...
|1.61803398875 |
|phi
|1.618033...
|1.61803398875 |
|major-sixth
|5 / 3
|1.6667 |
|minor-seventh
|16 / 9
|1.7778 |
|major-seventh
|15 / 8
|1.875 |
|octave
|2
|2 |
|major-tenth
|5 / 2
|2.5 |
|major-eleventh
|8 / 3
|2.6667 |
|major-twelfth
|3
|3 |
|double-octave
|4
|4 |
Example
import ModularRemScale from '@danscan/modular-scale';
const scale = new ModularRemScale({
firstPower: -1,
ratio: 'perfect-fifth',
rootFontSizePx: 12,
});
scale.getMap(15);
// {
// '1': '0.67rem',
// '2': '1.00rem',
// '3': '1.50rem',
// '4': '2.25rem',
// '5': '3.38rem',
// '6': '5.06rem',
// '7': '7.59rem',
// '8': '11.39rem',
// '9': '17.09rem',
// '10': '25.63rem',
// '11': '38.44rem',
// '12': '57.67rem',
// '13': '86.50rem',
// '14': '129.75rem',
// '15': '194.62rem'
// }
scale.getStepPx(2);
// 12px
scale.getStepPx(3);
// 18px
scale.getStepPx(4);
// 27px