Vue替代marquee标签超出宽度文字横向滚动效果


Posted in Javascript onDecember 09, 2019

一、npm 安装

如果你想安装插件(自己写的)

安装

# install dependencies
npm i marquee-components

使用

在main.js引入

import marquee from 'marquee-components'
Vue.use(marquee );

在页面使用

<template>
 <div id="app">
    <marquee :val="msg"></marquee>
 </div>
</template>
<script>
export default {
 name: 'app',
 data () {
  return {
   msg: 'vuevuevuevuevuevuevuevuevuevuevuevuevuevuevuevuevue'
  }
 }
}
</script>

val后加文字即可,当超过文本容器长度时,触动横向滚动效果。

二、直接引入组件

marquee组件

<template>
 <div class="marquee-wrap">
  <div class="scroll">
   <p class="marquee">{{text}}</p>
   <p class="copy"></p>
  </div>
  <p class="getWidth">{{text}}</p>
 </div>
</template>

<script>
export default {
 name: 'marquee',
 props: ['val'],
 data () {
  return {
   timer: null,
   text: ''
  }
 },
 created () {
  let timer = setTimeout(() => {
   this.move()
   clearTimeout(timer)
  }, 1000)
 },
 mounted () {
  for (let item of this.val) {
   this.text += ' ' + item
  }
 },
 methods: {
  move () {
   let maxWidth = document.querySelector('.marquee-wrap').clientWidth
   let width = document.querySelector('.getWidth').scrollWidth
   if (width <= maxWidth) return
   let scroll = document.querySelector('.scroll')
   let copy = document.querySelector('.copy')
   copy.innerText = this.text
   let distance = 0 
   this.timer = setInterval(() => {
    distance -= 1
    if (-distance >= width) {
     distance = 16
    }
    scroll.style.transform = 'translateX(' + distance + 'px)'
   }, 20)
  }
 },
 beforeDestroy () {
  clearInterval(this.timer)
 }
}
</script>

<style scoped>
 .marquee-wrap {
  width: 100%;
  overflow: hidden;
  position: relative;
 }
 .marquee{
  margin-right: 16px;
 }
 p {
  word-break:keep-all;
  white-space: nowrap;
  font-size: 16px;
  font-family: "微软雅黑 Light";
 }
 .scroll {
  display: flex;
 }
 .getWidth {
  word-break:keep-all;
  white-space:nowrap;
  position: absolute;
  opacity: 0;
  top: 0;
 }
</style>

其他页面引入marquee组件

<template>
 <div class="container">
    <marquee :val="title"></marquee>
 </div>
</template>
<script>
import marquee from './marquee'
 name: 'index',
 components: {
  marquee
 },
 data () {
  return {
 title: ''
  }
 },
</script>

总结

以上所述是小编给大家介绍的Vue替代marquee标签超出宽度文字横向滚动效果,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对三水点靠木网站的支持!
如果你觉得本文对你有帮助,欢迎转载,烦请注明出处,谢谢!

Javascript 相关文章推荐
javascript循环变量注册dom事件 之强大的闭包
Sep 08 Javascript
深入理解JSON数据源格式
Jan 10 Javascript
简述Jquery与DOM对象
Jul 10 Javascript
Node.js操作Firebird数据库教程
Mar 04 Javascript
Javascript 动态改变imput type属性
Nov 01 Javascript
原生javascript实现图片放大镜效果
Jan 18 Javascript
AngularJS ng-repeat指令中使用track by子语句解决重复数据遍历错误问题
Jan 21 Javascript
Vue实现带进度条的文件拖动上传功能
Feb 23 Javascript
Angular HMR(热模块替换)功能实现方法
Apr 04 Javascript
详解Vue项目中出现Loading chunk {n} failed问题的解决方法
Sep 14 Javascript
vue解决跨域问题(推荐)
Nov 10 Javascript
JavaScript实现音乐导航效果
Nov 19 Javascript
vue新建项目并配置标准路由过程解析
Dec 09 #Javascript
使用vuex较为优雅的实现一个购物车功能的示例代码
Dec 09 #Javascript
简述Vue中容易被忽视的知识点
Dec 09 #Javascript
vue路由传参三种基本方式详解
Dec 09 #Javascript
vue使用nprogress实现进度条
Dec 09 #Javascript
javascript数组元素删除方法delete和splice解析
Dec 09 #Javascript
vue vant Area组件使用详解
Dec 09 #Javascript
You might like
使用PHP+AJAX让WordPress动态加载文章的教程
2015/12/11 PHP
php输出含有“#”字符串的方法
2017/01/18 PHP
页面中body onload 和 window.onload 冲突的问题的解决
2009/07/01 Javascript
基于jQuery的固定表格头部的代码(IE6,7,8测试通过)
2010/05/18 Javascript
js更优雅的兼容
2010/08/12 Javascript
js+div实现图片滚动效果代码
2014/02/10 Javascript
使用js实现一个可编辑的select下拉列表
2014/02/20 Javascript
JavaScript 事件入门知识
2015/04/13 Javascript
jQuery实现下拉加载功能实例代码
2016/04/01 Javascript
详解webpack 配合babel 将es6转成es5 超简单实例
2017/05/02 Javascript
jQuery获取复选框选中的当前行的某个字段的值
2017/09/15 jQuery
javascript 通过键名获取键盘的keyCode方法
2017/12/31 Javascript
关于HTTP传输中gzip压缩的秘密探索分析
2018/01/12 Javascript
Vue自定义指令封装节流函数的方法示例
2018/07/09 Javascript
详解Vue webapp项目通过HBulider打包原生APP(vue+webpack+HBulider)
2019/02/02 Javascript
jQuery+ThinkPHP实现图片上传
2020/07/23 jQuery
[00:59]DOTA2荣耀之路1:Doom is back!weapon X!
2018/05/22 DOTA
python fabric使用笔记
2015/05/09 Python
python中的set实现不重复的排序原理
2018/01/24 Python
python中logging包的使用总结
2018/02/28 Python
Python实现矩阵相乘的三种方法小结
2018/07/26 Python
python3.7.0的安装步骤
2018/08/27 Python
python实现手机销售管理系统
2019/03/19 Python
Python安装与基本数据类型教程详解
2019/05/29 Python
python全栈知识点总结
2019/07/01 Python
对YOLOv3模型调用时候的python接口详解
2019/08/26 Python
Python通过fnmatch模块实现文件名匹配
2020/09/30 Python
Python基于execjs运行js过程解析
2020/11/27 Python
利用CSS3的checked伪类实现OL的隐藏显示的方法
2010/12/18 HTML / CSS
欧缇丽美国官网:Caudalie美国
2016/12/31 全球购物
草莓网化妆品澳大利亚站:Strawberrynet AU
2017/12/18 全球购物
曼城官方网上商店:Manchester City
2019/09/10 全球购物
Ibatis的核心配置文件都有什么
2014/09/08 面试题
关于运动会的口号
2014/06/07 职场文书
十二月早安励志心语大全
2019/12/03 职场文书
MySQL 数据表操作
2022/05/04 MySQL