实现点击分页器,平滑到对应的dom组件
主要用到的方法:Element.scrollIntoView() 方法让当前的元素滚动到浏览器窗口的可视区域内。
参考网址:https://developer.mozilla.org/zh-CN/docs/Web/API/Element/scrollIntoView
效果图:

首先封装Pagination组件:
因为子组件不能直接修改父组件传递过来的值currentPage,所以先赋值给currentPage1.
<template>
<div class="pagination">
<el-pagination
@current-change="handleCurrentChange"
:current-page.sync="currentPage1"
:pageSize="pageSize"
layout="total, prev, pager, next"
:total="total"
></el-pagination>
</div>
</template>
<script>
export default {
props: ['total', 'currentPage', 'pageSize'],
data() {
return {
currentPage1: this.currentPage
};
},
methods: {
handleCurrentChange(val) {
// console.log(`当前页: ${val}`);
this.$emit('changePage', val);
}
}
};
</script>
<style lang="scss" scoped>
</style>
当点击不同的分页时,父组件将监听组件触发的changePage事件。
<Pagination :total="total" :page-size="PAGE_SIZE" :current-page="currentPage" @changePage="handlePage" ></Pagination>
// 分页只重新获取歌单 handlePage(val) { console.log(val); this.currentPage = val; this.getPlaylists(); scrollInto(this.$refs.playlists); }
scrollInto:滑到对应的DOM元素上
export function scrollInto(dom) { dom.scrollIntoView({ behavior: 'smooth' }); }