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 相关文章推荐
JavaScript高级程序设计 事件学习笔记
Sep 10 Javascript
ajax处理php返回json数据的实例代码
Jan 24 Javascript
js兼容的placeholder属性详解
Aug 18 Javascript
jQuery中scrollLeft()方法用法实例
Jan 16 Javascript
JS三级可折叠菜单实现方法
Feb 29 Javascript
JS简单实现仿百度控制台输出信息效果
Sep 04 Javascript
Javascript面试经典套路reduce函数查重
Mar 23 Javascript
axios发送post请求,提交图片类型表单数据方法
Mar 16 Javascript
解决layui使用layui-icon出现默认图标的问题
Sep 11 Javascript
vue实现直播间点赞飘心效果的示例代码
Sep 20 Javascript
Vue通过配置WebSocket并实现群聊功能
Dec 31 Javascript
微信小程序点击生成朋友圈分享图(遇到的坑)
Jun 17 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
重置版战役片段
2020/04/09 魔兽争霸
php实现的zip文件内容比较类
2014/09/24 PHP
php函数serialize()与unserialize()用法实例
2014/11/06 PHP
PHP SPL标准库之数据结构堆(SplHeap)简单使用实例
2015/05/12 PHP
PHP PDOStatement::getAttribute讲解
2019/02/01 PHP
js中字符替换函数String.replace()使用技巧
2011/08/14 Javascript
IE与FF下javascript获取网页及窗口大小的区别详解
2014/01/14 Javascript
js实现正方形颜色从下往上升的效果
2014/08/04 Javascript
浅析angularJS中的ui-router和ng-grid模块
2016/05/20 Javascript
js中scrollTop()方法和scroll()方法用法示例
2016/10/03 Javascript
Bootstrap Table使用方法解析
2016/10/19 Javascript
微信小程序 实战实例开发流程详细介绍
2017/01/05 Javascript
简单好用的nodejs 爬虫框架分享
2017/03/26 NodeJs
AngularJS封装$http.post()实例详解
2017/05/06 Javascript
vue内置指令详解
2018/04/03 Javascript
浅析vue 函数配置项watch及函数 $watch 源码分享
2018/11/22 Javascript
JS实现求5的阶乘示例
2019/01/21 Javascript
这15个Vue指令,让你的项目开发爽到爆
2019/10/11 Javascript
解决在Vue中使用axios用form表单出现的问题
2019/10/30 Javascript
eslint+prettier统一代码风格的实现方法
2020/07/22 Javascript
python实现字符串连接的三种方法及其效率、适用场景详解
2017/01/13 Python
python中reload(module)的用法示例详解
2017/09/15 Python
基于numpy中数组元素的切片复制方法
2018/11/15 Python
浅谈python中统计计数的几种方法和Counter详解
2019/11/07 Python
详解Pycharm出现out of memory的终极解决方法
2020/03/03 Python
python GUI库图形界面开发之PyQt5布局控件QGridLayout详细使用方法与实例
2020/03/06 Python
HTML5轻松实现全屏视频背景的示例
2018/04/23 HTML / CSS
法国时尚品牌乐都特瑞士站:La Redoute瑞士
2016/09/05 全球购物
Yves Rocher伊夫·黎雪美国官网:法国始创植物美肌1959
2019/01/09 全球购物
机修工岗位职责
2013/11/24 职场文书
求职简历推荐信范文
2013/12/02 职场文书
高中地理教学反思
2014/01/29 职场文书
求职信模板标准格式范文
2014/02/23 职场文书
预备党员的自我评价
2014/03/12 职场文书
党员作风建设整改方案
2014/10/27 职场文书
win10拖拽文件时崩溃怎么解决?win10文件不能拖拽问题解决方法
2022/08/14 数码科技