Category | Elements |
---|---|
Export Size | 950 B |
Last Changed | 3 months ago |
Reactive size of an HTML element. ResizeObserver MDN
<template> <div ref="el"> Height: {{ height }} Width: {{ width }} </div> </template> <script> import { ref } from 'vue' import { useElementSize } from '@vueuse/core' export default { setup() { const el = ref(null) const { width, height } = useElementSize(el) return { el, width, height, } } } </script>
This function also provides a renderless component version via the
@vueuse/components
package. Learn more about the usage.
<UseElementSize v-slot="{ width, height }"> Width: {{ width }} Height: {{ height }} </UseElementSize>
This function also provides a directive version via the
@vueuse/components
package. Learn more about the usage.
<script setup lang="ts"> import { vElementSize } from '@vueuse/components' function onResize({ width, height }: { width: number; height: number }) { console.log(width, height) } </script> <template> <textarea v-element-size="onResize" /> <!-- with options --> <textarea v-element-size="[onResize, {width:100,height:100}, {'box':'content-box'} ]" /> </template>
export interface ElementSize { width: number height: number } /** * Reactive size of an HTML element. * * @see https://vueuse.org/useElementSize * @param target * @param callback * @param options */ export declare function useElementSize( target: MaybeComputedElementRef, initialSize?: ElementSize, options?: UseResizeObserverOptions ): { width: Ref<number> height: Ref<number> } export type UseElementSizeReturn = ReturnType<typeof useElementSize>
© 2019-present Anthony Fu
Licensed under the MIT License.
https://vueuse.org/core/useElementSize/