Show newer

A Vue3 HTMLElement Resize observer hook:

import { ref, watch, Ref } from 'vue'
import ResizeObserver from 'resize-observer-polyfill'

export interface UseResizeObserver {
  width: number
  height: number
  top: number
  left: number
  element?: Element
}

export default function (elementRef: Ref<Element | null>) {
  const state: Ref<UseResizeObserver> = ref({
    width: NaN,
    height: NaN,
    top: NaN,
    left: NaN,
    element: undefined,
  })

  const ro = new ResizeObserver((entries, observer) => {
    for (const entry of entries) {
      const { left, top, width, height } = entry.contentRect

      state.value = { width, height, top, left, element: entry.target }
    }
  })

  watch(elementRef, (element) => {
    if (element) ro.observe(element)
  })

  return state
}

TODO: add method of watch all inputs in one observer, maybe should use a constructor

王小美 boosted
王小美 boosted
王小美 boosted

你长毛象,真的很喜欢截图普通网友发言,然后发泄自己的恨意,进行小群体狂欢。

王小美 boosted

为什么Mac有时候回车键会摁不动啊??

王小美 boosted
王小美 boosted
王小美 boosted
王小美 boosted

中国中央电视台1998年启用的双线CCTV台标,是日本设计师铃木智己设计的。

weibo.com/3911558393/JdMgezMzi

原神这期的珍珠纪行要多少天能打满呀?只剩34天了我才1级开始,还有没有必要买的?

Show older
小森林

每个人都有属于自己的一片森林,也许我们从来不曾走过,但它一直在那里,总会在那里。迷失的人迷失了,相逢的人会再相逢。愿这里,成为属于你的小森林。