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 相关文章推荐
iis6+javascript Add an Extension File
Jun 13 Javascript
ASP.NET jQuery 实例9  通过控件hyperlink实现返回顶部效果
Feb 03 Javascript
js arguments对象应用介绍
Nov 28 Javascript
js实现快速分享功能(你的文章分享工具)
Jun 25 Javascript
jQuery中事件对象e的事件冒泡用法示例介绍
Apr 25 Javascript
jQuery实现3D文字特效的方法
Mar 10 Javascript
JS获取iframe中longdesc属性的方法
Apr 01 Javascript
微信小程序点击控件修改样式实例详解
Jul 07 Javascript
浅谈jquery fullpage 插件增加头部和版权的方法
Mar 20 jQuery
基于Vue2x的图片预览插件的示例代码
May 14 Javascript
Vue强制组件重新渲染的方法讨论
Feb 03 Javascript
5种 JavaScript 方式实现数组扁平化
Oct 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
thinkphp文件引用与分支结构用法实例
2014/11/26 PHP
php正则判断是否为合法身份证号的方法
2017/03/16 PHP
基于php双引号中访问数组元素报错的解决方法
2018/02/01 PHP
jquery动态添加删除(tr/td)
2015/02/09 Javascript
jQuery实现行文字链接提示效果的方法
2015/03/10 Javascript
jquery仅用6行代码实现滑动门效果
2015/09/07 Javascript
js实现页面跳转的五种方法推荐
2016/03/10 Javascript
javascript实现消灭星星小游戏简单版
2016/11/15 Javascript
使用 Node.js 模拟滑动拼图验证码操作的示例代码
2017/11/02 Javascript
详解vue项目中如何引入全局sass/less变量、function、mixin
2018/06/02 Javascript
微信小程序制作表格的方法
2019/02/14 Javascript
详解jenkins自动化部署vue
2019/05/14 Javascript
Python学习笔记整理3之输入输出、python eval函数
2015/12/14 Python
vscode 远程调试python的方法
2017/12/01 Python
TensorFlow实现非线性支持向量机的实现方法
2018/04/28 Python
python读取excel指定列数据并写入到新的excel方法
2018/07/10 Python
pycharm: 恢复(reset) 误删文件的方法
2018/10/22 Python
Python获取二维数组的行列数的2种方法
2020/02/11 Python
python二维图制作的实例代码
2020/12/03 Python
国际性能运动服装品牌:Dare 2b
2018/07/27 全球购物
什么是典型的软件三层结构?软件设计为什么要分层?软件分层有什么好处?
2012/03/14 面试题
质量承诺书怎么写
2014/05/24 职场文书
离婚协议书样本
2015/01/26 职场文书
介绍信的写法
2015/01/31 职场文书
合作与交流自我评价
2015/03/09 职场文书
简单的辞职信模板
2015/05/12 职场文书
小学开学典礼新闻稿
2015/07/17 职场文书
六五普法先进个人主要事迹材料
2015/11/03 职场文书
《猴王出世》教学反思
2016/02/23 职场文书
全国劳模先进事迹材料(2016精选版)
2016/02/25 职场文书
解读Vue组件注册方式
2021/05/15 Vue.js
关于Numpy之repeat、tile的用法总结
2021/06/02 Python
Mysql数据库值的添加、修改、删除及清空操作实例
2021/06/20 MySQL
用python基于appium模块开发一个自动收取能量的小助手
2021/09/25 Python
浅谈Redis跟MySQL的双写问题解决方案
2022/02/24 Redis
flex弹性布局详解
2022/03/20 HTML / CSS