微信小程序从右向左无限滚动组件封装(类似公告)

ops/2025/3/18 2:11:04/

组件代码

wxml代码

<view class="container"><view class="text-wrapper"><!-- 这两个都不能删除,用来放无限滚动的,第一个滚完第二个接上,第二个滚完第一个又接上了 --><text class="scroll-text text1" style="left: {{-moveleft}}px;">{{ scrollText }}</text><text class="scroll-text text2" style="left: {{ moveleft2}}px;">{{ scrollText }}</text></view>
</view>

wxss代码

.container {display: flex;width: 100vw;
}.text-wrapper {display: flex;width: 100vw;height: 50rpx;overflow: hidden;position: relative;margin-right: 20rpx;margin-left: 20rpx;
}.scroll-text {white-space: nowrap;
}.text1 {position: absolute;white-space: pre;font-size: 26.37rpx;line-height: 28rpx;color: #FAEECC;
}.text2 {position: absolute;white-space: pre;font-size: 26.37rpx;line-height: 28rpx;color: #FAEECC;
}

js代码

Component({/*** 组件的属性列表*/properties: {// 两文本的内容间隔interval_widgth: {type: Number,value: 10},scrollText:{type:String,value:'这里是需要无缝滚动的文本,用于检测滚动效果是否正常!'}},/*** 组件的初始数据*/data: {moveleft:0,moveleft2:0,text_width:0,timer:null},/*** 组件的方法列表*/methods: {},lifetimes: {attached() {},ready() {// 获取内容的宽度const query = wx.createSelectorQuery().in(this);query.select('.scroll-text').boundingClientRect().exec((res) => {this.setData({'text_width':res[0].width,moveleft2: res[0].width+this.data['interval_widgth']})});},detached(){clearInterval(this.data.timer);}},pageLifetimes: {show() {this.data.timer=setInterval(()=>{if(this.data.moveleft>=this.data.text_width+this.data.interval_widgth){this.setData({moveleft:-(this.data.interval_widgth+this.data.text_width)})};if(-(this.data.moveleft2)>=this.data.text_width+this.data.interval_widgth){this.setData({moveleft2:(this.data.interval_widgth+this.data.text_width)})};this.setData({moveleft:this.data.moveleft+2,moveleft2:this.data.moveleft2-2})},20)},hide(){clearInterval(this.data.timer);}}})

页面使用

在页面的json文件引入组件

{"usingComponents": {"gundong": "../../components/gundong/gundong"}
}

使用

<gundong></gundong>

这里也支持传值,如果封装的值或者样式不满足需求可以修改组件传入更多数据,不影响滚动功能即可


http://www.ppmy.cn/ops/166658.html

相关文章

Spring Boot 核心知识点:依赖注入 (Dependency Injection)

Spring Boot 核心知识点&#xff1a;依赖注入 (Dependency Injection) 一、引言 在软件开发中&#xff0c;对象之间的依赖关系是不可避免的。一个对象通常需要与其他对象协作才能完成其功能。传统的对象创建方式往往需要在对象内部显式地创建或查找其依赖的对象&#xff0c;这…

R 语言科研绘图 --- 密度图-汇总

在发表科研论文的过程中&#xff0c;科研绘图是必不可少的&#xff0c;一张好看的图形会是文章很大的加分项。 为了便于使用&#xff0c;本系列文章介绍的所有绘图都已收录到了 sciRplot 项目中&#xff0c;获取方式&#xff1a; R 语言科研绘图模板 --- sciRplothttps://mp.…

2025 香港 Web3 嘉年华:全球 Web3 生态的年度盛会

自 2023 年首届香港 Web3 嘉年华成功举办以来&#xff0c;这一盛会已成为全球 Web3 领域规模最大、影响力最深远的行业活动之一。2025 年 4 月 6 日至 9 日&#xff0c;第三届香港 Web3 嘉年华将在香港盛大举行。本届活动由万向区块链实验室与 HashKey Group 联合主办、W3ME 承…

数学建模 第二节

目录 前言 一 解题技巧 二 非线性规划问题 三 钻井布局问题 总结 前言 继续学习数学建模 一 解题技巧 题目分析 1 每次写题目时候&#xff0c;都要把题目进行可视化------很有必就是把题目转化为图谱 2 对应的约束条件是要用文字进行说明 3 优化后的模型是要满足…

Penguins“Collect to Earn”新标杆,开启Web3.0与AI融合未来

Penguins 项目宣布即将上线&#xff0c;这款基于 Base 链的“Collect to Earn”区块链游戏以 AI 驱动的 GameFi 体验、ERC-404 技术创新和蓬勃社区能量&#xff0c;开创 Web3.0 新纪元。项目计划发行 25,920 张独特企鹅主题 NFT&#xff0c;每张附带 1000 万 PGS 代币&#xff…

Pytorch 第十回:卷积神经网络——DenseNet模型

Pytorch 第十回&#xff1a;卷积神经网络——DenseNet模型 本次开启深度学习第十回&#xff0c;基于Pytorch的DenseNet卷积神经网络模型。这是分享的第五个卷积神经网络模型。在第九回当中&#xff0c;分享了ResNet模型&#xff0c;该模型解决了梯度消失和网络退化的问题。本回…

(性能测试)性能测试工具 2.jmeter的环境搭建 3jmeter元件和4使用实例 5jmeter元件和参数化

目录 性能测试工具 性能测试工具 jemeter环境搭建 jmeter的常用目录介绍 jmeter修改语言和主题--jmeter界面的汉化 jmeter元件 jmeter元件和组件的介绍 jmeter的作用域原则 jmeter的执行顺序 案例&#xff1a;执行顺序 jmeter使用案例 jmeter线程组的介绍 jmeter…

【新人系列】Golang 入门(五):集合类型 - 下

✍ 个人博客&#xff1a;https://blog.csdn.net/Newin2020?typeblog &#x1f4dd; 专栏地址&#xff1a;https://blog.csdn.net/newin2020/category_12898955.html &#x1f4e3; 专栏定位&#xff1a;为 0 基础刚入门 Golang 的小伙伴提供详细的讲解&#xff0c;也欢迎大佬们…