vue 实现走马灯效果


Posted in Javascript onOctober 28, 2019

Part.1  问题

在写一个H5页面时遇到一个需求,头部公告需要滚动变换,需要实现一个走马灯效果

Part.2  实现

我的做法:利用 定时器 + CSS3 变换公告数组的顺序 从而实现走马灯效果

Part.3  代码

HTML

<template>
 <div class="home">
  <div class="home-box">
   <div style="background: #fdfbde">
    <div class="marquee">
     <div class="marquee_box">
      <ul class="marquee_list" :class="{marquee_top:animate}">
       <li v-for="(item, index) in announcementArr" :key="index">
        <span>{{item}}</span>
       </li>
      </ul>
     </div>
    </div>
   </div>
  </div>
 </div>
</template>

CSS

<style type="text/css">
.home {
 height: 100%;
 display: flex;
 justify-content: center;
 align-items: center;
}
.home-box {
 width: 200px;
 height: 200px;
}
.marquee {
 width: 100%;
 height: 30px;
 align-items: center;
 color: #3A3A3A;
 background-color: #fdfbde;
 display: flex;
 box-sizing: border-box;
}

.marquee_box {
 display: block;
 position: relative;
 width: 60%;
 height: 30px;
 overflow: hidden;
}

.marquee_list {
 display: block;
 position: absolute;
 top: 0;
 left: 0;
}

.marquee_top {
 transition: all 0.5s;
 margin-top: -30px
}

.marquee_list li {
 height: 30px;
 line-height: 30px;
 font-size: 12px;
 padding-left: 20px;
}

.marquee_list li span {
 padding: 0 2px;
 color: #f1543a;
}
</style>

JS

<script>
export default {
  name: 'Home',
  data() {
    return {
      announcementArr: [],
      animate: false
    }
  },
  mounted() {
    this.addAnnouncement();

    setInterval(this.showMarquee, 2000);
  },
  methods: {
    addAnnouncement: function() {
      this.announcementArr = ['测试滚动001','测试滚动002','测试滚动003','测试滚动004']
    },
    showMarquee: function() {
      this.animate = true;
      setTimeout(() => {
        this.announcementArr.push(this.announcementArr[0]);
        this.announcementArr.shift();
        this.animate = false
      }, 1000)
    }
  }
}
</script>

Part.4  注意点

在 js 中我使用的是  setInterval 中 利用 setTimeout 来调用方法

方法详解:

           setInterval  —— 会不停的调用函数

           setTimeout —— 只会执行函数一次

这么写的原因:

如果单纯的使用 setInterval 会导致页面卡死,原因与JS引擎线程有关(有兴趣的童鞋可以研究一下),setInterval  不会清除定时器队列,每次重复执行会导致定时器叠加,最终卡死网页。而 setTimeout 是自带清除定时器的

Part.5  效果

vue 实现走马灯效果

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
jQuery jqgrid 对含特殊字符json 数据的 Java 处理方法
Jan 01 Javascript
Eclipse去除js(JavaScript)验证错误
Feb 11 Javascript
jquery $(&quot;#variable&quot;) 循环改变variable的值示例
Feb 23 Javascript
jQuery给div,Span, a ,button, radio 赋值与取值
Jun 24 Javascript
JS自定义混合Mixin函数示例
Nov 26 Javascript
详解微信小程序 wx.uploadFile 的编码坑
Jan 23 Javascript
原生js实现日期计算器功能
Feb 17 Javascript
浅谈node模块与npm包管理工具
Jan 03 Javascript
小程序的上传文件接口的注意要点解析
Sep 17 Javascript
js实现小时钟效果
Mar 25 Javascript
IDEA配置jQuery, $符号不再显示黄色波浪线的问题
Oct 09 jQuery
前端canvas中物体边框和控制点的实现示例
Aug 05 Javascript
JS实现json数组排序操作实例分析
Oct 28 #Javascript
VUE渲染后端返回含有script标签的html字符串示例
Oct 28 #Javascript
vue实现在v-html的html字符串中绑定事件
Oct 28 #Javascript
vue 实现input表单元素的disabled示例
Oct 28 #Javascript
jquery validate 实现动态增加/删除验证规则操作示例
Oct 28 #jQuery
VUE解决 v-html不能触发点击事件的问题
Oct 28 #Javascript
vue 验证码界面实现点击后标灰并设置div按钮不可点击状态
Oct 28 #Javascript
You might like
php实现监控varnish缓存服务器的状态
2014/12/30 PHP
Laravel 读取 config 下的数据方法
2019/10/13 PHP
对YUI扩展的Gird组件 Part-2
2007/03/10 Javascript
Javascript 中文字符串处理额外注意事项
2009/11/15 Javascript
对table和ul实现js分页示例分享
2014/02/24 Javascript
使用JQuery库提供的扩展功能实现自定义方法
2014/09/09 Javascript
轻松创建nodejs服务器(4):路由
2014/12/18 NodeJs
jQuery+ajax实现无刷新级联菜单示例
2015/05/21 Javascript
Bootstrap模仿起筷首页效果
2016/05/09 Javascript
Bootstrap模态框案例解析
2017/03/05 Javascript
jQuery EasyUI开发技巧总结
2017/09/26 jQuery
nodejs用gulp管理前端文件方法
2018/06/24 NodeJs
基于ts的动态接口数据配置的详解
2019/12/18 Javascript
es6 super关键字的理解与应用实例分析
2020/02/15 Javascript
react基本安装与测试示例
2020/04/27 Javascript
如何在面试中手写出javascript节流和防抖函数
2020/10/22 Javascript
Nuxt的动态路由和参数校验操作
2020/11/09 Javascript
介绍Python的@property装饰器的用法
2015/04/28 Python
python实现从网络下载文件并获得文件大小及类型的方法
2015/04/28 Python
Python基于csv模块实现读取与写入csv数据的方法
2018/01/18 Python
用python处理图片之打开\显示\保存图像的方法
2018/05/04 Python
PyQt5实现类似别踩白块游戏
2019/01/24 Python
python程序 线程队列queue使用方法解析
2019/09/23 Python
python利用os模块编写文件复制功能——copy()函数用法
2020/07/13 Python
用Python自动清理系统垃圾的实现
2021/01/18 Python
利用CSS3的transition属性实现滑动效果
2015/08/05 HTML / CSS
新西兰领先的内衣店:Bendon Lingerie新西兰
2018/07/11 全球购物
财务管理专业应届毕业生求职信
2013/09/22 职场文书
简历中自我评价范文3则
2013/12/14 职场文书
旅游网创业计划书
2014/01/31 职场文书
公司感恩节活动策划书
2014/10/11 职场文书
第二批党的群众路线教育实践活动个人整改方案
2014/10/31 职场文书
2014年宣传部个人工作总结
2014/12/06 职场文书
2015年国庆节新闻稿
2015/07/18 职场文书
MySQL主从复制断开的常用修复方法
2021/04/07 MySQL
golang特有程序结构入门教程
2021/06/02 Python