The clampToPx function is a utility for calculating clamped CSS values in JavaScript, combining rem and viewport units such as vw or vi. This function is ideal for dynamically translating responsive sizes to pixel values when pixels are necessary, e.g. in a JS plugin.
npm install @webfactoryde/clamp-to-px
clampToPx(minRem, preferredFormula, maxRem, options?)- minRem (
number): Minimum value in rem units. - preferredFormula (
string): Formula string, e.g.'1.5 + 0.5'. - maxRem (
number): Maximum value in rem units. - options (
object, optional):- unit (
string): Viewport unit to use ('vw', 'vi', etc.). Default is'vw'. - viewportWidth (
number): Viewport width in pixels. Default iswindow.innerWidth.
- unit (
Import the clampToPx function in your module(s) and call it with your desired parameters and an optional config object:
import clampToPx from '@webfactoryde/clamp-to-px';
// Clamp between 16px and 48px using formula "1.5rem + 0.5vw" (assuming root font size = 16px, viewport = 1200px)
const result = clampToPx(1, '1.5rem + 0.5vw', 3);
// Output: 30
// Clamp with a custom viewport and unit
const resultCustom = clampToPx(1, '2rem + 1vi', 4, { unit: 'vi', viewportWidth: 800 });
// Output: 40