当前位置:首页 > VUE

vue实现名单滚动

2026-02-22 19:08:30VUE

Vue 实现名单滚动效果

实现名单滚动可以通过多种方式完成,常见的有使用 CSS 动画、JavaScript 定时器或第三方库。以下是几种实现方法:

使用 CSS 动画实现平滑滚动

通过 CSS @keyframestransform 实现无限滚动效果:

<template>
  <div class="scroll-container">
    <div class="scroll-content">
      <div v-for="(item, index) in list" :key="index" class="scroll-item">
        {{ item }}
      </div>
    </div>
  </div>
</template>

<script>
export default {
  data() {
    return {
      list: ['张三', '李四', '王五', '赵六', '钱七']
    };
  }
};
</script>

<style>
.scroll-container {
  height: 200px;
  overflow: hidden;
}

.scroll-content {
  animation: scroll 10s linear infinite;
}

@keyframes scroll {
  0% {
    transform: translateY(0);
  }
  100% {
    transform: translateY(-100%);
  }
}

.scroll-item {
  height: 40px;
  line-height: 40px;
}
</style>

使用 JavaScript 定时器动态更新

通过 setInterval 动态修改数据实现滚动:

<template>
  <div class="scroll-container">
    <div v-for="(item, index) in visibleList" :key="index" class="scroll-item">
      {{ item }}
    </div>
  </div>
</template>

<script>
export default {
  data() {
    return {
      list: ['张三', '李四', '王五', '赵六', '钱七'],
      visibleList: [],
      currentIndex: 0
    };
  },
  mounted() {
    this.updateVisibleList();
    setInterval(() => {
      this.currentIndex = (this.currentIndex + 1) % this.list.length;
      this.updateVisibleList();
    }, 1000);
  },
  methods: {
    updateVisibleList() {
      this.visibleList = [
        ...this.list.slice(this.currentIndex),
        ...this.list.slice(0, this.currentIndex)
      ].slice(0, 3);
    }
  }
};
</script>

使用第三方库(如 vue-seamless-scroll)

对于更复杂的需求,可以使用专门为 Vue 设计的滚动库:

  1. 安装依赖:

    npm install vue-seamless-scroll
  2. 在组件中使用:

    
    <template>
    <vue-seamless-scroll
     :data="list"
     class="scroll-container"
     :class-option="scrollOption"
    >
     <div v-for="(item, index) in list" :key="index" class="scroll-item">
       {{ item }}
     </div>
    </vue-seamless-scroll>
    </template>
import vueSeamlessScroll from 'vue-seamless-scroll'; export default { components: { vueSeamlessScroll }, data() { return { list: ['张三', '李四', '王五', '赵六', '钱七'], scrollOption: { direction: 1, limitMoveNum: 3, step: 1, hoverStop: true, singleHeight: 40, waitTime: 1000 } }; } }; ```

注意事项

  • 对于大量数据,建议使用虚拟滚动技术(如 vue-virtual-scroller)优化性能
  • 移动端注意触摸事件的兼容性处理
  • 无限滚动时注意内存管理,避免数据不断堆积

vue实现名单滚动

标签: 名单vue
分享给朋友:

相关文章

在线脑图 vue 实现

在线脑图 vue 实现

在线脑图 Vue 实现方案 使用开源库实现 推荐使用 mind-elixir 或 jsmind 这类开源库,它们专为脑图设计且支持 Vue 集成。 安装依赖: npm install mind…

eventbus vue实现

eventbus vue实现

EventBus 实现原理 EventBus 是一种发布/订阅模式,用于 Vue 组件间的通信。核心是通过一个中央事件总线管理事件监听和触发。 创建 EventBus 在 Vue 项目中创建一个独…

vue实现贴图

vue实现贴图

Vue 实现贴图功能 在Vue中实现贴图功能通常涉及将图片动态添加到指定位置或元素上。以下是几种常见实现方式: 使用v-bind动态绑定图片 通过数据驱动的方式动态更换图片源: <tem…

vue实现后退

vue实现后退

Vue 实现后退功能的方法 在 Vue 中实现后退功能通常可以通过以下几种方式完成,具体取决于应用场景和需求。 使用 window.history API 通过原生 JavaScript 的 win…

vue实现slider

vue实现slider

Vue 实现 Slider 组件 使用 Vue 实现 Slider 组件可以通过原生开发或借助第三方库。以下是两种常见方法: 原生实现 Slider 创建一个基础的 Slider 组件,通过 v-m…

vue实现socket

vue实现socket

Vue 中实现 WebSocket 通信 在 Vue 项目中实现 WebSocket 通信可以通过原生 WebSocket API 或第三方库(如 socket.io-client)完成。以下是两种常…