vue实现无缝滚动功能

发现element和iview都没问无缝滚动的特效,只有走马灯的,最近需要用到无缝滚动的特效,就在npm上找了一个插件

vue-seamless-scroll

我是在nuxt里用的

1.安装

yarn add vue-seamless-scroll

2.在plugins里新建vue-seamless-scroll.js文件

import Vue from 'vue'
import vueSeamlessScroll from 'vue-seamless-scroll'
export default () => {
  Vue.use(vueSeamlessScroll)
}

 

3.在nuxt.config.js里引用(注意:此处需要将ssr设为false,否则会报错)

  plugins: [
    '@/plugins/element-ui',
    '@/plugins/v-viewer.js',
    { src: '@/plugins/vue-seamless-scroll.js', ssr: false}
  ],

4.具体实现代码

html:

 <vue-seamless-scroll
      :data="dataArr"
      :class-option="initOption"
      style="height: 100px; overflow: hidden;">
      <ul>
        <li
          v-for="(item,index) in dataArr"
          :key="index">
          {{ item.name }}
        </li>
      </ul>
    </vue-seamless-scroll>

js:

 computed: {
      initOption () {
        return {
          hoverStop: true, //鼠标移入时是否停止滚动
          singleHeight: 0,
          waitTime: 0,
          step: 0.2, // 滚动速度,越大越快
        }
      }
    },
step: 0.3 //滚动速度,数值越大速度滚动越快
limitMoveNum: 5, //开始无缝滚动的数据量,可根据需滚动的内容进行配置
hoverStop: true, //是否开启鼠标悬停stop
direction: 1,//滚动方向;0向下 1向上 2向左 3向右
openWatch: true,//开启数据实时监控刷新dom
singleHeight: 0, //单个高度(默认值0是无缝不停止的滚动) direction值为0、1时即下、上singleWidth: 0, //单个宽度(默认值0是无缝不停止的滚动) direction值为2、3时即左、右
waitTime: 1000 // 单个停止的时间(默认值1000ms)

更多属性移步:vue-seamless-scroll - npm

无缝滚动效果如图:

  • 3
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
Vue.js是一种流行的JavaScript框架,用于构建用户界面。要实现无缝滚动效果,可以使用Vue.js的transition组件和CSS动画来实现。 首先,你需要在Vue组件中定义一个包含滚动内容的容器,并设置其样式为`overflow: hidden`,以隐藏超出容器的内容。然后,在容器内部创建一个滚动元素,设置其样式为`white-space: nowrap`,以使内容水平排列。 接下来,你可以使用Vue的transition组件来添加过渡效果。在滚动元素上添加一个`v-if`指令,根据条件来决定是否显示滚动元素。当需要滚动时,将滚动元素的内容复制一份,并将其追加到滚动元素的末尾,形成一个无限循环的效果。 然后,你可以使用CSS动画来实现滚动效果。通过给滚动元素添加一个`transform`属性,并使用`translateX`函数来实现水平位移。同时,使用`animation`属性来定义动画的持续时间、缓动函数等。 最后,在Vue组件中使用定时器或者其他方式来触发滚动效果。可以通过改滚动元素的`transform`属性的值来实现滚动效果。 下面是一个简单的示例代码: ```html <template> <div class="scroll-container"> <div class="scroll-content" v-if="isScrolling"> {{ content }} </div> </div> </template> <script> export default { data() { return { content: '这是滚动的内容', isScrolling: true }; }, mounted() { setInterval(() => { // 每隔一段时间改变滚动元素的transform属性值,实现滚动效果 }, 3000); } }; </script> <style> .scroll-container { width: 300px; height: 200px; overflow: hidden; } .scroll-content { white-space: nowrap; animation: scrollAnimation 10s linear infinite; } @keyframes scrollAnimation { 0% { transform: translateX(0); } 100% { transform: translateX(-100%); } } </style> ```

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值