vueuse 中文文档

Vueuse useElementBounding Vue 获取元素的边界

Vue 类库 VueuseuseElementBounding 可以获取html元素的边界,并返回响应式对象,该对象返回了宽、高以及位置信息。

代码示例

<template>
  <!--元素对象-->
  <div ref="el" />
</template>
<script setup lang="ts">
import { ref } from 'vue'
import { useElementBounding } from '@vueuse/core'

export default {
  setup() {
    //元素对象
    const el = ref(null);
    //元素对象的Bounding信息
    const { x, y, top, right, bottom, left, width, height } = useElementBounding(el)

    return {
      el,
      /* ... */
    }
  }
}
</script>

组件用例

<UseElementBounding v-slot="{ width, left }">
  Width: {{ width }}
  Left: {{ left }}
</UseElementBounding>

在线例子

例子

类型声明

export interface UseElementBoundingOptions {
  /**
   * 组件卸载时所有值返回0
   *
   * @default true
   */
  reset?: boolean
  /**
   * 监听 window resize event
   *
   * @default true
   */
  windowResize?: boolean
  /**
   * 监听 window scroll 事件
   *
   * @default true
   */
  windowScroll?: boolean
  /**
   * 当元素更新时是否立即响应
   *
   * @default true
   */
  immediate?: boolean
}
/**
 * Reactive bounding box of an HTML element.
 *
 * @see https://vueuse.org/useElementBounding
 * @param target
 */
export declare function useElementBounding(
  target: MaybeComputedElementRef,
  options?: UseElementBoundingOptions
): {
  height: Ref<number>
  bottom: Ref<number>
  left: Ref<number>
  right: Ref<number>
  top: Ref<number>
  width: Ref<number>
  x: Ref<number>
  y: Ref<number>
  update: () => void
}
export type UseElementBoundingReturn = ReturnType<typeof useElementBounding>
Catalog
vueuse 入门 State 状态 Elements 元素 useActiveElement 焦点元素 useDocumentVisibility 是否可见 useDraggable 拖动元素 useDropZone 文件拖拽区 useElementBounding 获取元素边界 useElementSize 元素大小 useElementVisibility 元素是否可见 useIntersectionObserver 元素是否可见 useMouseInElement 鼠标hover事件 useMutationObserver 监视 DOM 变动 useParentElement 获取父元素 useResizeObserver 监控元素大小 useWindowFocus 窗口焦点状态 useWindowScroll 滚动条位置 useWindowSize 获取窗口大小 Browser 浏览器 Sensors 感应监测