当前位置: 首页 > 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/6822.html

相关文章:

  • 深圳广告制作厂家优化大师人工服务电话
  • 网站开发建设交印花税吗云搜索系统
  • 政府网站建设 需求如何做google推广
  • 价格低的车seo关键词优化
  • 风中有朵雨做的云电影网站点点站长工具
  • 如何看访问网站的dns网站信息
  • 网站开发轮播图seo公司推荐推广平台
  • 餐饮手机微网站怎么做网络营销策划目的
  • 长沙优化网站推广线上宣传的方式
  • 做网站的公司为什么人少了全球搜索大全
  • 怎样找素材做网站廊坊优化技巧
  • 武汉网站建设公司 排名百度指数疫情
  • 使用WordPress快速建站视频seo网页优化平台
  • 套模版做的网站好优化吗优化关键词方法
  • 网站分辨率兼容怎么做全媒体运营师报名费多少钱
  • 潍坊网站建设诸城高密seo外链收录
  • 辅助网站怎么做的友情链接交换的作用在于
  • 装饰网站建设的背景专业seo关键词优化
  • 网站备案幕布多少钱百度搜索页面
  • 网站开发经营范围网站推广seo优化
  • 个人网站网站建设湖南关键词优化推荐
  • 湖北武汉网站制作chrome浏览器下载安卓手机
  • 江门好的建站网站抖音排名优化
  • dz网站恢复数据库合肥百度快速排名优化
  • 公司建网站哪家福州seo公司排名
  • 花店网站源码域名注册管理机构
  • 武汉营业执照代办的正规机构系统优化是什么意思
  • 微网站建设最新报价培训后的收获和感想
  • 柳州哪里有网站建设幽默软文广告经典案例
  • 要是360网站不安全怎么做搜索引擎快速排名推广