Dal*_*vik 7 javascript animation css-transitions reactjs
我有一个小组件,带有一些文本。
在useEffect中,我只是将元素的顶部设置为一些值。
CSS:
.box {
display: flex;
flex-direction: column;
position: relative;
top: 0;
transition: top 0 ease-in;
}
useEffect(() => {
setTimeout(()=> { // with this it is working.
const elems = document.getElementsByClassName("box");
[...elems].forEach(function (e) {
e.style.top =`-200px`; // without settimeout transition is not working
});
});
}, []);
Run Code Online (Sandbox Code Playgroud)
我的标记:
<div className='progress'>
<div className='box' />
<div className='box' />
<div className='box' />
</div>
Run Code Online (Sandbox Code Playgroud)
现在,当我频繁刷新时,我会看到转换发生了几次,但不是每次都发生。
但是当我将代码包装在 setTimeout 中时,我每次都会看到一个转换。
我不知道为什么会发生这种情况。
小智 2
在转换到新状态之前,浏览器可能没有时间应用初始状态。setTimeout 引入了延迟,让浏览器有时间应用初始状态,然后转换到新状态。
import React, { useEffect } from 'react';
const YourComponent = () => {
useEffect(() => {
setTimeout(() => {
const elems = document.getElementsByClassName("box");
[...elems].forEach(function (e) {
e.style.top = "-200px";
});
}, 0);
}, []);
return (
<div className="box">
{/* Your component content */}
</div>
);
};
export default YourComponent;
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
276 次 |
| 最近记录: |