vue3 ant-design-vue list 组件滚动,动态滚动一项到头部的详细代码
时间: 2024-12-25 18:31:28 浏览: 13
在 Vue3 中,使用 Ant Design Vue (ant-design-vue) 的 List 组件并实现在滚动时动态将某一项滚动到顶部,你可以利用 Vue 的 `ref` 和 `mounted` 生命周期钩子以及 `scrollIntoView` 方法。下面是一个简单的示例:
首先,在组件模板中引入需要滚动的 Item 元素,并给它一个唯一的 key,以便于引用:
```html
<template>
<a-divider type="vertical" />
<div ref="listRef">
<ul class="list" v-for="(item, index) in items" :key="index">
<li @click="scrollToItem(item)" :class="{ active: item === activeItem }">{{ item.title }}</li>
</ul>
</div>
</template>
```
然后,在 script 部分添加 `ref` 变量、数据和滚动到顶部的方法:
```javascript
<script setup>
import { ref, onMounted } from 'vue';
const listRef = ref(null);
let activeItem = ref(null); // 假设activeItem是你需要滚动的Item
// 滚动到指定项的函数
function scrollToItem(item) {
if (listRef.value) {
const itemElement = listRef.value.querySelector(`li[data-key="${item.key}"]`);
if (itemElement) {
itemElement.scrollIntoView({ behavior: 'smooth', block: 'start' });
activeItem.value = item;
}
}
}
onMounted(() => {
// 初始化滚动
if (listRef.value && activeItem.value) {
scrollToItem(activeItem.value);
}
});
</script>
```
在这个例子中,当你点击列表中的任一项目时,`scrollToItem` 方法会滚动到该元素,并更新 `activeItem`。如果 `mounted` 生命周期内已经有一个活跃项,则会立即滚动。
注意,`scrollIntoView` 默认行为是平滑滚动 (`behavior: 'smooth'`),可以根据需求调整。
阅读全文