- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
第
基于React.js实现简单的文字跑马灯效果
刚好手上有一个要实现文字跑马灯的react项目,然后ant-design上面没有这个组件,于是只能自己手撸一个。
我想到的最简单的方法,就是定位啦,定时移动这个文字块不就跑起来了。
需要注意的是,要判断文字的宽度,当文字超出屏幕的宽度的时候再动起来,我用的是hook的写法,要在销毁页面的时候清掉定时器。定时器要放在useRef里面。
consttimer=useRefany(null);
const[left,setLeft]=useState(0);
constcontentRef=useRefany(null);
useEffect(()={
//当监听到文字变化时,一定要先清掉定时器,如果文字较短的话就不会再启动
if(timer.current){clearInterval(timer.current);}
constcontentDom=contentRef.current;
if(contentDom){
constobj=contentDom.getBoundingClientRect();
//判断文字框长度
if(obj.widthprops.width){
timer.current=setInterval(()={
//注意state是负数,?当数字移动到最后的时候,下一次从父元素的宽度开始,看起来就是一直在向左移动
//文字框的宽度要时时获取
//setLeft要从回调里面获取,不然不能时时更新
setLeft((state)=-state=contentDom.getBoundingClientRect().widthprops.width:state-1,);},100);
}else{setLeft(0);}
},[props.children]);
useEffect(()={
//注销时,清空定时器
return()={
if(timer.current){clearInterval(timer.current);}
},[]);
return(divclassName={styles.noticeCompWrapper}
这移动效果还可以吧,时间间隔一定要小,不然就会一卡一卡的
第一种很容易吧,其实最开始是想用纯css来写的,考虑到css没法获取自适应宽度,咋判断文字移动到末尾了?但是我觉得,css肯定是可以办到,于是我继续探索...
animation走起,,,咱们假设外边框长120px,文字长240px
@keyframesrun{
0%{transform:translateX(0);}
50%{transform:translateX(-240px);}
50%{transform:translateX(120px);}
100%{transform:translateX(-240px);}
}
总感觉有啥不对,这个字咋往回跑,这感觉跑来跑去的。。。
平心静气~没事没事,不就是个小bug么~
仔细思考一下,这只要写两个动画就解决了,因为其实除了第一次不同,后面都是从右边进入视角的有木有。
@keyframesrun{
from{transform:translateX(0);}
to{transform:translateX(-240px);}
@keyframesloop{
from{transform:translateX(120px);}
to{transform:translateX(-240px);}
}
咱们用的时候,第一个走一遍就好了,循环后面那个:
.textContent{
white-space:nowrap;
animation-name:run,loop;
animation-duration:5s;
animation-iteration-count:1,infinite;
animation-timing-function:linear;
position:relative;
}
look,是不是好多了~
接下来就是文字长度的问题了~咋们咋控制他要不要动啊?还有移动的时间和距离咋控制??
首先动画时间,less肯定是算不出来
您可能关注的文档
最近下载
- 体例格式8:工学一体化课程《windows服务器基础配置与局域网组建》任务3学习任务考核方案.docx VIP
- 石方破碎开挖施工组织设计.pdf VIP
- TCCPA-陆上风力发电机组钢混塔架施工与质量验收规范.pdf VIP
- 2025年浙江省江山市中考数学试题及参考答案详解【新】.docx VIP
- 支持性护理对结直肠癌术后结肠造口患者生活质量改善情况分析.pdf VIP
- Goodrive300-01A系列空压机专用变频器说明书.pdf
- 跨境电商平台创业计划书.docx VIP
- 智能制造系统建模与仿真 课件 第1章 智能制造技术的产生及发展.pptx
- 2025年辅警招聘公安基础知识100题及答案.pdf VIP
- 砂浆及砌块原始记录.docx VIP
文档评论(0)