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

汶上县住房和城乡规划建设局官方网站wordpress定时发布没用

汶上县住房和城乡规划建设局官方网站,wordpress定时发布没用,青岛互联网公司排名,flash网站系统需求 页面上有个小喇叭,循环展示消息内容 逻辑思路 设置定时器,修改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.yayakq.cn/news/347038/

相关文章:

  • 上海网站建设中恩施州建设局网站
  • 厦门 网站建设公司网站建设内容策略有哪些
  • 南宁网站建设专家wordpress首页添加页面
  • 微信公众号怎么做网站的成立网站有什么要求
  • 机械网站开发方案百度广告管家
  • 秦皇岛网站设计网站系统管理功能
  • 网站建设seo基本要求播州区住房城乡建设路的网站
  • 万网网站空间上海做网站站优云一一十六
  • 网站建设市场报价温州网络网
  • 查不到网站备案天津高端模板建站
  • 房地产网站建设价格牡丹江出现一例
  • 沈阳设计公司排名windows优化大师的功能
  • 长沙高端网站制作公司网页设计风格
  • 网站建设 北京 淘宝专业定制网站开发公司
  • 枣庄网站seo网站如果不续费会怎样
  • 游戏道具网站开发传奇手游平台
  • 源码资源下载站h5活动页面制作
  • ks免费刷粉网站推广马上刷网络上如何推广网站
  • 重庆本地网站有哪些网站集约化平台
  • 手机怎么做自己的网站wordpress做微信登录页面
  • 网站运营专员是干嘛的高层网络架构
  • 小兔自助建站电商怎么开始做
  • 服装公司网站背景图企业公示信息查询系统陕西
  • 宜阳建站工信部门备案网站
  • 益阳房产网站建设织梦dede做网站的优点
  • 在网站里继费织梦如何做中英文版的网站
  • 昆明网站建设方案策划wordpress 云数据库
  • 企业网站的特点是手机网站制
  • 个人怎么创建网站减少wordpress响应时间
  • 安徽建设工程信息网人员专业网站优化排名