使用Element中的InfiniteScroll无限滚动并自定义滚动条样式

一、实现InfiniteScroll无限滚动的简单代码

<template>
  <div class="bg">
    <div class="infinite-list"  style="overflow:auto"> 
        <ul class="infinite-list-item">
          内容
        </ul>
        <ul class="infinite-list-item">
          内容
        </ul>
        <ul class="infinite-list-item">
          内容
        </ul>
        <ul class="infinite-list-item">
          内容
        </ul>
    </div>
  </div>
</template>

<style lang="less" scoped>
  .bg{
    height: 1279px;
    background-color: antiquewhite;
    .infinite-list{
      height: 200px;
      background-color: paleturquoise;
      .infinite-list-item{
        height: 100px;
          background-color: pink;
      }
    }
  }
  </style>

需要注意的是,只有

<ul class="infinite-list-item">

          内容

 </ul>

所有内容盒子的总高度超出了外侧的<div class="infinite-list"  style="overflow:auto"></div>,才会出现滚动效果。

效果如图:

除此之外还有以下属性可供使用

参数说明类型可选值默认值
infinite-scroll-disabled是否禁用boolean-false
infinite-scroll-delay节流时延,单位为msnumber-200
infinite-scroll-distance触发加载的距离阈值,单位为pxnumber-0
infinite-scroll-immediate是否立即执行加载方法,以防初始状态下内容无法撑满容器。boolean-true

二、实现自定义滚动条样式的代码

::-webkit-scrollbar {
  width: 8px; 
}
::-webkit-scrollbar-thumb {
  position: absolute;
  margin-left: 46px;
  background-color: #2272d5;
  border-radius: 3px;
}

效果如图:

  • 11
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
InfiniteScrollElement 组件库的一个组件,它可以实现在滚动到页面底部时自动加载更多数据的功能,常用于展示长列表或分页数据。 在 Vue 实例使用 InfiniteScroll 组件,需要先在组件引入它: ```js import { InfiniteScroll } from 'element-ui'; export default { directives: { InfiniteScroll }, // ... } ``` 然后,将 InfiniteScroll 组件作为一个自定义指令绑定到需要实现无限滚动的元素上。例如,将其绑定到一个包含数据列表的 `ul` 元素上: ```html <ul v-infinite-scroll="loadMore" infinite-scroll-disabled="loading" infinite-scroll-distance="10"> <li v-for="item in list" :key="item.id">{{ item.text }}</li> </ul> ``` 在这个例子,`v-infinite-scroll` 指令绑定了一个名为 `loadMore` 的方法,它会在滚动到页面底部时被触发,用于加载更多数据。`infinite-scroll-disabled` 属性指定了一个布尔值,用于控制是否禁用无限滚动功能。`infinite-scroll-distance` 属性指定了一个数字,表示滚动到页面底部的距离阈值,当滚动距离小于该值时,不触发 `loadMore` 方法。 最后,在 Vue 实例定义 `loadMore` 方法,用于加载更多数据。例如,可以在该方法向服务器发送 AJAX 请求,获取更多数据并将其添加到数据列表: ```js export default { directives: { InfiniteScroll }, data() { return { list: [], // 数据列表 loading: false, // 是否正在加载数据 page: 1, // 当前页码 pageSize: 10, // 每页数据量 }; }, methods: { async loadMore() { if (this.loading) return; // 如果正在加载数据,则不执行 this.loading = true; // 标记为正在加载数据 try { const res = await axios.get('/api/data', { params: { page: this.page + 1, pageSize: this.pageSize, }, }); this.list.push(...res.data); // 将新数据添加到列表 this.page += 1; // 更新页码 } catch (err) { console.error(err); } this.loading = false; // 标记为加载数据完成 }, }, }; ``` 这样,当用户滚动到页面底部时,就会触发 `loadMore` 方法,从服务器获取更多数据并将其添加到列表,实现无限滚动的效果。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值