vue或css动画实现列表向上无缝滚动

html

<div class="b_list">
  <div class="b_scroll">
    <div class="b_item" v-for="(ac,acindex) in activityList" :key="acindex">
      <!-- 循环的内容 -->
    </div>
  </div>
</div>

css:使用纯css动画实现数据向上滚动 

@keyframes scrollTop {
  0% {
    -webkit-transform: translate3d(0, 0, 0);
    transform: translate3d(0, 0, 0);
  }
  100% {
    -webkit-transform: translate3d(0, -300px, 0);
    transform: translate3d(0, -300px, 0);
  }
}
.b_list{
  height: 19rem;
  overflow: hidden;
}
 
.b_scroll{
   -webkit-animation: 10s scrollTop linear infinite normal;
   animation: 10s scrollTop linear infinite normal;
}
 

二、使用scrollTop方法向上滚动

scrolltolowerOne() {
                this.breakfastScrollInterval = setInterval(() => {
                    let div = document.getElementById('breakfastList');
                    if (div) {
                        if (div.scrollTop + div.offsetHeight >= div.scrollHeight) {
                            this.breakfastScrollTop = 0;
                        } else {
                            this.breakfastScrollTop += 1;
                        }
                        div.scrollTop = this.breakfastScrollTop;
                    } else {
                        clearInterval(this.breakfastScrollInterval);
                        this.breakfastScrollInterval = null;
                    }
                }, 50)
            }, 

Vue实现列表上下无缝滚动可以通过多种方式实现,其中一种常见的方法是使用CSS动画和JavaScript来控制列表滚动。以下是一个简单的实现步骤: 1. **HTML结构**: 创建一个包含列表项的容器,并复制一份列表项用于无缝滚动。 ```html <div class="scroll-container" ref="scrollContainer"> <ul class="scroll-list" :style="{ marginTop: marginTop + 'px' }"> <li v-for="item in items" :key="item.id">{{ item.name }}</li> <li v-for="item in items" :key="item.id">{{ item.name }}</li> </ul> </div> ``` 2. **CSS样式**: 设置容器和列表的样式,确保列表可以垂直滚动。 ```css .scroll-container { width: 200px; height: 300px; overflow: hidden; border: 1px solid #ccc; } .scroll-list { list-style: none; padding: 0; margin: 0; } ``` 3. **Vue组件逻辑**: 使用Vue的`ref`和`setInterval`来控制滚动。 ```javascript export default { data() { return { items: [ { id: 1, name: 'Item 1' }, { id: 2, name: 'Item 2' }, { id: 3, name: 'Item 3' }, { id: 4, name: 'Item 4' }, { id: 5, name: 'Item 5' }, ], marginTop: 0, scrollSpeed: 2, // 滚动速度 scrollInterval: null, }; }, mounted() { this.startScroll(); }, methods: { startScroll() { this.scrollInterval = setInterval(() => { this.marginTop -= this.scrollSpeed; if (this.marginTop <= -this.$refs.scrollContainer.clientHeight) { this.marginTop = 0; } }, 20); }, stopScroll() { clearInterval(this.scrollInterval); }, }, beforeDestroy() { this.stopScroll(); }, }; ``` 这个实现中,列表项会在容器中不断向上滚动,当第一份列表项完全滚动出可视区域时,重新将`marginTop`设置为0,从而实现无缝滚动
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

韩召华

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值