css-surveyor
v1.0.4
Published
Easily calculate pixel values for CSS length expressions
Downloads
3
Maintainers
Readme
css-surveyor
English | 中文
Easily calculate pixel values for CSS length expressions
Installation
npm i css-surveyorUsage
import { CssSurveyor } from 'css-surveyor'
const surveyor = new CssSurveyor()
surveyor.widthExpr = '100%'
surveyor.heightExpr = 'calc(100vh - 50px)'
console.log(surveyor.width, surveyor.height)
surveyor.events.on('widthChanged', w => console.log('Width updated to:', w))
surveyor.events.on('heightChanged', h => console.log('Height updated to:', h))
// Call cleanup method to release resources when no longer in use
surveyor.cleanup()API
Constructor
new CssSurveyor(connectTo?: HTMLElement | string | null)connectTo: Optional parameter specifying the element to connect to. Subsequent size calculations will be based on this element.
- If a string, it represents a selector and will use
document.querySelectorto find the element - If an HTMLElement, it will use that element directly
- If not provided or undefined, it will default to connecting to
document.body - If null, it won't connect immediately, and you'll need to manually call the
connectmethod later
Methods
connect(elemOrSelector?: HTMLElement | string): Connect to the specified element. Same as constructor parameter but cannot be nulldisconnect(): Disconnect from the current elementremeasure(forceUpdate = false): Manually trigger remeasurement, usually not needed to call manually. IfforceUpdateis true, it will emit the event even if the value is the same as the previous valuecleanup(): Call this function when no longer in use. It will disconnect and clear all event listeners
Properties
widthExpr?: string: Get or set the width expressionheightExpr?: string: Get or set the height expressionwidth: number: Get the currently measured widthheight: number: Get the currently measured heightconnected?: HTMLElement: Get the currently connected elementevents: Event emitter for subscribing towidthChangedandheightChangedevents. Refer to mitt
Attention
- CssSurveyor uses a hidden
divelement for measurements, which won't affect page layout but may impact the results of:empty,:has,::last-childor other pseudo-class selectors - Make sure to call the
cleanup()method when monitoring is no longer needed to release resources - You can use any valid CSS size expression, but CssSurveyor won't perform any validation on the expressions
- There are separate
widthExprandheightExprexpressions because CSS percentage values may reference either width or height. So if the expression you want to calculate doesn't include percentage values, it doesn't matter which one you use
