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 相关文章推荐
百度留言本js 大家可以参考下
Oct 13 Javascript
JQuery学习笔记 nt-child的使用
Jan 17 Javascript
javascript设置金额样式转换保留两位小数示例代码
Dec 04 Javascript
jQuery中:button选择器用法实例
Jan 04 Javascript
浅谈Javascript实现继承的方法
Jul 06 Javascript
angularJS之$http:与服务器交互示例
Mar 17 Javascript
微信小程序登录态控制深入分析
Apr 12 Javascript
Angular.js中数组操作的方法教程
Jul 31 Javascript
基于vue的短信验证码倒计时demo
Sep 13 Javascript
Angular5中调用第三方库及jQuery的添加的方法
Jun 07 jQuery
vue 设置路由的登录权限的方法
Jul 03 Javascript
JS选取DOM元素常见操作方法实例分析
Dec 10 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下关于中英数字混排的字符串分割问题
2010/04/06 PHP
smarty简单入门实例
2014/11/28 PHP
jQuery 版本的文本输入框检查器Input Check
2009/07/09 Javascript
JQuery CSS样式控制 学习笔记
2009/07/23 Javascript
jQuery的12招常用技巧分享
2011/08/08 Javascript
深入理解javascript中的立即执行函数(function(){…})()
2014/06/12 Javascript
JavaScript实现动态创建CSS样式规则方案
2014/09/06 Javascript
JS使用单链表统计英语单词出现次数
2016/06/16 Javascript
jQuery实现为LI列表前3行设置样式的方法【2种方法】
2016/09/04 Javascript
使用JS正则表达式 替换括号,尖括号等
2016/11/29 Javascript
vue如何在自定义组件中使用v-model
2018/05/14 Javascript
使用vue-infinite-scroll实现无限滚动效果
2018/06/22 Javascript
nodejs(officegen)+vue(axios)在客户端导出word文档的方法
2018/07/31 NodeJs
提升node.js中使用redis的性能遇到的问题及解决方法
2018/10/30 Javascript
JS基于ES6新特性async await进行异步处理操作示例
2019/02/02 Javascript
解决Layui中templet中a的onclick参数传递的问题
2019/09/20 Javascript
Vue-CLI与Vuex使用方法实例分析
2020/01/06 Javascript
vue实现把接口单独存放在一个文件方式
2020/08/13 Javascript
Python实现的爬虫功能代码
2017/06/24 Python
Python排序搜索基本算法之堆排序实例详解
2017/12/08 Python
python 并发编程 多路复用IO模型详解
2019/08/20 Python
Django上线部署之IIS的配置方法
2019/08/22 Python
Python字典取键、值对的方法步骤
2020/09/30 Python
css3实现input输入框颜色渐变发光效果代码
2014/04/02 HTML / CSS
英国护发和美妆在线商店:Klip Shop
2019/03/24 全球购物
澳大利亚网上买书:Angus & Robertson
2019/07/21 全球购物
简单而又朴实的个人求职信分享
2013/12/12 职场文书
新学期家长寄语
2014/01/19 职场文书
大三学习计划书范文
2014/05/02 职场文书
教师党员岗位承诺书
2014/05/29 职场文书
房地产工程部经理岗位职责
2015/04/09 职场文书
爱国主义教育基地观后感
2015/06/18 职场文书
文案策划岗位个人自我评价(范文)
2019/08/08 职场文书
微信小程序用户授权最佳实践指南
2021/05/08 Javascript
vue使用节流函数的踩坑实例指南
2021/05/20 Vue.js
Java数组与堆栈相关知识总结
2021/06/29 Java/Android