@jchnkl/csscalc v0.1.3
csscalc
JavaScript library to do math with css units.
Fully typed with typescript.
Currently supported units: px, cm, mm, Q, in, pc, pt, vh, vw, vmin, vmax, rem, %w, %h.
- Convert between css units
- Calculate css expressions
Based on https://developer.mozilla.org/en-US/docs/Web/CSS/length
Examples
Calculate what part of screen's width takes specified element:
import { calc } from 'cssunits';
// %w means % of width
calc('100%w / 100vw', element);Calculate area of element:
calc('100%w * 100%h', element);Convert pixels to percent of element's width:
convert(100, 'px', '%w', calcCtx(element));Convert element's width percent to pixels:
convert(50, '%w', 'px', calcCtx(element));
// or
Relative["%w"](50, calcCtx(element));calc method converts all known units and then invokes js's eval method, so you can use any inline js code in calc.
For example min/max from Math:
calc('Math.max(100%w, 100%h)', element)API
Absolute map, units -> pixels.
Absoulte = {
"absolute unit name" -> pixels
}Relative map, (units, calcContext) -> pixels.
Relative = {
"relative unit name": (units: number, ctx?: CalcContext) => number
}UnitRegexpStr, UnitRegexp, UnitRegexpGM - regular expression to find units.
Convert between units:
function convert(count: number, fromUnits: Unit, toUnits: Unit, calcCtx?: CalcContext): number;Create calc context:
function calcCtx(el?: HTMLElement): CalcContext;Calculate expression:
function calc(expression: string, el: HTMLElement, ctx?: CalcContext): number;
function calc(expression: string, ctx?: CalcContext): number;Roadmap
- Reactive calculations