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实现div的显示和隐藏的小例子
Jun 25 Javascript
replace()方法查找字符使用示例
Oct 28 Javascript
node安装--linux下的快速安装教程
Mar 21 Javascript
JS实现隔行换色的表格排序
Mar 27 Javascript
深入浅析JSONAPI在PHP中的应用
Dec 24 Javascript
如何理解Vue的v-model指令的使用方法
Jul 19 Javascript
React中阻止事件冒泡的问题详析
Apr 12 Javascript
jquery+ajax实现上传图片并显示上传进度功能【附php后台接收】
Jun 06 jQuery
解决angular 使用原生拖拽页面卡顿及表单控件输入延迟问题
Apr 21 Javascript
vue 使用async写数字动态加载效果案例
Jul 18 Javascript
Element-ui upload上传文件限制的解决方法
Jan 22 Javascript
详解Vue3.0 + TypeScript + Vite初体验
Feb 22 Vue.js
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
全国FM电台频率大全 - 5 内蒙古自治区
2020/03/11 无线电
PHP最常用的2种设计模式工厂模式和单例模式介绍
2012/08/14 PHP
探讨PHP使用eAccelerator的API开发详解
2013/06/09 PHP
php将图片保存为不同尺寸图片的图片类实例
2015/03/30 PHP
php需登录的文件上传管理系统
2020/03/21 PHP
PHP7 其他修改
2021/03/09 PHP
Ajax一统天下之Dojo整合篇
2007/03/24 Javascript
用javascript实现兼容IE7的类库 IE7_0_9.zip提供下载
2007/08/08 Javascript
Flash+XML滚动新闻代码 无图片 附源码下载
2007/11/22 Javascript
jquery动态改变div宽度和高度
2015/02/09 Javascript
jQuery simplePage+AJAX plus分页插件用法实例
2016/02/17 Javascript
深入nodejs中流(stream)的理解
2017/03/27 NodeJs
vue中配置mint-ui报css错误问题的解决方法
2017/10/11 Javascript
原生JS实现循环Nodelist Dom列表的4种方式示例
2018/02/11 Javascript
微信小程序实现默认第一个选中变色效果
2018/07/17 Javascript
Windows下支持自动更新的Electron应用脚手架的方法
2018/12/24 Javascript
Vue监听页面刷新和关闭功能
2019/06/20 Javascript
JS数组push、unshift、pop、shift方法的实现与使用方法示例
2020/04/29 Javascript
Nuxt.js的路由跳转操作(页面跳转nuxt-link)
2020/11/06 Javascript
[49:02]KG vs Infamous 2019国际邀请赛淘汰赛 败者组BO1 8.20.mp4
2020/07/19 DOTA
[48:28]完美世界DOTA2联赛循环赛FTD vs Magma第二场 10月30日
2020/10/31 DOTA
vscode 配置 python3开发环境的方法
2019/09/19 Python
详解Django admin高级用法
2019/11/06 Python
Python模块/包/库安装的六种方法及区别
2020/02/24 Python
python实现网页录音效果
2020/10/26 Python
pycharm使用技巧之自动调整代码格式总结
2020/11/04 Python
五分钟学会怎么用python做一个简单的贪吃蛇
2021/01/12 Python
怎样声明子类
2013/07/02 面试题
医学专业个人求职自荐信格式
2013/09/23 职场文书
个人担保书格式范文
2014/05/12 职场文书
任命书格式
2014/06/05 职场文书
地理信息科学专业推荐信
2014/09/08 职场文书
英文自荐信范文
2015/03/25 职场文书
2015年秋季开学典礼校长致辞
2015/07/16 职场文书
python 字典和列表嵌套用法详解
2021/06/29 Python
python标准库ElementTree处理xml
2022/05/20 Python