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 相关文章推荐
JQuery最佳实践之精妙的自定义事件
Aug 11 Javascript
JQuery动画和停止动画实例代码
Mar 01 Javascript
JS getAttribute和setAttribute(取得和设置属性)的使用介绍
Jul 10 Javascript
使用js画图之画切线
Jan 12 Javascript
jquery代码实现简单的随机图片瀑布流效果
Apr 20 Javascript
jQuery中通过ajax的get()函数读取页面的方法
Feb 29 Javascript
14 个折磨人的 JavaScript 面试题
Aug 08 Javascript
从零学习node.js之文件操作(三)
Feb 21 Javascript
layer父页获取弹出层输入框里面的值方法
Sep 02 Javascript
Nautil 中使用双向数据绑定的实现
Oct 02 Javascript
vuex存储token示例
Nov 11 Javascript
JavaScript中使用Spread运算符的八种方法总结
Jun 18 Javascript
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实现小型站点广告管理
2006/10/09 PHP
用Flash图形化数据(二)
2006/10/09 PHP
PHP中使用crypt()实现用户身份验证的代码
2012/09/05 PHP
php实现文件下载实例分享
2014/06/02 PHP
php实现模拟post请求用法实例
2015/07/11 PHP
php中session定期自动清理的方法
2015/11/12 PHP
用js实现层随着内容大小动态渐变改变 推荐
2009/12/19 Javascript
经典海量jQuery插件 大家可以收藏一下
2010/02/07 Javascript
关于jquery动态增减控件的一些想法和小插件
2010/08/01 Javascript
html a标签-超链接中confirm方法使用介绍
2013/01/04 Javascript
jquery删除指定的html标签并保留标签内文本内容的方法
2014/04/02 Javascript
javascript+HTML5的Canvas实现Lab单车动画效果
2015/08/07 Javascript
javascript日期处理函数,性能优化批处理
2015/09/06 Javascript
基于canvas实现的绚丽圆圈效果完整实例
2016/01/26 Javascript
JavaScript检测原始值、引用值、属性
2016/06/20 Javascript
浅谈js中的this问题
2017/08/31 Javascript
js+css实现红包雨效果
2018/07/12 Javascript
Vue CLI3 如何支持less的方法示例
2018/08/29 Javascript
javascript对HTML字符转义与反转义
2018/12/13 Javascript
小程序实现悬浮搜索框
2019/07/12 Javascript
Vant 在vue-cli 4.x中按需加载操作
2020/11/05 Javascript
TensorFlow高效读取数据的方法示例
2018/02/06 Python
利用python开发app实战的方法
2019/07/09 Python
详解Python中的编码问题(encoding与decode、str与bytes)
2020/09/30 Python
用python 绘制茎叶图和复合饼图
2021/02/26 Python
应届生幼儿园求职信
2013/11/12 职场文书
运动会闭幕式解说词
2014/02/21 职场文书
计算机系本科生求职信
2014/05/31 职场文书
党员学习党的群众路线思想汇报(5篇)
2014/09/10 职场文书
群众路线问题查摆对照检查材料
2014/10/04 职场文书
2014年涉外离婚协议书范本
2014/11/20 职场文书
2014年度思想工作总结
2014/11/27 职场文书
Python数据分析之pandas读取数据
2021/06/02 Python
Centos7中MySQL数据库使用mysqldump进行每日自动备份的编写
2021/08/02 MySQL
使用kubeadm命令行工具创建kubernetes集群
2022/03/31 Servers
Python批量解压&压缩文件夹的示例代码
2022/04/04 Python