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 相关文章推荐
jValidate 基于jQuery的表单验证插件
Dec 12 Javascript
jquery文字上下滚动的实现方法
Mar 22 Javascript
jQuery学习笔记(2)--用jquery实现各种模态提示框代码及项目构架
Apr 08 Javascript
分享我的jquery实现下拉菜单心的
Nov 29 Javascript
基于Bootstrap的后台管理面板 Bootstrap Metro Dashboard
Jun 17 Javascript
第一次接触神奇的前端框架vue.js
Dec 01 Javascript
jQuery EasyUI ProgressBar进度条组件
Feb 28 Javascript
Bootstrap 3浏览器兼容性问题及解决方案
Apr 11 Javascript
Angular项目中$scope.$apply()方法的使用详解
Jul 26 Javascript
基于webpack4.X从零搭建React脚手架的方法步骤
Dec 23 Javascript
vue2 v-model/v-text 中使用过滤器的方法示例
May 09 Javascript
JS脚本实现定时到网站上签到/签退功能
Apr 22 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类
2006/10/09 PHP
投票管理程序
2006/10/09 PHP
一个PHP日历程序
2006/12/06 PHP
php强制文件下载而非在浏览器打开的自定义函数分享
2014/05/08 PHP
php单文件版在线代码编辑器
2015/03/12 PHP
如何使用纯PHP实现定时器任务(Timer)
2015/07/31 PHP
用JS实现一个页面多个css样式实现
2008/05/29 Javascript
jquery将一个表单序列化为一个对象的方法
2014/01/03 Javascript
12306验证码破解思路分享
2015/03/25 Javascript
JavaScript实现的简单拖拽效果
2015/06/01 Javascript
JavaScript从数组的indexOf()深入之Object的Property机制
2016/05/11 Javascript
javascript验证香港身份证的格式或真实性
2017/02/07 Javascript
JS使用cookie实现只出现一次的广告代码效果
2017/04/22 Javascript
理解javascript async的用法
2017/08/22 Javascript
vuex的module模块用法示例
2018/11/12 Javascript
原生js实现随机点餐效果
2019/12/10 Javascript
[00:34]拔城逐梦,热血永恒!2020(秋)完美世界城市挑战赛报名开启
2020/10/09 DOTA
Python脚本实现下载合并SAE日志
2015/02/10 Python
Python实现的朴素贝叶斯分类器示例
2018/01/06 Python
Python使用一行代码获取上个月是几月
2018/08/30 Python
Python设计模式之建造者模式实例详解
2019/01/17 Python
Python数据库小程序源代码
2019/09/15 Python
pytorch实现Tensor变量之间的转换
2020/02/17 Python
浅谈Selenium 控制浏览器的常用方法
2020/12/04 Python
荷兰网上鞋店:Ziengs.nl
2017/01/02 全球购物
八年级历史教学反思
2014/01/10 职场文书
如何写好优秀的创业计划书
2014/01/30 职场文书
建筑总经理岗位职责
2014/02/02 职场文书
校园学雷锋活动月总结
2014/03/09 职场文书
党支部公开承诺践诺书
2014/03/28 职场文书
2014年班级工作总结
2014/11/14 职场文书
基层工作经历证明
2015/06/19 职场文书
摘录式读书笔记
2015/07/01 职场文书
Nginx+Tomcat负载均衡多实例详解
2022/04/11 Servers
详解SQL的窗口函数
2022/04/21 Oracle
Java 定时任务技术趋势简介
2022/05/04 Java/Android