gpt4 book ai didi

reactjs - 用react-transition-group左右滑动

转载 作者:行者123 更新时间:2023-12-05 01:27:03 26 4
gpt4 key购买 nike

我想用 react-transition-group 左右滑动。当我按下下一步按钮时,它会向右(下一步),当我点击返回按钮时,我想从左边来。我的代码总是从右侧获取它。我怎样才能实现这样的目标

.onboarding-screen
display flex
flex-direction column
flex-grow 1
position absolute
width 100%
height 100%
align-items center
&.step-enter
transform translateX(100%)
transition(all 1s)
&.step-enter-active
transform translateX(0%)
transition(all 1s)
&.step-enter-done
position relative
&.step-exit
transform translateX(-100%)
transition(all 1s)
&.step-exit-active
transform translateX(-100%)
transition(all 1s)
&.step-exit-done
position relative

最佳答案

  • 首先,您不需要-done 变体,
  • 您的 css 仅在您单击下一个按钮时处理动画(从右侧进入,从左侧退出),因此您还需要与之相反:

CSS:

.right-to-left-enter {
transform: translateX(100%);
}
.right-to-left-enter-active {
transform: translateX(0);
transition:all 1s ease;
}

.right-to-left-exit {
transform: translateX(0);
}
.right-to-left-exit-active {
transform: translateX(-100%);
transition:all 1s ease;
}

.left-to-right-enter {
transform: translateX(-100%);
}
.left-to-right-enter-active {
transform: translateX(0);
transition:all 1s ease;
}

.left-to-right-exit {
transform: translateX(0);
}
.left-to-right-exit-active {
transform: translateX(100%);
transition:all 1s ease;
}

您需要TransitionGroupCSSTransition 来实现您想要的滑动动画。但是有一点需要注意:

一旦安装了 CSSTransition,即使您随时更改 classNames 属性,也无法更改退出动画。但是 TransitionGroup 组件有一个名为 childFactory 的属性,它使您能够更改已安装的 CSSTransition 组件的属性。

这是您需要的代码:

const [isNext, setIsNext] = useState(true);

const onNext = () => setIsNext(true);
const onPrevious = () => setIsNext(false);

return (
<TransitionGroup childFactory={child => React.cloneElement(child, { classNames: isNext ? "right-to-left" : "left-to-right", timeout: 1000 })}>
<CSSTransition key={key} classNames="right-to-left" timeout={1000}>
// Put your sliding content here. Change the key as the content changes.
// The value of the key is unimportant
</CSSTransition>
</TransitionGroup>
);

不要忘记在滑动内容上使用绝对定位

关于reactjs - 用react-transition-group左右滑动,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/69809477/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com