bluwy / svelte-fast-dimension

Fast dimension bindings using ResizeObserver

Home Page:https://npmjs.com/svelte-fast-dimension

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

svelte-fast-dimension

Fast dimension bindings using ResizeObserver.

Why? Svelte currently uses an iframe technique to measure dimensions so it works in older browsers. However, creating multiple iframes has a big performance impact and sometimes quirkiness. If your target browsers support ResizeObserver, this can significantly improve dimension binding performance.

Installation

npm install --save-dev svelte-fast-dimension

Usage

// svelte.config.js
import { fastDimension } from 'svelte-fast-dimension'

export default {
  preprocess: [fastDimension()]
}

Use dimension bindings as usual, it will use ResizeObservers under-the-hood:

<script>
  let a, b, c, d
</script>

<div
  bind:clientWidth="{a}"
  bind:clientHeight="{b}"
  bind:offsetWidth="{c}"
  bind:offsetHeight="{d}"
/>

Recipes

Vite

svelte-fast-dimension injects an import from svelte-fast-dimension/action when preprocessing. This won't be detected during Vite's prebundling phase, and will cause on-the-fly prebundling which slows startup time. To fix this, add svelte-fast-dimension/action to optimizeDeps.include.

Sponsors

Sponsors

License

MIT

About

Fast dimension bindings using ResizeObserver

https://npmjs.com/svelte-fast-dimension

License:MIT License


Languages

Language:JavaScript 65.7%Language:Svelte 28.5%Language:HTML 5.8%