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 相关文章推荐
关于javascript document.createDocumentFragment()
Apr 04 Javascript
jQuery 版元素拖拽原型代码
Apr 25 Javascript
JavaScript截取指定长度字符串点击可以展开全部代码
Dec 04 Javascript
JavaScript判断用户名和密码不能为空的实现代码
May 16 Javascript
Jquery揭秘系列:ajax原生js实现详解(推荐)
Jun 08 Javascript
JS实现关闭当前页而不弹出提示框的方法
Jun 22 Javascript
JavaScript中三个等号和两个等号的区别(== 和 ===)浅析
Sep 22 Javascript
zTree实现节点修改的实时刷新功能
Mar 20 Javascript
vue与bootstrap实现时间选择器的示例代码
Aug 26 Javascript
jQuery实现左右滑动的toggle方法
Mar 03 jQuery
浅谈Vue数据响应
Nov 05 Javascript
JQuery基于FormData异步提交数据文件
Sep 01 jQuery
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
dede3.1分页文字采集过滤规则详说(图文教程)
2007/04/03 PHP
使用openssl实现rsa非对称加密算法示例
2014/01/24 PHP
CI框架AR操作(数组形式)实现插入多条sql数据的方法
2016/05/18 PHP
php使用正则表达式去掉html中的注释方法
2016/11/03 PHP
PHP中常用的三种设计模式详解【单例模式、工厂模式、观察者模式】
2019/06/14 PHP
jQuery学习总结之元素的相对定位和选择器(持续更新)
2011/04/26 Javascript
Javascript 绘制 sin 曲线过程附图
2014/08/21 Javascript
javascript 操作符(~、&amp;、|、^、)使用案例
2014/12/31 Javascript
javascript删除数组重复元素的方法汇总
2015/06/24 Javascript
jQuery实现鼠标滑过点击事件音效试听
2015/08/31 Javascript
jQuery+Ajax实现限制查询间隔的方法
2016/06/07 Javascript
AngularJS中watch监听用法分析
2016/11/04 Javascript
浅谈Angular4实现热加载开发旅程
2017/09/08 Javascript
详解使用Vue Router导航钩子与Vuex来实现后退状态保存
2017/09/11 Javascript
vue2实现搜索结果中的搜索关键字高亮的代码
2018/08/29 Javascript
nodejs初始化init的示例代码
2018/10/10 NodeJs
Vue 3.0中jsx语法的使用
2020/11/13 Javascript
让python的Cookie.py模块支持冒号做key的方法
2010/12/28 Python
django+tornado实现实时查看远程日志的方法
2019/08/12 Python
Pytorch GPU显存充足却显示out of memory的解决方式
2020/01/13 Python
Python多线程通信queue队列用法实例分析
2020/03/24 Python
python opencv实现图片缺陷检测(讲解直方图以及相关系数对比法)
2020/04/07 Python
使用pytorch 筛选出一定范围的值
2020/06/28 Python
Python 使用Opencv实现目标检测与识别的示例代码
2020/09/08 Python
Superdry极度乾燥官网:日本街头风格,纯英国制造品牌
2016/10/31 全球购物
AE美国鹰日本官方网站: American Eagle Outfitters
2016/12/10 全球购物
什么是命名空间(NameSpace)
2015/11/24 面试题
编写一个 C 函数,该函数在一个字符串中找到可能的最长的子字符串,且该字符串是由同一字符组成的
2015/07/23 面试题
易程科技软件测试笔试
2013/03/24 面试题
毕业自我评价
2014/02/05 职场文书
2014年创先争优活动总结
2014/05/04 职场文书
希特勒的演讲稿
2014/05/23 职场文书
大专学生求职自荐信
2014/07/06 职场文书
介绍信如何写
2015/01/31 职场文书
婚礼迎宾词大全
2015/08/10 职场文书
OpenCV绘制圆端矩形的示例代码
2021/08/30 Python