mar*_*son 4 javascript css animation reactjs
在我的基于 React 的应用程序中,我尝试执行一个简单的 css3 宽度转换,例如:
.foo {
transition: width 1s ease-in-out;
}
Run Code Online (Sandbox Code Playgroud)
我想要做的是在反应组件中的元素内设置一个样式,即“width: xx%”,并将其从 0% 动画到 xx%。由于渲染时的元素已经具有此属性,因此动画不起作用。我研究了“ReactCSSTransitionGroup”,但没有更接近解决方案。我开始在组件渲染后使用 setTimeOut 来设置样式属性,但感觉非常混乱和“hackish”。有人能指出我正确的方向吗?
如果您尝试在渲染后为组件设置动画(从 0 到 n%),您可以通过setState调用componentDidMount. 由于浏览器不会重新渲染同一动画帧中已更改的内容,而是合并更改并渲染最终结果,因此您需要将其包装在requestAnimationFrame
我在这篇博文中对此进行了彻底的解释。
代码如下所示:
export default class AnimateMe extends Component {
state = {
width: 0
};
componentDidMount() {
requestAnimationFrame(() => {
this.setState({ width: "75%" });
});
}
render() {
return (
<div style={{ width: this.state.width }}>
Animate my width
</div>
);
}
}
Run Code Online (Sandbox Code Playgroud)
我做了一个工作示例: https ://codesandbox.io/s/7z1j794oy1
希望有帮助!
| 归档时间: |
|
| 查看次数: |
5346 次 |
| 最近记录: |