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 相关文章推荐
JsEasy简介 JsEasy是什么?与下载
Mar 07 Javascript
dojo学习第一天 Tab选项卡 实现
Aug 28 Javascript
jQuery源码分析-03构造jQuery对象-工具函数
Nov 14 Javascript
jQuery之end()和pushStack()使用介绍
Feb 07 Javascript
z-blog SyntaxHighlighter 长代码无法换行解决办法(jquery)
Nov 16 Javascript
jquery实现动静态条形统计图
Aug 17 Javascript
Javascript实现base64的加密解密方法示例
Jun 27 Javascript
对于Javascript 执行上下文的全面了解
Sep 05 Javascript
详解javascript 正则表达式之分组与前瞻匹配
May 30 Javascript
vue监听对象及对象属性问题
Aug 20 Javascript
微信小程序实现搜索功能
Mar 10 Javascript
Vue js with语句原理及用法解析
Sep 03 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+javascript模拟Matrix画面
2006/10/09 PHP
使用php重新实现PHP脚本引擎内置函数
2007/03/06 PHP
php反弹shell实现代码
2009/04/22 PHP
PHP几个实用自定义函数小结
2016/01/25 PHP
Yii2 rbac权限控制之rule教程详解
2016/06/23 PHP
addRule在firefox下的兼容写法
2006/11/30 Javascript
javascript 密码强弱度检测万能插件
2009/02/25 Javascript
jquery里的正则表达式说明
2011/08/03 Javascript
Android中的jQuery:AQuery简介
2014/05/06 Javascript
js与css实现弹出层覆盖整个页面的方法
2014/12/13 Javascript
javascript实现节点(div)名称编辑
2014/12/17 Javascript
详解jQuery中的deferred对象的使用(一)
2016/05/27 Javascript
利用jquery实现瀑布流3种案例
2016/09/18 Javascript
JS实现复选框的全选和批量删除功能
2017/04/05 Javascript
JS中使用cavas截图网页并解决跨域及模糊问题
2018/11/13 Javascript
微信小程序后端无法保持session的原因及解决办法问题
2020/03/20 Javascript
Vue Object 的变化侦测实现代码
2020/04/15 Javascript
[01:59]游戏“zheng”当时试玩会
2019/08/21 DOTA
用Python进行基础的函数式编程的教程
2015/03/31 Python
给Python的Django框架下搭建的BLOG添加RSS功能的教程
2015/04/08 Python
python3批量删除豆瓣分组下的好友的实现代码
2016/06/07 Python
Python实现的三层BP神经网络算法示例
2018/02/07 Python
Python实现点阵字体读取与转换的方法
2019/01/29 Python
实例详解Python装饰器与闭包
2019/07/29 Python
selenium+python自动化78-autoit参数化与批量上传功能的实现
2021/03/04 Python
HTML5等待加载动画效果
2017/07/27 HTML / CSS
6PM官网:折扣鞋、服装及配饰
2018/08/03 全球购物
意大利在线眼镜精品店:Ottica Lipari
2019/11/11 全球购物
测控技术与通信工程毕业生自荐信范文
2013/12/28 职场文书
新学期班主任寄语
2014/01/18 职场文书
渔夫的故事教学反思
2014/02/14 职场文书
部门年终奖分配方案
2014/05/07 职场文书
python爬虫--selenium模块
2021/03/31 Python
关于python中readlines函数的参数hint的相关知识总结
2021/06/24 Python
详解Vue3使用axios的配置教程
2022/04/29 Vue.js
Windows10安装Apache2.4的方法步骤
2022/06/25 Servers