1234567891011121314151617181920212223 |
- import {App} from "vue/dist/vue";
- const map = new WeakMap()
- const ob = new ResizeObserver((entries) => {
- for(const entry of entries){
- const handler = map.get(entry.target);
- handler && handler({
- width: entry.borderBoxSize[0].inlineSize,
- height: entry.borderBoxSize[0].blockSize
- });
- }
- });
- export function resizeObDirective(app: App){
- app.directive('resizeOb', {
- mounted(el,binding) {
- map.set(el,binding.value);
- ob.observe(el); // 监听目标元素
- },
- unmounted(el) {
- ob.unobserve(el); // 停止监听
- },
- })
- }
|