react实现列表滚动组件

news2025/2/22 15:37:22

1.需求

在开发项目的时候,从服务端获取到数据列表后,展示给用户看:需要实现数据自动滚动效果,怎么实现呢?如下图所示:

2.实现

把上面需要实现的功能写成一个组件,页面直接调用该组件即可,代码如下:

要引入组件页面的代码:   

import Scroll from "../../components/Scroll";
 
const Index = () => {
 
 return (
        <div class={style.main}>
                <Scroll />
        </div>
    )
}
 
export default Index;

组件:

import style from "./style.less";
import React, { useEffect, useRef, useState } from "react";
 
const Scroll = () => {
        const timer = useRef(null);
        //这里的数据是通过服务端api接口获取的
        const marqueeList = [
            {
                phone: "155****1111",
                content: "签到获取",
                money: 12.22,
            },
            {
                phone: "151****1111",
                content: "签到获取",
                money: 2,
            },
            {
                phone: "152****1111",
                content: "签到获取",
                money: 2.22,
            },
            ...
        ];
        //是否滚动
        const [isScrolle, setIsScrolle] = useState(true);
        //滚动速度,值越小,滚动越快
        const scrollSpeed = 100;
        const warper = useRef();
        //原数据
        const childDom = useRef();
        //拷贝数据
        const childDomCopy = useRef();
        //鼠标移动,移除方法
        const hoverHandler = (flag) => setIsScrolle(flag);

        useEffect(() => {
            // 设置轮播滚动多拷贝一层,让它无缝滚动
            childDom.current.innerHTML = childDomCopy.current.innerHTML;
            if (isScrolle) {
                if (timer.current) {
                    clearInterval(timer.current);
                }
                timer.current = setInterval(() => {
                    warper.current.scrollTop >= childDom.current.scrollHeight
                        ? (warper.current.scrollTop = 0)
                        : warper.current.scrollTop++;
                }, scrollSpeed);
            }
            return () => {
                clearInterval(timer.current);
            };
        }, [isScrolle]);

        return (
            <div class={style.content}>
                <div class={style.parent} ref={warper}>
                    <div class={`${style.ul_scoll}`} ref={childDomCopy}>
                        {marqueeList.map((value, index) => (
                            <li
                                style={{backgroundColor: index % 2 == 0 ? "#S1AAAA" : "#ABCDEF"}}
                                key={value}
                                onMouseOver={() => hoverHandler(false)}
                                onMouseLeave={() => hoverHandler(true)}
                            >
                                <div class={style.li_intro}>
                                    <div>
                                        {value.phone}
                                    </div>
                                    <div>
                                        {value.content}
                                    </div>
                                    <div class={style.li_money_intro}>
                                        <div  class={style.li_money}>
                                            +{value.money}
                                        </div>
                                        <div  class={style.li_rmb}>
                                            RMB
                                        </div>
                                    </div>
                                </div>
                            </li>
                        ))}
                    </div>
                    <div class={`${style.ul_scoll}`} ref={childDomCopy}></div>
                </div>
            </div>
        );
};
 
export default Scroll;

css:

.content {
  width: 100%;
  height: 14.16rem;
  overflow: hidden;
  position: relative;
  margin: auto;
}

.parent {
  top: 1rem;
  position: relative;
  height: 11.16rem;
  overflow: hidden;
  line-height: 2.5rem;
  overflow-y: scroll;
  scrollbar-width: none;
  -ms-overflow-style: none;
}

.parent::-webkit-scrollbar {
  display: none;
}

.ul_scoll li {
  width: 100%;
  height: 2.5rem;
  font-size: 0.9rem;
  font-weight: bold;
  text-align: center;
  letter-spacing: 0.025rem;
  line-height: 2.5rem;
  color: red;
}

.li_intro {
  color: #205F59;
  font-weight: 930;
  flex-direction: row;
  align-items: center;
  justify-content: space-between;
  display: flex;
  padding-left: 0.25rem;
  padding-right: 0.25rem;
}

.li_money_intro {
  display:flex;
  color: #39B54A;
}

.li_oney {
  font-size: 1rem;
}

.li_rmb {
  color:#FF6000;
  margin-left:0.8rem;
  font-size: 0.8rem;
}

这样就能够实现数据不停滚动了

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1031555.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

视频号视频怎么下载(视频号如何下载里面的视频)

根据大家分享出来的视频号如何下载里面的视频的相关提供的下载方案&#xff0c;我们特别总结了多款可以下载视频号视频怎么下载的办法&#xff01; 如果你还不会提取视频号里的视频&#xff0c;赶快来看看视频号里的视频怎么保存到相册的吧&#xff01; 1:视频下载缓存 该方法…

Python中转换IP地址格式的方法

IP地址一般用字符串“XXX.XXX.XXX.XXX”表示。例如&#xff0c;“192.168.147.1”、“127.0.0.1”等。在确定主机IP地址段时&#xff0c;需要将IP地址的每段转换成数字。 1 inet_aton()方法 该方法的使用方法是 socket.inet_aton(ip_string) 其中&#xff0c;参数ip_string…

主机安全技术

主机安全 1、主机分类 类Unix主机 Unix&#xff1a;Solaris&#xff0c;AIXLiunx&#xff1a;Redhat&#xff0c;Centos&#xff0c;SUSE等 Windows主机 Windows server 2012&#xff0c;server 2008等 特殊主机 IBM iseris&#xff0c;大型机等等 2、主机风险 操作系统风…

微信这样的加人方式,既安全又解放双手

在当今竞争激烈的市场环境下&#xff0c;如何高效地管理和运营私域流量成为企业发展的关键。 1.批量自动化加好友的优势 &#xff08;1&#xff09;提高效率&#xff1a;批量自动化添加好友功能可以帮助企业添加大量潜在客户或目标客户。相比手动逐个添加好友&#xff0c;自动…

RocketMQ的消息存储(持久化机制)

一、RocketMQ的主要存储结构 RocketMQ 主要存储的文件包括CommitLog文件、ConsumeQueue 文件、IndexFile文件。 1.CommitLog RocketMQ将所有主题的消息都存储在CommitLog。Producer 发送消息至 Broker 端&#xff0c;然后 Broker 端使用同步或者异步的方式对消息刷盘持久化…

Java带APP的智慧工地项目源码

智慧工地利用移动互联、物联网、云计算、大数据等新一代信息技术&#xff0c;彻底改变传统施工现场各参建方的交互方式、工作方式和管理模式&#xff0c;为建设集团、施工企业、监理单位、设计单位、政府监管部门等提供一揽子工地现场管理信息化解决方案。 智慧工地项目技术架构…

vuejs - - - - - 递归组件的实现

递归组件的实现 1. 需求描述&#xff1a;2. 效果图&#xff1a;3. 代码3.1 封装组件代码3.2 父组件使用 1. 需求描述&#xff1a; 点击添加行&#xff0c;增加一级目录结构当类型为object or array时&#xff0c;点击右侧➕&#xff0c;增加子集点击右侧&#x1f6ae;&#x…

ETHERNET IP站转MODBUS RTU协议网

产品介绍 JM-EIP-RTU是自主研发的一款ETHERNET/IP从站功能的通讯网关。该产品主要功能是将各种MODBUS-RTU设备接入到ETHERNET/IP网络中。 JM-EIP-RTU连接到ETHERNET/IP总线中做为从站使用&#xff0c;连接到MODBUS-RTU总线中做为主站或从站使用。 产品参数 技术参数 l 网关…

leetcode:66. 加一(python3解法)

难度&#xff1a;简单 给定一个由 整数 组成的 非空 数组所表示的非负整数&#xff0c;在该数的基础上加一。 最高位数字存放在数组的首位&#xff0c; 数组中每个元素只存储单个数字。 你可以假设除了整数 0 之外&#xff0c;这个整数不会以零开头。 示例 1&#xff1a; 输入&…

【漏洞复现系列】二、weblogic-cve_2020_2883(RCE/反序列化)

Key words&#xff1a;T3协议&#xff0c;weblogic Server&#xff0c;反序列化 2.1、漏洞原理 ​cve_2020_2883 远程代码执行漏洞存在于 WebLogic Server 核心组件中,允许未经身份验证的攻击者通过 T3 协议网络访问并破坏易受攻击的 WebLogic Server&#xff0c;成功的漏洞利…

亚马逊、沃尔玛测评养号、采退需要解决防关联哪些问题?

大家好我是跨境平台测评养号七年从事经验的珑哥。养号环境软件开发&#xff0c;深度解决平台矩阵养号防关联&#xff0c;砍单&#xff0c;F号问题。 今天我给大家讲一下做亚马逊、沃尔玛测评项目需要用到的防关联、防封号环境的一些底层技术原理。这里讲的内容我相信很少有人能…

思科CCNA实验配置-视频教程

【微|信|公|众|号&#xff1a;厦门微思网络】 【微思网络www.xmws.cn&#xff0c;成立于2002年&#xff0c;专业培训21年&#xff0c;思科、华为、红帽、ORACLE、VMware等厂商认证及考试&#xff0c;以及其他认证PMP、CISP、ITIL等】 1&#xff1a; 思科CCNA实验配置——IOS基本…

vscode vue html 快捷键

css文件 选择多行 按下ctrl不放 按下鼠标滚轮不放&#xff08;鼠标中键&#xff09; 鼠标向下移动 同时修改多个相同的字符串 <style> .base-goods-item li {width: 304px;height: 404px;background-color: #eef9f4; } .base-goods-item li {display: block; } .base-…

IPEmotion 2023 R2支持快速导入MDF4文件

新发布的IPEmotion 2023 R2提供了多种新功能&#xff0c;其中一大新功能是支持快速导入MDF4文件和新的ASAM CMP标准。此外&#xff0c;现在还可用注释标记测量文件中的相关部分。 — 创新一览 — ■ 快速导入MDF4文件 • 在MDF4的导入选项中新增“加载行为”选项&#xff1a;…

【深度学习】Pytorch 系列教程(一):PyTorch数据结构:1、Tensor(张量):维度(Dimensions)、数据类型(Data Types)

目录 一、前言 二、实验环境 三、PyTorch数据结构 0、分类 1、Tensor&#xff08;张量&#xff09; 1. 维度&#xff08;Dimensions&#xff09; 0维&#xff08;标量&#xff09; 1维&#xff08;向量&#xff09; 2维&#xff08;矩阵&#xff09; 3维张量 2. 数据…

clickhouse学习之路----clickhouse的特点及安装

clickhouse学习笔记 反正都有学不完的技术&#xff0c;不如就学一学clickhouse吧 文章目录 clickhouse学习笔记clickhouse的特点1.列式存储2. DBMS 的功能3.多样化引擎4.高吞吐写入能力5.数据分区与线程级并行 clickhouse安装1.关闭防火墙2.CentOS 取消打开文件数限制3.安装依…

IDEA回滚代码

1、查看提交日志&#xff0c;选择回滚到指定提交 2、选择Hard&#xff0c;点击reset Reset Type 有三种&#xff1a; mixed 默认方式&#xff0c;只保留源码&#xff0c;回退commit和index信息 soft 回退到某个版本&#xff0c;只回退了commit的信息&#xff0c;不会恢复到in…

有效的网络带宽监控策略

世界各地的企业正在采用多种策略来减少瓶颈、增强网络性能并最大限度地提高投资回报率&#xff0c;以跟上不断发展的混合基础架构的步伐。虽然这些策略因组织而异&#xff0c;并提供了自己的好处&#xff0c;但它们可能会使 IT 基础架构的监控方式复杂化。在设计有效的监控策略…

博弈论——连续产量古诺模型

连续产量古诺模型 连续产量古诺模型是博弈论中非常经典的模型&#xff0c;以两厂商连续产量古诺博弈为例&#xff1a; 1、模型建立 Player&#xff1a;两个供应相同产品的厂商 产量&#xff1a;厂商1的产量为q1&#xff0c;厂商2的产量为q2&#xff0c;市场总供给为Qq1q2。…

【二、安装centOS】

下载 地址&#xff1a;https://mirrors.aliyun.com/centos/ 地址 1、https://mirrors.aliyun.com/centos/7.9.2009/ 2、https://mirrors.aliyun.com/centos/7.9.2009/isos/ 3、https://mirrors.aliyun.com/centos/7.9.2009/isos/x86_64/ 选哪一个 可以选择第一个&#xff0…