@lorb/visibility-auto
v0.1.0
Published
3-line content-visibility:auto automation for instant rendering performance
Maintainers
Readme
@lorb/visibility-auto
3-line content-visibility: auto automation for instant rendering performance.
Install
npm install @lorb/visibility-autoUsage
import { init } from '@lorb/visibility-auto';
// Apply to all section, article, and [data-va] elements
const cleanup = init();
// Or target specific elements
const cleanup = init({ selector: '.content-block' });
// Done. Each element gets content-visibility: auto
// with a measured contain-intrinsic-size. Offscreen
// content skips rendering entirely.Track visibility changes:
init({
selector: 'section',
onChange: (el, visible) => {
if (visible) loadHeavyContent(el);
},
});Why
Browsers can skip rendering offscreen content with content-visibility: auto, but it needs a manual contain-intrinsic-size per element. Nobody does this. visibility-auto measures once, applies everywhere. New elements added to the DOM are handled automatically.
How it works
- Measures each element's dimensions
- Applies
content-visibility: autoandcontain-intrinsic-size: auto <w>px auto <h>px - Watches for new elements via MutationObserver
- Re-measures on window resize (debounced)
- SSR-safe -- no-op when
documentis undefined - Call
cleanup()to restore original styles
API
init(options?)-- returns a cleanup functionapply(el)-- apply to a single elementrestore(el)-- restore a single elementrestoreAll()-- restore all elementsmeasure(el)-- measure an element's dimensions
License
MIT -- Lorb.studio
