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 相关文章推荐
ASP 过滤数组重复数据函数(加强版)
May 31 Javascript
JSON 和 JavaScript eval使用说明
Jun 13 Javascript
常用js字符串判断方法整理
Oct 18 Javascript
JavaScript框架是什么?怎样才能叫做框架?
Jul 01 Javascript
使用Dropzone.js上传的示例代码
Oct 10 Javascript
浅谈jquery中ajax跨域提交的时候会有2次请求的问题
Nov 10 jQuery
深入理解ES6之数据解构的用法
Jan 13 Javascript
Webstorm2016使用技巧(SVN插件使用)
Oct 29 Javascript
Js Snowflake(雪花算法)生成随机ID的实现方法
Aug 26 Javascript
vue中解决微信html5原生ios虚拟键返回不刷新问题
Oct 20 Javascript
原生JavaScript实现换肤
Feb 19 Javascript
微信小程序中使用vant框架的具体步骤
Feb 18 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生成高清缩略图实例详解
2015/12/07 PHP
Cookie 注入是怎样产生的
2009/04/08 Javascript
广告切换效果(缓动切换)
2009/05/27 Javascript
getAsDataURL在Firefox7.0下无法预览本地图片的解决方法
2013/11/15 Javascript
JS判断字符串字节数并截取长度的方法
2016/03/05 Javascript
JavaScript省市区三级联动菜单效果
2016/09/21 Javascript
js HTML5多媒体影音播放
2016/10/17 Javascript
Vue.js中数据绑定的语法教程
2017/06/02 Javascript
JavaScript中var、let、const区别浅析
2018/06/24 Javascript
Bootstrap Fileinput 4.4.7文件上传实例详解
2018/07/25 Javascript
vue+webpack模拟后台数据的示例代码
2018/07/26 Javascript
vue 插件的方法代码详解
2019/06/06 Javascript
js简单遍历获取对象中的属性值的方法示例
2019/06/19 Javascript
在vue中使用cookie记住用户上次选择的实例(本次例子中为下拉框)
2020/09/11 Javascript
vue-drawer-layout实现手势滑出菜单栏
2020/11/19 Vue.js
node.js 基于 STMP 协议和 EWS 协议发送邮件
2021/02/14 Javascript
[43:49]LGD vs CHAOS 2019国际邀请赛小组赛 BO2 第一场 8.15
2019/08/16 DOTA
python原始套接字编程示例分享
2014/02/21 Python
python 自定义异常和异常捕捉的方法
2018/10/18 Python
Python设计模式之备忘录模式原理与用法详解
2019/01/15 Python
Python中生成一个指定长度的随机字符串实现示例
2019/11/06 Python
python pygame实现球球大作战
2019/11/25 Python
Jupyter Notebook打开任意文件夹操作
2020/04/14 Python
matplotlib quiver箭图绘制案例
2020/04/17 Python
如何将tensorflow训练好的模型移植到Android (MNIST手写数字识别)
2020/04/22 Python
Python操作word文档插入图片和表格的实例演示
2020/10/25 Python
Python Selenium操作Cookie的实例方法
2021/02/28 Python
智利最大的网上商店:Linio智利
2016/11/24 全球购物
类和结构的区别
2012/08/15 面试题
计算机专业个人求职信范例
2013/09/23 职场文书
国贸专业个人求职信范文
2014/01/08 职场文书
红旗团支部事迹材料
2014/01/27 职场文书
公司出差管理制度范本
2015/08/05 职场文书
Nginx服务器如何设置url链接
2021/03/31 Servers
Python实现自动玩连连看的脚本分享
2022/04/04 Python
Docker与K8s关系介绍不会Docker也可以使用K8s
2022/06/25 Servers