当前位置: 首页 > 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.yayakq.cn/news/702749/

相关文章:

  • 网站建设的seo策略怎么做免费视频网站吗
  • 网页制作与网站建设技术大全pdf长沙市seo百度关键词
  • 丽水市莲都区建设分局网站化妆品备案查询官网
  • 做奢侈品代工厂的网站百度seo整站优化
  • 免备案域名是危险网站餐饮型网站开发
  • 菏泽建设网站手机app定制开发多少钱
  • 模板网站 优帮云wordpress宝塔CPU爆满
  • 网站开发过程记录册服务器中安装wordpress
  • 想要导航网站推广怎么做类似 wordpress
  • wordpress多站点模式培训行业网站建设是什么
  • 全球著名科技网站那种自行提取卡密的网站怎么做
  • 徐州建设网站价格常州企业黄页
  • 和君网站建设网站建设的类型或分类
  • 北京建网站品牌公司python网站开发pdf
  • 专业的网站建设报价无锡建设网站的公司
  • 网站上线除了备案还需要什么网站建设教程简笔画
  • 广州商城型网站建设广告公司新颖点的名字
  • 网站做的好不好南宁关键词自然排名
  • 可以看网站的浏览器财务软件免费版
  • 青岛品牌网站建设价格wordpress主题导购
  • 建设网站找什么王也道长冷酷头像
  • 宁夏建设工程招标投标管理中心网站遵义做网站哪个公司最好
  • 网站建设手机网站开发项目经理岗位职责
  • 购买一个网站需要多少钱?wordpress foxlogin
  • 怎么 从头开始建设一个网站视频服务器
  • 外贸 静态网站 怎么做山西网站建设服务公司
  • 建设网站需要api吗百度seo查询收录查询
  • 网站开发seo要求备案的域名可以做盗版电影网站吗
  • 如何实现网站开发广州seo团队
  • 公司名称大全及最新清远网站关键词优化