Resize Observer
<sl-resize-observer> | SlResizeObserver
The Resize Observer component offers a thin, declarative interface to the
ResizeObserver API
.
Examples
Resize Observer Basics
The resize observer will report changes to the dimensions of the elements it wraps through the
sl-resize
event. When emitted, a collection of
ResizeObserverEntry
objects will be attached to event.detail
that contains the target element and information about
its dimensions.
<div class="resize-observer-overview"> <sl-resize-observer> <div>Resize this box and watch the console π</div> </sl-resize-observer> </div> <script> const container = document.querySelector('.resize-observer-overview'); const resizeObserver = container.querySelector('sl-resize-observer'); resizeObserver.addEventListener('sl-resize', event => { console.log(event.detail); }); </script> <style> .resize-observer-overview div { display: flex; border: solid 2px var(--sl-input-border-color); align-items: center; justify-content: center; text-align: center; padding: 4rem 2rem; } </style>
div.resize-observer-overview sl-resize-observer div Resize this box and watch the console π javascript: const container = document.querySelector(.resize-observer-overview); const resizeObserver = container.querySelector(sl-resize-observer); resizeObserver.addEventListener(sl-resize, event => { console.log(event.detail); }); css: .resize-observer-overview div { display: flex; border: solid 2px var(--sl-input-border-color); align-items: center; justify-content: center; text-align: center; padding: 4rem 2rem; }
import SlResizeObserver from '@teamshares/shoelace/dist/react/resize-observer'; const css = ` .resize-observer-overview div { display: flex; border: solid 2px var(--sl-input-border-color); align-items: center; justify-content: center; text-align: center; padding: 4rem 2rem; } `; const App = () => ( <> <div className="resize-observer-overview"> <SlResizeObserver onSlResize={event => console.log(event.detail)}> <div>Resize this box and watch the console π</div> </SlResizeObserver> </div> <style>{css}</style> </> );
Importing
If youβre using the autoloader or the traditional loader, you can ignore this section. Otherwise, feel free to use any of the following snippets to cherry pick this component.
To import this component from the CDN using a script tag:
<script type="module" src="https://cdn.jsdelivr.net/npm/@shoelace-style/shoelace@2.1.0/cdn/components/resize-observer/resize-observer.js"></script>
To import this component from the CDN using a JavaScript import:
import 'https://cdn.jsdelivr.net/npm/@shoelace-style/shoelace@2.1.0/cdn/components/resize-observer/resize-observer.js';
To import this component using a bundler:
import '@shoelace-style/shoelace/dist/components/resize-observer/resize-observer.js';
To import this component as a React component:
import SlResizeObserver from '@shoelace-style/shoelace/dist/react/resize-observer';
Slots
Name | Description |
---|---|
(default) | One or more elements to watch for resizing. |
Learn more about using slots.
Properties
Scroll right to see the entire table
Name | Description | Reflects | Type | Default |
---|---|---|---|---|
disabled
|
Disables the observer. |
|
boolean
|
false
|
updateComplete
|
A read-only promise that resolves when the component has finished updating. |
Learn more about attributes and properties.
Events
Name | React Event | Description | Event Detail |
---|---|---|---|
sl-resize
|
onSlResize
|
Emitted when the element is resized. |
{ entries: ResizeObserverEntry[] }
|
Learn more about events.