|
|
@@ -11,7 +11,6 @@
|
|
|
<script lang="ts">
|
|
|
import { defineComponent, ref, onMounted } from 'vue';
|
|
|
import { debounce } from '@/utils/time';
|
|
|
-import { v4 } from 'uuid';
|
|
|
import ResizeObserver from 'resize-observer-polyfill';
|
|
|
|
|
|
export default defineComponent({
|
|
|
@@ -30,22 +29,25 @@ export default defineComponent({
|
|
|
y: 'auto',
|
|
|
})
|
|
|
|
|
|
- const uuid = v4();
|
|
|
const scrollElement = ref<HTMLDivElement>();
|
|
|
|
|
|
onMounted(() => {
|
|
|
+ const onresize = debounce((entries: ResizeObserverEntry[]) => {
|
|
|
+ for (const entry of entries) {
|
|
|
+ const { height } = entry.contentRect;
|
|
|
+ scroll.value.y = (height - props.top) + 'px';
|
|
|
+ }
|
|
|
+ }, 50);
|
|
|
+
|
|
|
// 监听元素变化
|
|
|
const resizeObserver = new ResizeObserver((entries: ResizeObserverEntry[]) => {
|
|
|
- debounce(() => {
|
|
|
- for (const entry of entries) {
|
|
|
- const { height } = entry.contentRect;
|
|
|
- scroll.value.y = (height - props.top) + 'px';
|
|
|
- }
|
|
|
- }, 50, uuid);
|
|
|
+ onresize(entries);
|
|
|
});
|
|
|
+
|
|
|
if (scrollElement.value) {
|
|
|
resizeObserver.observe(scrollElement.value);
|
|
|
}
|
|
|
+
|
|
|
emit('ready');
|
|
|
})
|
|
|
|