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

做网站做地区好还是全国的好站长工具精品

做网站做地区好还是全国的好,站长工具精品,郑州做网站公司 汉狮网络专业,龙岗汤坑社区网站建设需求 页面上有个小喇叭,循环展示消息内容 逻辑思路 设置定时器,修改translateX属性来实现滚动,判断滚动位置,修改list位置来实现无限滚动 实现效果 代码 /** Author: Do not edit* Date: 2023-09-07 11:11:45* LastEditors: …

需求

页面上有个小喇叭,循环展示消息内容

逻辑思路

  • 设置定时器,修改translateX属性来实现滚动,
  • 判断滚动位置,修改list位置来实现无限滚动

实现效果

在这里插入图片描述

代码

/** @Author: Do not edit* @Date: 2023-09-07 11:11:45* @LastEditors: atwlee* @LastEditTime: 2023-09-07 15:23:21* @Description:* @FilePath: /pan-ui/packages/Base/src/MessageScroll/index.tsx*/import { ReactNode, forwardRef, useEffect, useImperativeHandle, useRef, useState } from 'react';
import './index.css';export interface MessageScrollProps {messages: ReactNode[];speed?: number;gap?: number;
}export interface MessageScrollRef {start: () => void;pause: () => void;restart: (sleep?: number) => void;
}const Index = forwardRef<MessageScrollRef, MessageScrollProps>((props, ref) => {const { messages, speed = 20, gap = 20 } = props;const [messageList, setMessageList] = useState<ReactNode[]>([]);const messageListRef = useRef<ReactNode[]>([]);const [translateX, setTranslateX] = useState(0);const container = useRef<HTMLDivElement>(null);const exceed = useRef(false);const scrollX = useRef(0);const run = useRef(true);useEffect(() => {setMessageList(messages);}, [messages]);useEffect(() => {restart(0);if (container.current) {exceed.current = container.current.clientWidth < container.current.scrollWidth - gap;}messageListRef.current = messageList;}, [messageList]);const handleMessage = () => {const firstChildWidth = container.current?.firstElementChild?.clientWidth;if (firstChildWidth && scrollX.current >= firstChildWidth + gap) {const [first, ...rest] = messageListRef.current;setMessageList([...rest, first]);}};useEffect(() => {const timer = setInterval(() => {if (run.current && exceed.current) {scrollX.current += 0.5;handleMessage();setTranslateX(translateX - scrollX.current);}}, speed);return () => clearInterval(timer);}, []);const restart = (sleep = 200, reset = false) => {setTranslateX(0);reset && setMessageList(messages);scrollX.current = 0;run.current = false;const timer = setTimeout(() => {run.current = true;clearTimeout(timer);}, sleep);};useImperativeHandle(ref, () => ({start: () => {run.current = true;},pause: () => {run.current = false;},restart: (sleep) => {restart(sleep, true);},}));return (<div className="rc-message-scroll-container" ref={container}>{messageList.map((message, index) => (<divkey={index}className="rc-message-scroll-item"style={{ transform: `translate(${translateX}px)`, marginRight: `${gap}px` }}>{message}</div>))}</div>);
});export default Index;
.rc-message-scroll-container {position: relative;display: flex;flex-wrap: nowrap;overflow: hidden;
}
.rc-message-scroll-container .rc-message-scroll-item{flex-shrink: 0;
}

FAQ

  1. 判断了内容不超出,就不滚动
  2. 如果内容超出了,但是内容太少,导致没有及时的handleMessage 没有处理这一块的逻辑。解决办法,就是double一下数据
http://www.hrbkazy.com/news/6063.html

相关文章:

  • 高密做网站的价位信息流广告文案
  • 电子商务网站建设可行性 分析站长统计幸福宝2022年排行榜
  • 独立站建设公司免费观看b站的广告网站平台
  • 深圳做分销商城网站口碑营销公司
  • 教育网站开发价钱新闻发布会新闻通稿
  • 东营网站建设运营公司谷歌官网首页
  • 怎么免费给网站做收录腾讯广告投放平台
  • 如何查询网站空间商东莞关键字排名优化
  • 乐山 网站建设刷赞网站推广永久
  • 肥乡专业做网站seo文章优化方法
  • 免费咨询皮肤科医生回答在线网络推广的优化服务
  • mac 做网站开发明星百度指数排行
  • 新闻网站开发摘要合肥做网站哪家好
  • 建站行业市场地推任务网
  • 只用js可以做网站吗邯郸网站优化
  • 有那些专门做财务分析的网站网络营销课程大概学什么内容
  • 求做图的网站合肥seo搜索优化
  • 什么是网站开发框架网站收录登录入口
  • 做茶叶网站seo管理软件
  • 公司用于做网站的费用怎么做账百度登录个人中心官网
  • 自适应网页设计教程seo人工智能
  • 房产信息网官方厦门百度seo公司
  • 河南郑州网站设计公司营销策划方案怎么做
  • 网站备案号查询平台seo优化技术是什么
  • 有专门做ppt的网站哪家网络公司比较好
  • 行业网站建设价格职业培训机构需要什么资质
  • 国外做游戏的视频网站域名停靠网页推广大全2023
  • 济宁专业网站制作公司口碑营销的前提及好处有哪些?
  • c2c交易平台官方网站精品成品网站1688
  • 企业门户登陆全国分站seo