当前位置: 首页 > 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.bjxfkj.com.cn/article/107667.html

相关文章:

  • 郑州网站模板wordpress 改成动态
  • 什么软件可以自主建设网站设计素材网站排行榜
  • 哪家好做网站网站开发合作协议书
  • 可信赖的常州网站建设给你一个网站你怎么做的吗
  • 优化网站软文网站内页怎么做
  • wordpress 购物网站做网站团队的人员安排
  • 阜阳建设网站深圳公租房
  • 新作的网站怎么做百度推送哪些行业做网站最重要
  • 怎么做网站推销产品博客和个人网站建设情况
  • 柳州建站个人crm
  • 福田做网站竞价托管推广哪家好
  • 代做硬件毕业设计网站建筑模板有哪些
  • 东莞网站设计效果建网站
  • 3340网站建设与管理做网站放广告收益
  • 网站建设合同属于承揽合同吗凭祥网站建设
  • 手机端网站开发页哪个网站做3d模型
  • 网站开发一般用什么数据库怎么注册公司名字
  • 上海网站建设seodian学校网站模板大全
  • 实用网站开发主页面设计
  • 中山建网站报价wordpress修改功能小工具栏
  • 代做毕业设计找哪个网站好免费试用网站 源码
  • 为女足世界杯创建一个网站上海网络营销品牌推广
  • 网站关键词排名很好的原因湖州网站设计
  • 龙岗网站建设费用大型做网站的公司有哪些
  • 玩具网站建设360识图
  • 免费ip地址网站楼市最新消息
  • 博物馆网站模版做网站运营工资是不是很低
  • 网络销售型网站有哪些内容好看的美食网站设计
  • 怎么样做销往非洲太阳能板的网站开发公司利用员工身份贷款买房子
  • 顺义区做网站公众号怎么制作流程