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 相关文章推荐
IE6下focus与blur错乱的解决方案
Jul 31 Javascript
jsonp原理及使用
Oct 28 Javascript
javascript实现时间格式输出FormatDate函数
Jan 13 Javascript
javascript随机显示背景图片的方法
Jun 18 Javascript
jquery解析json格式数据的方法(对象、字符串)
Nov 24 Javascript
获取JS中网页各种高宽与位置的方法总结
Jul 27 Javascript
Angularjs在初始化未完毕时出现闪烁问题的解决方法分析
Aug 05 Javascript
JS编写函数实现对身份证号码最后一位的验证功能
Dec 29 Javascript
Angular CLI 安装和使用教程
Sep 13 Javascript
分析JS单线程异步io回调的特性
Dec 01 Javascript
利用node.js如何创建子进程详解
Dec 09 Javascript
JS实现利用两个队列表示一个栈的方法
Dec 13 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调用mysql存储过程
2007/02/14 PHP
php下利用curl判断远程文件是否存在的实现代码
2011/10/08 PHP
php数组函数序列之array_values() 获取数组元素值的函数与方法
2011/10/30 PHP
PHP实现生成透明背景的PNG缩略图函数分享
2014/07/08 PHP
PHP实现ASCII码与字符串相互转换的方法
2017/04/29 PHP
php实现的中秋博饼游戏之绘制骰子图案功能示例
2017/11/06 PHP
PHP实现数据库的增删查改功能及完整代码
2018/04/18 PHP
ThinkPHP3.2框架自定义配置和加载用法示例
2018/06/14 PHP
php获取是星期几的的一些常用姿势
2019/12/15 PHP
JS实现下拉框的动态添加(附效果)
2013/04/03 Javascript
javascript中encodeURI和decodeURI方法使用介绍
2013/05/06 Javascript
常用的几段javascript代码分享
2014/03/25 Javascript
探寻Javascript执行效率问题
2014/11/12 Javascript
jQuery EasyUI Pagination实现分页的常用方法
2016/05/21 Javascript
jQuery实现表格奇偶行显示不同背景色 就这么简单
2017/03/13 Javascript
微信小程序 跳转传参数与传对象详解及实例代码
2017/03/14 Javascript
详解JavaScript 中 if / if...else...替换方式
2018/07/15 Javascript
jQuery实现table表格信息的展开和缩小功能示例
2018/07/21 jQuery
vue-cli3.0 脚手架搭建项目的过程详解
2018/10/19 Javascript
JS实现星星海特效
2019/12/24 Javascript
使用python实现rsa算法代码
2016/02/17 Python
Python实现压缩和解压缩ZIP文件的方法分析
2017/09/28 Python
Python3用tkinter和PIL实现看图工具
2018/06/21 Python
解决python3 requests headers参数不能有中文的问题
2019/08/21 Python
python安装scipy的步骤解析
2019/09/28 Python
python实现ftp文件传输系统(案例分析)
2020/03/20 Python
详解pytorch中squeeze()和unsqueeze()函数介绍
2020/09/03 Python
Python Selenium操作Cookie的实例方法
2021/02/28 Python
写给妈妈的道歉信
2014/01/11 职场文书
同学聚会欢迎辞
2014/01/14 职场文书
师德师风个人反思
2014/04/28 职场文书
2014年学生管理工作总结
2014/12/20 职场文书
《法国号》教学反思
2016/02/22 职场文书
如何让vue长列表快速加载
2021/03/29 Vue.js
Ajax实现异步加载数据
2021/11/17 Javascript
Java 常见的限流算法详细分析并实现
2022/04/07 Java/Android