Vue 实现消息的无缝滚动效果

Admin
Admin
Admin
52
文章
6
评论
2019年1月3日20:26:30 评论 20,422 1713字阅读5分42秒

之前有一个项目中需要实现消息向上的无缝滚动效果,今天我们就来总结一下如何使用 Vue 来实现消息的无缝滚动效果。

一、效果预览

本演示效果的框架是基于 Vue-Cli 搭建

二、template 代码

  1. <template>
  2.     <div id="box">
  3.         <ul id="content" :class="{anim:animate==true}">
  4.             <li v-for='item in items'>{{item.name}}</li>
  5.         </ul>
  6.     </div>
  7. </template>

三、script 代码

  1. <script>
  2.     export default {
  3.         data() {
  4.             return {
  5.                 animate:false,
  6.                 items:[
  7.                     {name:"No1..."},
  8.                     {name:"No2..."},
  9.                     {name:"No3..."},
  10.                     {name:"No4..."},
  11.                     {name:"No5..."},
  12.                     {name:"No6..."},
  13.                     {name:"No7..."},
  14.                     {name:"No8..."},
  15.                     {name:"No9..."},
  16.                     {name:"No10.."}
  17.                 ]
  18.             }
  19.         },
  20.         created(){
  21.             setInterval(this.scroll,1000)
  22.         },
  23.         methods: {
  24.             scroll(){
  25.                 this.animate=true;
  26.                 setTimeout(()=>{
  27.                     this.items.push(this.items[0]);  // 将数组的第一个元素添加到数组的
  28.                     this.items.shift();              // 删除数组的第一个元素
  29.                     this.animate=false;  // margin-top 为0 的时候取消过渡动画,实现无缝滚动
  30.                 },500)
  31.             }
  32.         }
  33.     }
  34. </script>

四、style 代码

  1. <style scoped>
  2.     *{
  3.         margin: 0 ;
  4.         padding: 0;
  5.     }
  6.     #box{
  7.         width200px;
  8.         height32px;
  9.         overflowhidden;
  10.         padding-left30px;
  11.         border1px solid black;
  12.         margin: 0 auto;
  13.     }
  14.     .anim{
  15.         transition: all 0.5s;
  16.         margin-top: -30px;
  17.     }
  18.     #content li{
  19.         list-stylenone;
  20.         line-height30px;
  21.         height30px;
  22.     }
  23. </style>

总结:以上全部代码就能实现消息向上的无缝滚动效果~~~

博主只是一名前端的小白,只是把自己用到的知识分享一下,要是有什么不对的地方,欢迎大家提出~~

继续阅读
Admin
  • 本文由 发表于 2019年1月3日20:26:30
  • 除非特殊声明,本站文章均为原创,转载请务必保留本文链接
Vue 中计算属性和侦听器 前端开发

Vue 中计算属性和侦听器

在 Vue 中通常我们会在模板绑定表达式,模板是用来描述视图结构的。如果模板中的表达式存在过多的逻辑性语句,那么整个模板就会变得特别的臃肿,可读性和维护性将会降低,因此为了简化逻辑,我们可以使用计算属...
浅谈 JS 中的防抖和节流操作 前端开发

浅谈 JS 中的防抖和节流操作

一般在进行窗口的 resize、scroll 等输入框内容校验等操作时,如果事件处理函数调用的频率无限制,会加重浏览器的负担,导致用户体验非常糟糕。此时我们可以采用 debounce(防抖)和 thr...
JS中的「import」和「require 」的区别 前端开发

JS中的「import」和「require 」的区别

import 和 require 是 JS 模块化编程使用的,模块化是一种将系统分离成独立功能部分的方法,一个模块是为完成一个功能的一段程序或子程序,"模块"是系统中功能单一且可替换的部分。模块化思想...
匿名

发表评论

匿名网友 填写信息

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: