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 相关文章推荐
DOM相关内容速查手册
Feb 07 Javascript
JQuery 确定css方框模型(盒模型Box Model)
Jan 22 Javascript
jquery实现多级下拉菜单的实例代码
Oct 02 Javascript
jquery动态增加删除表格行的小例子
Nov 14 Javascript
父页面显示遮罩层弹出半透明状态的dialog
Mar 04 Javascript
Egret引擎开发指南之编译项目
Sep 03 Javascript
JavaScript中Textarea滚动条不能拖动的解决方法
Dec 15 Javascript
微信小程序 使用canvas制作K线实例详解
Jan 12 Javascript
从parcel.js打包出错到选择nvm的全部过程
Jan 23 Javascript
说说如何在Vue.js中实现数字输入组件的方法
Jan 08 Javascript
浅析vue-cli3配置webpack-bundle-analyzer插件【推荐】
Oct 23 Javascript
vue中对象数组去重的实现
Feb 06 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
在PHP3中实现SESSION的功能(二)
2006/10/09 PHP
15种PHP Encoder的比较
2007/03/06 PHP
php microtime获取浮点的时间戳
2010/02/21 PHP
基于php实现长连接的方法与注意事项的问题
2013/05/10 PHP
php中通过数组进行高效随机抽取指定条记录的算法
2013/09/09 PHP
php绘制一条弧线的方法
2015/01/24 PHP
PHP几个实用自定义函数小结
2016/01/25 PHP
JS option location 页面跳转实现代码
2008/12/27 Javascript
HTML代码中标签的全部属性 中文注释说明
2009/03/26 Javascript
jquery 实现的全选和反选
2009/04/15 Javascript
jQuery文件上传插件Uploadify使用指南
2014/06/05 Javascript
浅谈JS读取DOM对象(标签)的自定义属性
2016/11/21 Javascript
Bootstrap基本插件学习笔记之轮播幻灯片(23)
2016/12/08 Javascript
Ajax跨域实现代码(后台jsp)
2017/01/21 Javascript
详解angular用$sce服务来过滤HTML标签
2017/04/11 Javascript
echarts实现地图定时切换散点与多图表级联联动详解
2018/08/07 Javascript
Node.js Koa2使用JWT进行鉴权的方法示例
2018/08/17 Javascript
通过vue-cli3构建一个SSR应用程序的方法
2018/09/13 Javascript
JS复杂判断的更优雅写法代码详解
2018/11/07 Javascript
详解Vue 匿名、具名和作用域插槽的使用方法
2019/04/22 Javascript
详解VSCode配置启动Vue项目
2019/05/14 Javascript
使用python将mdb数据库文件导入postgresql数据库示例
2014/02/17 Python
Python写的Tkinter程序屏幕居中方法
2015/03/10 Python
详解Python中映射类型的内建函数和工厂函数
2015/08/19 Python
用Pygal绘制直方图代码示例
2017/12/07 Python
TensorFlow如何实现反向传播
2018/02/06 Python
Numpy 改变数组维度的几种方法小结
2018/08/02 Python
python中reload重载实例用法
2020/12/15 Python
Sneaker Studio波兰:购买运动鞋
2018/04/28 全球购物
幼儿园教师辞职信
2014/01/18 职场文书
党员目标管理责任书
2014/07/25 职场文书
法院授权委托书范文
2014/08/02 职场文书
三年级上册科学教学计划
2015/01/21 职场文书
顶岗实习协议书
2015/01/29 职场文书
2015年学校团委工作总结
2015/05/26 职场文书
入伍志愿书怎么写?
2019/07/19 职场文书