vue项目中实现文字滚动(跑马灯)效果——公告滚动播放

2023-11-01

项目需求:系统公告,要从右忘左循环播放的牛皮广告效果。

实现:
方案一:使用定时器和CSS3的过渡属性来实现。

<template>
  <div class="notice-card-wrapper">
        <div id="message-wrap" ref="out" class="message">
          <div id="con1" ref="con1" :class="{anim:animate==true}" style="margin-left: 2500px;">
            <span v-html="notice"></span>
          </div>
        </div>
  </div>
</template>

关键标签ref='con1 和内部的span,con1上面有一个anim样式,根据animate变量的变化来动态变化。
注意,我这里给了一个margin-left:2500px的初始位置

data() {
    return {
      animate: true,
      notice: '',
      intervalId: null // 定时器标识
    }
  },

定义需要的属性变量

  mounted() {
    this.scroll() // 动画先执行一次
    this.intervalId = setInterval(this.scroll, 16000) // 间隔时间后重复执行
  },
  updated() {
  },
  destroyed() {
    clearInterval(this.intervalId) // 清除定时器
  },
    methods: {
    // 异步ajax获取公告内容,略过
    handleFetchNotice() {
      fetchNotice().then(res => {
        this.notice = res.data.notice
      }).catch(err => {
        console.log(err)
      })
    },
    // 定义动画
    scroll() {
      this.animate = true
      const con1 = this.$refs.con1
      setTimeout(() => {
        con1.style.marginLeft = '-500PX'
      }, 500)
      setTimeout(() => {
        con1.style.marginLeft = '2500px'
        this.animate = false
      }, 15000)
    }
  }

说明:执行动画函数,500ms后将refs.con1的margin-left值改为-500px,这个时候标签的过渡属性是ture,会动画显示这个变化过程。15000ms后,将margin-left值回到初始状态,过渡属性修改为false,动画切断。

最后一步,就算在css中定义过渡样式

<style lang="scss">
.anim{
  transition: all 15s linear;
}
</style>

margin-left有2500px改为-500px的过程,过渡动画线性执行15s。

然后,定时器16000毫秒后,重复执行。

已修改为css3动画,简洁很多

<template>
  <div class="notice-card-wrapper">
    <div class="header">
      <div class="title">
        <!-- 系统公告 -->
        <div class="message">
          <div class="inner-container">
            <span v-html="notice"></span>
          </div>
        </div>
      </div>
    </div>
  </div>
</template>

<script>
export default {
  name: 'SystemNotice',
  components: {
  },
  data() {
    return {
      notice: '我是广播文字内容,哈哈哈哈,你习惯不行啊,我页不知道啊啊啊啊啊'
    }
  },
  computed: {
  },
  created() {
  },
  methods: {
  }
}
</script>

<style lang="scss" scoped>
.notice-card-wrapper {
  .inner-container {
    margin-left: 100%; // 把文字弄出可见区域
    width: 200%;
    animation: myMove 30s linear infinite; // 重点,定义动画
    animation-fill-mode: forwards;
  }
    /*文字无缝滚动*/
  @keyframes myMove {
    0% {
      transform: translateX(0);
    }
    100% {
      transform: translateX(-2500px);
    }
  }
  }
}
</style>


本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

vue项目中实现文字滚动(跑马灯)效果——公告滚动播放 的相关文章

随机推荐

  • ELK-日志服务【redis-配置使用】

    目录 环境 1 redis配置 2 filebeat配置 3 对接logstash配置 4 验证 5 安全配置 第一种 kibana nginx访问控制 6 第二种 在ES 主节点 配置TLS 7 kibana配置密码 8 logstash
  • 晨光文具去年赚5亿,连2000元都拿来理财

    只要走出学校大门 在不多于500米半径范围内 你都能轻松找到晨光文具的门店 大到一线城市 小到三四线县城 经过20年苦心经营 晨光文具已经做到了这种格局 在这种格局背后 是晨光系7 2万家零售终端的缜密布局 20年来 在国内书写工具以及学生
  • 07:和为给定数

    总时间限制 1000ms 内存限制 65536kB 描述 给出若干个整数 询问其中是否有一对数的和等于给定的数 输入 共三行 第一行是整数n 0 lt n lt 100 000 表示有n个整数 第二行是n个整数 整数的范围是在0到10 8之
  • Linux Suse firewall 查看,关闭,启动

    查看 linux chkconfig list grep i fire 关闭 linux SuSEfirewall2 stop 启动 linux SuSEfirewall2 stop
  • 最小生成树以及Kruskal算法,Prime算法

    一 最小生成树 连通图 在无向图中 若从顶点v1到顶点v2有路径 则称顶点v1与顶点v2是连通的 如果图中任 意一对顶点都是连通的 则称此图为连通图 强连通图 在有向图中 若在每一对顶点vi和vj之间都存在一条从vi到vj的路径 也存在一条
  • 信号处理中简单实用的方法——提取信号中的包络

    一 用希尔伯特变换计算信号的包络 在求某一信号包络时用得最多的是希尔伯特变换 但并不是希尔伯特变换适用于所有信号求包络的情况 这是因为对于包络没有一个很严格的定义 在求包络时不同的情况会有不同的要求 下面将介绍用希尔伯特变换求取信号的包络
  • JVM一个类的加载过程

    七大步骤 具体过程 加载 classpath jar包 网络 某个磁盘位置下的类的class二进制字节流读进来 在内存中生成一个代表这个类的 java lang Class 对象放入元空间 此阶段我们的程序员可以干预 我们可以自定义类加载器
  • java web考试题及答案_2016JAVA-WEB期末复习题库附答案.doc

    1 当访问一个Servlet时 以下Servlet中的哪个方法先被执行 D A destroy B doGet C service D init0 2 假设在myServlet应用中有一个MyServlet类 在web xml文件中对其进行
  • 【leetcode】求两个链表的交点

    求两个链表的交点 c 借助set Definition for singly linked list struct ListNode int val ListNode next ListNode int x val x next NULL
  • 静态时序分析-Multicycle约束

    有时 前端在一些关键路径上的设计 可能会出现两个时钟周期驱动和采样一拍数据 来放松关键路径上的时序 这样的设计在STA约束过程中 如果不放松 会导致Timing违例过大 无法收敛 此时的Timing由前端逻辑实现保证 STA约束即可释放 以
  • 关于VScode引用头文件时一直报错的解决方法

    一 首先看下配置文件 常见的错误原因可能是因为 c cpp properties json 这个文件并没有配置好 可以参考下列的文件 在这里插入代 configurations name Win32 includePath workspac
  • iOS开发之数据存取(三)——FMDB

    FMDB 基本使用 相比于SQLite3来说Core Data存在着诸多优势 它面向对象 开发人员不必过多的关心更多数据库操作知识 同时它基于ObjC操作 书写更加优雅等 但是它本身也存在着一定的限制 例如如果考虑到跨平台 则只能选择SQL
  • AT24C02芯片介绍

    AT24C02管脚介绍 AT24C02低功耗CMOS串行EEPROM 它是内含256 8位存储空间 具有工作电压宽 2 5 5 5V 擦写次数多 大于10000次 写入速度快 小于10ms 等特点 AT24C02的1 2 3脚是三条地址线
  • 如何使用idea来查找所有未使用的代码?

    一 目的 通过idea快速找到项目中没有被使用的代码 二 操作步骤 2 1 Code gt Analyze Code gt Run Inspection by Name 2 2 输入Unused declaration gt 查询没有被使用
  • HTTP Status 500 - Request processing failed; nested exception is java.lang.NullPointerException type

    个人错误记录 本人目前水平不够 所以不喜勿喷 谢谢 我的错误原因 在SSM中 使用set注入的方式注入对象导致 源码 lt Controller RequestMapping role public class RoleController
  • write和fwrite

    如果只是普通地以O RDWR的flag去open一个文件朝里write 不考虑创建 扩增 那默认内核会把文件的这个页面读进来缓存在内核里的 也即所谓的page cache 随后再发起新的write syscall写相同的页面时 只要写在pa
  • vue3中将表格导出成excel文件

    yarn add xlsx yarn add file saver 通过调用exportData方法 excel 文件 传递数据和文件名 function exportToExcel tableData filename 1 JSON 数据
  • 【FPGA】SPI协议

    1 SPI简介 SPI Serial Perripheral Interface 串行外围设备接口 是 Motorola 公司推出的一种同步串行接口技术 SPI 总线在物理上是通过接在外围设备微控制器 PICmicro 上面的微处理控制单元
  • 掌优电子为商家提供合理的移动支付解决方案

    目前官方正式对外的是微信的青蛙 和支付宝的蜻蜓 而市面上众多的刷脸支付设备 更多的是作为系统商联系对应的厂商进行生产 并非官方授权 其背后的安全性是值得考究的 从客观角度去讲的话 官方的设备 就算贵 但正规 安全 且用的放心 刷脸支付的问世
  • vue项目中实现文字滚动(跑马灯)效果——公告滚动播放

    项目需求 系统公告 要从右忘左循环播放的牛皮广告效果 实现 方案一 使用定时器和CSS3的过渡属性来实现