Vue实现跑马灯样式文字横向滚动


Posted in Vue.js onNovember 23, 2021

本文实例为大家分享了Vue实现跑马灯样式文字横向滚动的具体代码,供大家参考,具体内容如下

需求:

在Vue项目的顶部,来实现文字左右滚动

步骤:

1、可以自己封装一个组件,也可以自己写,也可以复制以下代码
2、封装完成以后要在所需的组件中引入,注册,并使用

代码:

封装一个专门用来实现跑马灯效果的组件marquee组件

<template>
<!-- 跑马灯组件 -->
  <div class="marquee-wrap" ref="marquee-wrap">
    <div class="scroll" ref="scroll">
      <p class="marquee">{{text}}</p>
      <p class="copy" ref="copy"></p>
    </div>
    <p class="getWidth" ref="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 = this.$refs['marquee-wrap'].clientWidth
    let width = this.$refs['getWidth'].scrollWidth
      if (width <= maxWidth) return
    let scroll = this.$refs['scroll']
    let copy = this.$refs['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: 0.16rem;
  }
  p {
    word-break:keep-all;
    white-space: nowrap;
    font-size: 0.28rem;
  }
  .scroll {
    display: flex;
  }
  .getWidth {
    word-break:keep-all;
    white-space:nowrap;
    position: absolute;
    opacity: 0;
    top: 0;
  }
</style>

在哪个组件中使用,就引入

// 引入跑马灯组件
import  marquee  from "@/components/marquee/marquee.vue";

引用并注册

export default {
  components: {
  // 注册跑马灯组件
    marquee,
  },
 }

注册完成以后接下来就是Html样式了,在template模板中使用这个组件

<Marquee class="realData">
          <ul class="fa-scroll-cont">
            <li v-for="item in realData" :key="item.name">
              <span class="roll-text">{{ item.city }}</span>
            </li>
          </ul>
</Marquee>

接下来就是效果图:
为了效果看的更明显多截了几张

Vue实现跑马灯样式文字横向滚动

Vue实现跑马灯样式文字横向滚动

Vue实现跑马灯样式文字横向滚动

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Vue.js 相关文章推荐
vue中defineProperty和Proxy的区别详解
Nov 30 Vue.js
vue element实现表格合并行数据
Nov 30 Vue.js
基于vue项目设置resolves.alias: '@'路径并适配webstorm
Dec 02 Vue.js
解决Vue-cli3没有vue.config.js文件夹及配置vue项目域名的问题
Dec 04 Vue.js
手写Vue源码之数据劫持示例详解
Jan 04 Vue.js
vscode自定义vue模板的实现
Jan 27 Vue.js
vue穿梭框实现上下移动
Jan 29 Vue.js
vue项目实现分页效果
Mar 24 Vue.js
Vue实现导入Excel功能步骤详解
Jul 03 Vue.js
前端vue+express实现文件的上传下载示例
Feb 18 Vue.js
vue打包时去掉所有的console.log
Apr 10 Vue.js
vue 把二维或多维数组转一维数组
Apr 24 Vue.js
详解Vue的列表渲染
Nov 20 #Vue.js
详解Vue slot插槽
Nov 20 #Vue.js
详解Vue router路由
Nov 20 #Vue.js
vue中 this.$set的使用详解
如何用vue实现网页截图你知道吗
Vue3中的Refs和Ref详情
Nov 11 #Vue.js
详细聊聊vue中组件的props属性
You might like
坏狼php学习 计数器实例代码
2008/06/15 PHP
PHP 文件扩展名 获取函数
2009/06/03 PHP
解析php二分法查找数组是否包含某一元素
2013/05/23 PHP
php获取数组长度的方法(有实例)
2013/10/27 PHP
php使用curl出现Expect:100-continue解决方法
2015/03/03 PHP
thinkphp利用模型通用数据编辑添加和删除的实例代码
2016/11/20 PHP
jQuery EasyUI API 中文文档 - NumberBox数字框
2011/10/13 Javascript
js替代copy(示例代码)
2013/11/27 Javascript
浅谈javascript中for in 和 for each in的区别
2015/04/23 Javascript
js实现表单检测及表单提示的方法
2015/08/14 Javascript
js游戏人物上下左右跑步效果代码分享
2015/08/28 Javascript
基于jquery实现动态竖向柱状条特效
2016/02/12 Javascript
Bootstrap中点击按钮后变灰并显示加载中实例代码
2016/09/23 Javascript
详解微信第三方小程序代开发
2017/06/23 Javascript
javascript回调函数详解
2018/02/06 Javascript
解决vue页面刷新或者后退参数丢失的问题
2018/03/13 Javascript
layui 优化button按钮和弹出框的方法
2018/08/15 Javascript
vue 全局环境切换问题
2019/10/27 Javascript
Node.js 中判断一个文件是否存在
2020/08/24 Javascript
Vue基于localStorage存储信息代码实例
2020/11/16 Javascript
[01:02]DOTA2辉夜杯决赛日 CDEC.Y对阵VG赛前花絮
2015/12/27 DOTA
python通过定义一个类实例作为ftp回调方法
2015/05/04 Python
Python中Continue语句的用法的举例详解
2015/05/14 Python
windows下安装Python和pip终极图文教程
2017/03/05 Python
Python基于win32ui模块创建弹出式菜单示例
2018/05/09 Python
Python基于多线程实现ping扫描功能示例
2018/07/23 Python
Django项目主urls导入应用中views的红线问题解决
2019/08/10 Python
python使用if语句实现一个猜拳游戏详解
2019/08/27 Python
设计师大码女装:11 Honoré
2020/05/03 全球购物
Linux面试经常问的文件系统操作命令
2015/11/05 面试题
捷科时代的软件测试笔试题
2015/11/09 面试题
教师年度考核自我鉴定
2014/01/19 职场文书
大宝sod蜜广告词
2014/03/21 职场文书
高三数学教学反思
2016/02/18 职场文书
描述鲁迅的名言整理,一生受用
2019/08/08 职场文书
Python matplotlib 利用随机函数生成变化图形
2022/04/26 Python