当前位置: 首页 > news >正文

微信小程序文本横向无缝滚动

背景:
微信小程序中列表宽度不够长,其中某字段显示不完整,因此要使其自动滚动。
(最初看网上很多用定时器实现,但他们的案例中都只是一个横幅、用定时器也无所谓。但是我的需求中是一个上下无限滚动的列表,如果设置定时器性能耗费太大,因此只用css实现)

样例图:
在这里插入图片描述

我这里是列表轮播 + 商品名称字段左右滚动
微信小程序轮播组件swiper有个坑:display-multiple-items设置的值如果大于列表长度,内容将无法显示

这里主要记录文本横向 无缝 滚动

先说思路:使用css动画让文本向左移动

@keyframes scrollText {0% {transform: translateX(0%);}100% {transform: translateX(-100%);}
}

此时有个问题,不是 无缝 的,文本将在右边出现大量空白,在移动到末尾,再突然出现 ,很难看
要处理这个问题:在文本后面添加一个占位文本、当右边本为空白时 显示占位文本,当一轮动画结束时,第一个文本再覆盖占位文本,视觉上就是无限的 无缝滚动 ,要让一轮动画结束完全覆盖占位文本 也很简单,设置一个向左padding值,

<view class="scroll-text-warp"><text class="scroll-text" style="{{item.scrollStyle}}"> {{item.goods}} </text><text class="scroll-text" style="{{item.scrollStyle}}"> {{item.goods}} </text></view>
.scroll-text {white-space: nowrap;display: inline-block;animation: scrollText 10s linear infinite;padding-left: 40rpx;
}

统一设置速率(文案长短不一 用同样的动画时长会出现滚动速率不同),

list.forEach((item) => {console.log('item',item)const textLength = item.goods.length;const animationDuration = textLength * 0.5 + 's';item.scrollStyle = `animation: scrollText ${animationDuration} linear infinite;`;});this.setData({list});

总代码:
wxml

<view class="fifth-warp card-bg" style="height: 500rpx;margin-top: 200rpx;"><view class="tab-header"><text class="header-item" style="width: 180rpx;">品牌</text><text class="header-item" style="width: 200rpx;flex: 1;">商品名称</text><text class="header-item" style="width: 180rpx;">排名</text></view><swiper vertical="true" autoplay="true" circular="true" interval="2000" display-multiple-items='{{list.length>5?5:list.length}}' style="height: 350rpx;"><block wx:for-index="idx" wx:for='{{list}}' wx:key="index"><swiper-item><view class='swiper-content'><text class='content-item' style="min-width: 180rpx;">{{item.brand}}</text><view class="scroll-text-warp"><text class="scroll-text" style="{{item.scrollStyle}}"> {{item.goods}} </text><text class="scroll-text" style="{{item.scrollStyle}}"> {{item.goods}} </text></view><text class='content-item' style="min-width: 180rpx;">TOP{{item.rank}}</text></view></swiper-item></block></swiper>
</view>

wxss

.tab-header {width: 100%;display: flex;text-align: center;align-items: center;color: #BDBDBD;
}.header-item {font-size: 26rpx;padding: 20rpx 0 40rpx 0;
}.swiper-content {display: flex;
}.content-item {font-size: 24rpx;text-align: center;
}.scroll-text-warp {width: 100%;overflow: hidden;font-size: 24rpx;display: flex;
}.scroll-text {white-space: nowrap;display: inline-block;animation: scrollText 10s linear infinite;padding-left: 40rpx;
}@keyframes scrollText {0% {transform: translateX(0%);/* 开始位置 */}100% {transform: translateX(-100%);/* 结束位置 */}
}

js

const {dcApi_ljq} = require('../../api/index.js');Component({options: {addGlobalClass: true},lifetimes: {attached: function () {this.getList();}},data: {list: []},methods: {getList() {let list = [{brand: 'xxx1', goods: '开始滚动区域滚动区域滚动区域滚动区域滚动区域结束',rank:1},{brand: 'xxx2', goods: '开始滚动区域滚动区域滚动区域滚动区域滚动区域结束',rank:2},{brand: 'xxx3', goods: '开始滚动区域滚动区域滚动区域滚动区域滚动区域结束',rank:3},{brand: 'xxx4', goods: '开始滚动区域滚动区域滚动区域滚动区域滚动区域结束',rank:4},{brand: 'xxx5', goods: '开始滚动区域滚动区域滚动区域滚动区域滚动区域结束',rank:5},{brand: 'xxx6', goods: '开始滚动区域滚动区域滚动区域滚动区域滚动区域结束',rank:6},];list.forEach((item) => {console.log('item',item)const textLength = item.goods.length;const animationDuration = textLength * 0.5 + 's';item.scrollStyle = `animation: scrollText ${animationDuration} linear infinite;`;});this.setData({list});}}
});

相关文章:

微信小程序文本横向无缝滚动

背景&#xff1a; 微信小程序中列表宽度不够长&#xff0c;其中某字段显示不完整&#xff0c;因此要使其自动滚动。 &#xff08;最初看网上很多用定时器实现&#xff0c;但他们的案例中都只是一个横幅、用定时器也无所谓。但是我的需求中是一个上下无限滚动的列表&#xff0c;…...

Layui 主窗口调用 iframe 弹出框模块,获取控件的相应值

var iframeWindow window[layui-layer-iframe index]; iframeWindow.layui.tree............(这里就可以操作tree里面的内容了)。var chrild layero.find(iframe).contents(); chrild.layui.tree (这样是调用不到的)。var child layer.getChildFrame(); child.layui.tree(这…...

镜头边缘的解析力通常比中心差很多的原因是什么?

1、问题背景 之前有总结过一篇文章&#xff0c;“ 相机出图画面一半清晰&#xff0c;一半模糊的原因是什么&#xff1f;”里面有描述到关于镜头边缘的清晰度通常比中心要差的原因主要是光的折射导致的&#xff0c;有读者指出问题&#xff0c;折射率是和传输介质相关&#xff0…...

“控制情绪,理性交流”刍议

今天&#xff0c;本“人民体验官”还是回避推广人民日报官方微博文化产品《走出低谷期的9个习惯》。 截图&#xff1a;来源“人民体验官”推广平台 ​之前&#xff0c;由于笔者读过《人民日报》曾经发表过的关于“学会管理情绪 ”的文章&#xff0c;对文章中这些观点深表认同&…...

UI基础之插画分类优漫动游

一、UI插画分类 UI基础之插画分类   1.扁平插画   优点∶快速上手&#xff0c;同时画风简洁明了&#xff0c;突出重   点&#xff0c;能够快速的让用户了解内容   缺点:过于简洁&#xff0c;运用的也比较普遍&#xff0c;视觉上难以让用户记住   2.肌理插…...

Vue 3.0中Treeshaking特性是什么?

一、是什么 Tree shaking 是一种通过清除多余代码方式来优化项目打包体积的技术&#xff0c;专业术语叫 Dead code elimination 简单来讲&#xff0c;就是在保持代码运行结果不变的前提下&#xff0c;去除无用的代码 如果把代码打包比作制作蛋糕&#xff0c;传统的方式是把鸡…...

SQL union all的使用

背景&#xff1a; 公司业务开发需要将两个取出两个相同表结构&#xff08;原料、辅料&#xff09;的数据&#xff0c;组成一个新视图&#xff0c;使用了UNION ALL SET QUOTED_IDENTIFIER ON SET ANSI_NULLS ON GOCREATE view vw_rawmaterial_ny_list as ( select id,ccode,cc…...

docker 安装 Centos7

1. 从docker 安装 Centos7 查看有哪些 centos7 系统&#xff1a;docker search centos72. 安装 centos7 docker pull docker.io/ansible/centos7-ansible3.使用镜像创建容器 docker run -itd -p 8022:22 --namevm01 -v /bodata:/bodata -h vm01 --privilegedtrue 688353a31…...

Kubernetes技术与架构-Ingress

Ingress是一个流量网关&#xff0c;其根据配置的URI路径路由规则&#xff0c;为运行在Kubernetes集群中的Service分发流量&#xff0c;从系统架构设计的角度看&#xff0c;Ingress位于Service的上层&#xff0c;本文主要描述Ingress的基本使用方式。 如上所示&#xff0c;clien…...

基于Java的文物管理系统设计与实现(源码+lw+部署文档+讲解等)

文章目录 前言具体实现截图论文参考详细视频演示为什么选择我自己的网站自己的小程序&#xff08;小蔡coding&#xff09; 代码参考数据库参考源码获取 前言 &#x1f497;博主介绍&#xff1a;✌全网粉丝10W,CSDN特邀作者、博客专家、CSDN新星计划导师、全栈领域优质创作者&am…...

uniapp图片加水印

1、uniapp加水印 1.1、创建画布容器 <canvas class"watermark-canvas" id"watermark-canvas" canvas-id"watermark-canvas":style"{ width: canvasWidth, height: canvasHeight }" /> 1.2、获取水印内容 async getLocation(…...

react中JSX基础与useState的基本使用 + 评论显示删除需求案例

参考视频&#xff1a;https://www.bilibili.com/video/BV1ZB4y1Z7o8/?p3&spm_id_frompageDriver&vd_source5c584bd3b474d579d0bbbffdf0437c70 如果没有安装create-react-app需要先全局安装 命令&#xff1a;npm i -g create-react-app1.快速搭建开发环境 create-re…...

【OpenCV实现鼠标绘图,轨迹栏做调色板,图像的基本操作】

文章目录 鼠标绘图轨迹栏做调色板图像的基本操作 鼠标绘图 在OpenCV中操作鼠标事件 函数&#xff1a;cv.setMouseCallback() 目的是在鼠标双击的地方画一个圆。首先&#xff0c;我们需要创建一个鼠标回调函数&#xff0c;该函数会在鼠标事件发生时执行。鼠标事件包括左键按下…...

2023年中国自动排气阀产业链、市场规模及存在问题分析]图[

自动排气阀是一种用于排除管道、容器或设备中累积的空气或气体的装置。在液体流动系统中&#xff0c;气体或空气可能会积聚在管道或容器中&#xff0c;影响流体流动、导致气锁和能效降低。自动排气阀的作用是在系统中的气体达到一定压力时&#xff0c;自动地释放气体&#xff0…...

服务器往浏览器推消息(SSE)应用

1&#xff0c;SSE 和 WebSocket 对比 SSE&#xff08;服务器发送事件&#xff09; SSE是一种基于HTTP的单向通信机制&#xff0c;用于服务器向客户端推送数据。它的工作原理如下&#xff1a; 建立连接&#xff1a;客户端通过发送HTTP请求与服务器建立连接。在请求中&#xff…...

Choreographer

系统面试的时候常会遇到&#xff0c;比如它是什么&#xff0c;是用来做什么用的。或许我们大概清楚&#xff0c;但不一定能表达清楚。 在Android框架中&#xff0c;Choreographer&#xff08;舞台监督&#xff09;是一个用于管理和协调UI线程上的动画和绘制操作的系统组…...

CentOS有IP地址,连接不上Xshell或使用Xshell时突然断开

问题原因&#xff1a;未在电脑主机的网络中进行IP地址配置 解决办法&#xff1a; 1.打开控制面板&#xff0c;选择‘网络与共享中心’ 2.选择“更改适配器设置” 3.右键点击以太网3“属性” 4.选择协议版本4&#xff0c;点击属性 5.IP地址填写CentOS的IP地址&#xff1a;192.…...

工业电子中的深力科分享一款PWM控制器 KA3525A

关于PWM控制器&#xff1a; PWM控制器是一种用于控制电机或其他设备的电路&#xff0c;它通过改变脉冲宽度调制&#xff08;PWM&#xff09;信号的占空比来控制设备的输出。PWM控制器可以使用单片机或开发板等设备来实现&#xff0c;通过设定占空比&#xff0c;可以轻松地控制…...

【小白专用】安装Apache2.4+ 安装PHP8.2+ php与sql server 2008 r2连接测试教程

PHP安装 1、PHP下载 PHP For Windows: Binaries and sources Releases 注意&#xff1a; 1.要下载Thread Safe&#xff0c;否则没有php8apache2_4.dll这个文件 2.如果是64位系统要下载x64的&#xff0c;x86的不行 3.下载Zip 2、PHP解压安装 将Zip进行解压&#xff0c;里…...

408计算机网络知识点简记 (背诵用

1. 物理层 1. 奈氏和香农 意义不同:奈氏准则鼓励用更优编码码元(2W是码元/s);香农给出数据传输上限C(1. 不可能高过C,2. 若低于C,一定有手段做到C) C = W ∗ l o g 2 ( 1 + S N ) C =W * log_2(1+\frac{S}{N}) C=W∗log2​(1+NS​) 信噪比 = 10 ∗ l o g 10 ( S N …...

MeterSphere二次开发避坑指南:搞定Kafka、Flyway和JMeter镜像配置的那些坑

MeterSphere二次开发实战&#xff1a;破解Kafka配置、Flyway迁移与JMeter镜像三大难题 当你在深夜的办公室里盯着满屏红色错误日志&#xff0c;第17次尝试启动MeterSphere开发环境时&#xff0c;或许会和我当初一样怀疑人生——为什么官方文档里轻描淡写的配置项&#xff0c;实…...

神经机器翻译数据集构建:Europarl语料处理与优化

1. 神经机器翻译数据集构建实战&#xff1a;从Europarl语料到模型训练在自然语言处理领域&#xff0c;机器翻译一直是最具挑战性的任务之一。2014年&#xff0c;随着神经机器翻译&#xff08;Neural Machine Translation, NMT&#xff09;技术的突破&#xff0c;基于编码器-解码…...

Hugging Face Transformer库实战:从入门到生产部署

1. 理解Hugging Face Transformer库的核心价值第一次接触Hugging Face的Transformer库时&#xff0c;我被它简洁的API设计震撼到了。这个开源库彻底改变了自然语言处理&#xff08;NLP&#xff09;领域的研究和应用方式&#xff0c;让开发者能够用几行代码就调用最先进的预训练…...

终极HiveWE地图编辑器指南:快速掌握魔兽争霸III地图制作

终极HiveWE地图编辑器指南&#xff1a;快速掌握魔兽争霸III地图制作 【免费下载链接】HiveWE A Warcraft III world editor. 项目地址: https://gitcode.com/gh_mirrors/hi/HiveWE 还在为魔兽争霸III原版编辑器的卡顿和复杂操作而烦恼吗&#xff1f;HiveWE作为一款专注于…...

暗黑破坏神2存档编辑器终极指南:5分钟快速掌握游戏修改技巧

暗黑破坏神2存档编辑器终极指南&#xff1a;5分钟快速掌握游戏修改技巧 【免费下载链接】d2s-editor 项目地址: https://gitcode.com/gh_mirrors/d2/d2s-editor 还在为暗黑破坏神2中反复刷装备而烦恼吗&#xff1f;想快速体验不同职业的build却不想从头练级&#xff1f…...

【避坑指南】STM32CubeMX生成LED代码的5个隐藏细节(基于STM32F103C8T6+STLINK)

STM32CubeMX生成LED代码的5个隐藏技术细节解析 作为一名长期使用STM32CubeMX的嵌入式开发者&#xff0c;我曾多次遇到自动生成的LED控制代码在实际硬件上表现异常的情况。这些看似简单的GPIO配置背后&#xff0c;隐藏着许多值得深入探讨的技术细节。本文将基于STM32F103C8T6开发…...

全能资源网站:咖喱君的资源库

分享一个涵盖学习、软件、影音、AI 等全场景资源的免费宝藏网站&#xff0c;帮你一站式解决绝大多数资源需求。——咖喱君的资源库&#xff08;https://link3.cc/galijun&#xff09;...

思源宋体CN终极指南:7款免费开源中文字体快速上手教程

思源宋体CN终极指南&#xff1a;7款免费开源中文字体快速上手教程 【免费下载链接】source-han-serif-ttf Source Han Serif TTF 项目地址: https://gitcode.com/gh_mirrors/so/source-han-serif-ttf 思源宋体CN&#xff08;Source Han Serif CN&#xff09;是Google与A…...

别再降级Playwright了!用Docker在CentOS 7上无痛运行最新版浏览器自动化

在CentOS 7上通过Docker容器化方案运行最新版Playwright的完整指南 如果你是一名长期使用CentOS 7进行自动化测试的开发者&#xff0c;很可能遇到过这样的困境&#xff1a;当你兴奋地想要尝试Playwright的最新功能时&#xff0c;却被系统提示GLIBC_2.27 not found这类依赖错误。…...

3步解锁网易云音乐NCM加密文件:ncmdumpGUI图形化工具完整指南

3步解锁网易云音乐NCM加密文件&#xff1a;ncmdumpGUI图形化工具完整指南 【免费下载链接】ncmdumpGUI C#版本网易云音乐ncm文件格式转换&#xff0c;Windows图形界面版本 项目地址: https://gitcode.com/gh_mirrors/nc/ncmdumpGUI 还在为网易云音乐下载的NCM加密文件无…...