【发布时间】:2017-02-25 03:07:58
【问题描述】:
这么简单的事情应该很容易完成,但我对它的复杂程度感到震惊。
我要做的就是为 React 组件的安装和卸载设置动画,仅此而已。以下是我到目前为止尝试过的方法以及每种解决方案都不起作用的原因:
-
ReactCSSTransitionGroup- 我根本没有使用 CSS 类,都是 JS 样式,所以这行不通。 -
ReactTransitionGroup- 这个较低级别的 API 很棒,但是它需要您在动画完成时使用回调,所以在这里仅使用 CSS 过渡将不起作用。总有动画库,这就引出了下一点: - GreenSock - 许可对 IMO 的商业用途过于严格。
- React Motion - 这看起来很棒,但
TransitionMotion对我的需要来说非常混乱和过于复杂。 - 当然,我可以像 Material UI 那样做一些诡计,其中元素被渲染但保持隐藏 (
left: -10000px) 但我宁愿不走那条路。我认为它很老套,我希望卸载我的组件,以便它们清理并且不会弄乱 DOM。
我想要容易实现的东西。在安装时,为一组样式设置动画;在卸载时,为相同(或另一组)样式设置动画。完毕。它还必须在多个平台上具有高性能。
我在这里碰壁了。如果我遗漏了什么并且有一种简单的方法可以做到这一点,请告诉我。
【问题讨论】:
-
我们这里说的是什么动画?
-
只是一些简单的东西,比如 CSS 不透明度淡入和
transform: scale -
第 1 点和第 2 点让我很困惑。你使用什么样的动画? JS 过渡还是 CSS 过渡?
-
不要将 CSS 样式/类(例如
.thing { color: #fff; })与 JS 样式(const styles = { thing: { color: '#fff' } })混淆) -
但问题是,当您尝试使用 javascript 更改样式时,您实际上是在替换不会提供任何过渡的元素的样式。
标签: animation reactjs css-animations gsap react-motion