Ai
1 Star 31 Fork 17

ES/JueJin

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
文件
该仓库未声明开源许可证文件(LICENSE),使用请关注具体项目描述及其代码上游依赖。
克隆/下载
resize.ts 854 Bytes
一键复制 编辑 原始数据 按行查看 历史
ES 提交于 2024-07-09 10:49 +08:00 . update Vue/Virtual/resize.ts.
import type { App } from 'vue'
const map = new WeakMap<Element, ResizeFn>()
const ob = new ResizeObserver((entries) => {
entries.forEach((item) => {
const fn = map.get(item.target)
const [{ blockSize, inlineSize }] = item.borderBoxSize
fn?.({
width: inlineSize,
height: blockSize,
size: item
})
})
})
/**
* 尺寸变化时,回调大小给你
* @param { ResizeFn } value
*/
export function resize(app: App<HTMLElement>) {
app.directive('resize', {
mounted(el, { value }) {
map.set(el, value)
ob.observe(el)
},
beforeUnmount(el) {
map.delete(el)
ob.unobserve(el)
}
})
}
export type ResizeFn = (data: {
size: ResizeObserverEntry
width: number
height: number
}) => void
Loading...
马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化
JavaScript
1
https://gitee.com/cjl2385/dig-for-gold.git
git@gitee.com:cjl2385/dig-for-gold.git
cjl2385
dig-for-gold
JueJin
master

搜索帮助