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 相关文章推荐
iframe父页面获取子页面参数的方法
Feb 21 Javascript
用jquery修复在iframe下的页面锚点失效问题
Aug 22 Javascript
告诉你什么是javascript的回调函数
Sep 04 Javascript
node.js中的fs.symlinkSync方法使用说明
Dec 15 Javascript
理解和运用JavaScript的闭包机制
Aug 13 Javascript
BootStrap无限级分类(无限极分类封装版)
Aug 26 Javascript
基于javascript实现的快速排序
Dec 02 Javascript
基于vue2.0+vuex+localStorage开发的本地记事本示例
Feb 28 Javascript
Vue监听数组变化源码解析
Mar 09 Javascript
JS小球抛物线轨迹运动的两种实现方法详解
Dec 20 Javascript
jQuery实现图片上传预览效果功能完整实例【测试可用】
May 28 jQuery
vue-cli3.0修改打包后的文件名和文件地址,打包后本地运行报错解决
Apr 06 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
一个简单的MySQL数据浏览器
2006/10/09 PHP
PHP MSSQL 存储过程的方法
2008/12/24 PHP
phpMyAdmin 链接表的附加功能尚未激活问题的解决方法(已测)
2012/03/27 PHP
PHP写的求多项式导数的函数代码
2012/07/04 PHP
php5.3 不支持 session_register() 此函数已启用的解决方法
2013/11/12 PHP
CI框架中redis缓存相关操作文件示例代码
2016/05/17 PHP
谈谈从phpinfo中能获取哪些值得注意的信息
2017/03/28 PHP
PHP对称加密算法(DES/AES)类的实现代码
2017/11/14 PHP
PHP实现新型冠状病毒疫情实时图的实例
2020/02/04 PHP
Jquery + Ajax调用webService实例代码(asp.net)
2010/08/27 Javascript
图片onload事件触发问题解决方法
2011/07/31 Javascript
检测input每次的输入是否合法遇到汉字输入就有问题
2012/05/23 Javascript
JS onmousemove鼠标移动坐标接龙DIV效果实例
2013/12/16 Javascript
javascript Array 数组常用方法
2015/04/05 Javascript
JS中Location使用详解
2015/05/12 Javascript
js实现一个链接打开两个链接地址的方法
2015/05/12 Javascript
js+flash实现的5图变换效果广告代码(附演示与demo源码下载)
2016/04/01 Javascript
js实现移动端编辑添加地址【模仿京东】
2017/04/28 Javascript
jQuery 1.9版本以上的浏览器判断方法代码分享
2017/08/28 jQuery
swiper移动端轮播插件(触碰图片之后停止轮播)
2017/12/28 Javascript
JS动画定时器知识总结
2018/03/23 Javascript
Vue进度条progressbar组件功能
2018/04/17 Javascript
微信小程序自定义弹窗滚动与页面滚动冲突的解决方法
2019/07/16 Javascript
python使用arp欺骗伪造网关的方法
2015/04/24 Python
tensorflow更改变量的值实例
2018/07/30 Python
Python人工智能之路 之PyAudio 实现录音 自动化交互实现问答
2019/08/13 Python
Python爬虫:将headers请求头字符串转为字典的方法
2019/08/21 Python
关于Python中定制类的比较运算实例
2019/12/19 Python
python 操作hive pyhs2方式
2019/12/21 Python
python中使用asyncio实现异步IO实例分析
2021/02/26 Python
我的applet原先好好的, 一放到web server就会有问题,为什么?
2016/05/10 面试题
介绍下Lucene建立索引的过程
2016/03/02 面试题
幼儿园教师培训制度
2014/01/16 职场文书
励志演讲稿范文
2014/04/29 职场文书
院系推荐意见
2015/06/05 职场文书
Nginx的基本概念和原理
2022/03/21 Servers