当前位置:首页 > 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. 在组件中使用:

    vue实现名单滚动

    
    <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 slot实现

vue slot实现

vue slot 的实现方法 在 Vue 中,slot 是一种内容分发机制,允许父组件向子组件传递模板内容。以下是几种常见的 slot 实现方式: 默认 slot 默认 slot 是最基础的 slo…

vue实现复选

vue实现复选

Vue 实现复选框 在 Vue 中实现复选框可以通过 v-model 指令绑定数据,同时结合 input 元素的 type="checkbox" 属性来实现。以下是几种常见的实现方式: 单个复选框…

vue翻页实现

vue翻页实现

Vue翻页实现方法 基础分页组件实现 使用v-for和计算属性实现基础分页逻辑: <template> <div> <ul> <li…

vue实现布局

vue实现布局

Vue 实现布局方法 Vue 提供了多种方式实现页面布局,可以通过组件化、CSS 框架或自定义样式完成。以下是几种常见方法: 使用 CSS Flexbox 或 Grid 通过 Vue 单文件组件结合…

vue实现slidetoggle

vue实现slidetoggle

Vue 实现 SlideToggle 效果 SlideToggle 是一种常见的交互效果,元素以滑动方式展开或收起。以下是几种实现方法: 使用 CSS Transition 和 v-show 通过…

vue实现双向

vue实现双向

Vue 实现双向绑定的方法 Vue 的双向绑定主要通过 v-model 指令实现,它结合了数据绑定和事件监听,适用于表单元素(如 input、select、textarea 等)。以下是几种常见的实现…