vue组件系列-走马灯组件
<template> <div class="sec-alert"> <div :class="{ animated: isAnimating }"> <div class="line" v-text="tips[0]"></div> <div class="line" v-text="tips[1]"></div> </div> </div> </template> <script> import { broadcast } from '../utils/data.js'; let timer export default { name: 'Broadcast', props: { }, data() { return { ti: 0, tips: [], isAnimating: false, alerts: broadcast.data || [] } }, methods:{ startAnimate() { if (timer) clearInterval(timer) let _alerts if (this.alerts.length === 0){ _alerts = [] } else if (this.alerts.length === 1) { _alerts = [ this.alerts[0], this.alerts[0] ] } else { _alerts = this.alerts } this.ti = 1 this.tips = _alerts.slice(0, 2) //this.ti = 0 //this.tips = _alerts.slice(this.ti, this.ti + 2) timer = setInterval(() => { this.isAnimating = true setTimeout(() => { this.isAnimating = false this.$nextTick(() => { //这里是数据随机取法 let _ridx = Math.floor(Math.random() * _alerts.length); this.tips = [_alerts[this.ti], _alerts[_ridx]]; this.ti = _ridx; //数据按顺序取法 if (this.ti === _alerts.length - 2) { this.ti = this.ti + 1 this.tips = [ _alerts[_alerts.length - 1], _alerts[0] ] } else { this.ti = (this.ti + 1) % _alerts.length this.tips = _alerts.slice(this.ti, this.ti + 2) } }) }, 500) }, 3000); } }, mounted() { this.startAnimate() }, watch: { alerts() { if (this.alerts && this.alerts.length) { this.startAnimate() } } }, destroyed() { if (timer) { clearInterval(timer) timer = null } } } </script> <style lang="postcss"> .sec-alert { width:95%; margin:0 auto; height: 61px; border-radius: 6px; background: url('../assets/images/hongbao_scroll_icon.jpg') no-repeat 20px center #db2031; overflow: hidden; padding-left: 73px; .line{ line-height:61px; font-family: PingFangSC; font-size: 26px; letter-spacing: 0.52px; color: #f9d587; } .animated { transform: translateY(-50%); transition: transform .4s linear; } } </style>
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· .NET周刊【3月第1期 2025-03-02】
· 分享 3 个 .NET 开源的文件压缩处理库,助力快速实现文件压缩解压功能!
· [AI/GPT/综述] AI Agent的设计模式综述
2013-01-17 DataTable批量插入数据库四种方式比较