vue实现文字横向无缝走马灯组件效果的实例代码


Posted in Javascript onApril 09, 2019

marquee标签已经废弃了,只能手动实现文字走马灯样式

基于vue组件开发

<template>
 <div class="wrap"> // 外框,固定宽度
  <div id="box"> // 内部滚动框
   <div id="marquee">{{text}}</div> //展示的文字
   <div id="copy"></div> // 文字副本,为了实现无缝滚动
  </div>
  <div id="node">{{text}}</div> //为了获取text实际宽度
 </div>
</template>
<script>
export default {
 name: 'Marquee',
 props: ['lists'], // 父组件传入数据, 数组形式 [ "连雨不知春去","一晴方觉夏深"]
 data () {
  return {
   text: '' // 数组文字转化后的字符串
  }
 },
 methods: {
  move () {
// 获取文字text 的计算后宽度 (由于overflow的存在,直接获取不到,需要独立的node计算)
   let width = document.getElementById('node').getBoundingClientRect().width 
   let box = document.getElementById('box')
   let copy = document.getElementById('copy')
   copy.innerText = this.text // 文字副本填充
   let distance = 0 // 位移距离
//设置位移
   setInterval(function () { 
    distance = distance - 1
 // 如果位移超过文字宽度,则回到起点
    if (-distance >= width) {
     distance = 16
    }
    box.style.transform = 'translateX(' + distance + 'px)'
   }, 20) 
  }
 },
// 把父组件传入的arr转化成字符串
 mounted: function () {
  for (let i = 0; i < this.lists.length; i++) {
   this.text += ' ' + this.lists[i]
  }
 },
// 更新的时候运动
 updated: function () {
  this.move()
 }
}
</script>
<style scoped>
// 限制外框宽度,隐藏多余的部分
.wrap {
 overflow: hidden;
}
// 移动框宽度设置
#box {
 width: 80000%;
}
// 文字一行显示
#box div {
 float: left;
}
// 设置前后间隔
#marquee {
  margin: 0 16px 0 0;
}
// 获取宽度的节点,隐藏掉
#node {
 position: absolute;
 z-index: -999;
 top: -999999px;
}
</style>

父组件引入 import myMarquee from './my-marquee

使用并传参: <my-marquee :lists="lists"></my-marquee>

参数:

data (){
 return {
  lists: [
    '连雨不知春去',
    '一晴方觉夏深'
  ]
 }
}

总结

以上所述是小编给大家介绍的vue实现文字横向无缝走马灯组件效果的实例代码,希望对大家有所帮助,如果大家有任何疑问欢迎给我留言,小编会及时回复大家的!

Javascript 相关文章推荐
asp.net+js 实现无刷新上传解析csv文件的代码
May 17 Javascript
javascript event 事件解析
Jan 31 Javascript
如何在node的express中使用socket.io
Dec 15 Javascript
教你JS中的运算符乘方、开方及变量格式转换
Aug 09 Javascript
JavaScript每天必学之事件
Sep 18 Javascript
微信小程序 解析网页内容详解及实例
Feb 22 Javascript
react-native动态切换tab组件的方法
Jul 07 Javascript
原生JS实现的简单小钟表功能示例
Aug 30 Javascript
angular6根据environments配置文件更改开发所需要的环境的方法
Mar 06 Javascript
javascript的this关键字详解
May 20 Javascript
Servlet返回的数据js解析2种方法
Dec 12 Javascript
详解Vue router路由
Nov 20 Vue.js
Angular脚手架开发的实现步骤
Apr 09 #Javascript
详解vue 自定义marquee无缝滚动组件
Apr 09 #Javascript
javascript实现手动点赞效果
Apr 09 #Javascript
实例分析Array.from(arr)与[...arr]到底有何不同
Apr 09 #Javascript
浅谈Vue.js组件(二)
Apr 09 #Javascript
4 种滚动吸顶实现方式的比较
Apr 09 #Javascript
vue响应式系统之observe、watcher、dep的源码解析
Apr 09 #Javascript
You might like
单台服务器的PHP进程之间实现共享内存的方法
2014/06/13 PHP
ThinkPHP自动完成中使用函数与回调方法实例
2014/11/29 PHP
浅谈本地WAMP环境的搭建
2015/05/13 PHP
固定表格行列(expression)在IE下适用
2013/07/25 Javascript
《JavaScript DOM 编程艺术》读书笔记之JavaScript 图片库
2015/01/09 Javascript
jQuery给动态添加的元素绑定事件的方法
2015/03/09 Javascript
JavaScript html5 canvas绘制时钟效果
2016/03/01 Javascript
基于RequireJS和JQuery的模块化编程日常问题解析
2016/04/14 Javascript
Require.JS中的几种define定义方式示例
2017/06/01 Javascript
微信小程序实现多宫格抽奖活动
2020/04/15 Javascript
通过fastclick源码分析彻底解决tap“点透”
2017/12/24 Javascript
vue之父子组件间通信实例讲解(props、$ref、$emit)
2018/05/22 Javascript
详解如何解决vue开发请求数据跨域的问题(基于浏览器的配置解决)
2018/11/12 Javascript
Vue实现商品详情页的评价列表功能
2019/09/04 Javascript
从零搭一个自用的前端脚手架的方法步骤
2019/09/23 Javascript
JS动态显示倒计时效果
2019/12/12 Javascript
Python自动化测试ConfigParser模块读写配置文件
2016/08/15 Python
Python将图片批量从png格式转换至WebP格式
2020/08/22 Python
利用pandas进行大文件计数处理的方法
2018/07/25 Python
Python设计模式之桥接模式原理与用法实例分析
2019/01/10 Python
python定时按日期备份MySQL数据并压缩
2019/04/19 Python
Django之路由层的实现
2019/09/09 Python
python程序 创建多线程过程详解
2019/09/23 Python
浅谈ROC曲线的最佳阈值如何选取
2020/02/28 Python
Python爬虫谷歌Chrome F12抓包过程原理解析
2020/06/04 Python
python使用dlib进行人脸检测和关键点的示例
2020/12/05 Python
纯CSS3实现移动端展开和收起效果的示例代码
2020/04/26 HTML / CSS
HelloFresh奥地利:立即订购烹饪盒
2019/02/22 全球购物
经贸日语专业个人求职信范文
2013/12/28 职场文书
销售总监岗位职责
2014/01/04 职场文书
2014年学雷锋活动总结
2014/06/26 职场文书
片区教研活动总结
2014/07/02 职场文书
受资助学生感谢信
2015/01/21 职场文书
学前教育见习总结
2015/06/23 职场文书
MySQL创建定时任务
2022/01/22 MySQL
Ruby使用Mysql2连接操作MySQL
2022/04/19 Ruby