reactjs - 反应我想在动画结束时隐藏 div 标签
问题描述
我正在使用 framer-motion 进行动画制作。当动画 pageVariants 完成时,我想隐藏用于动画的 div 标签。目前,当动画完成时,div 标签被移动到屏幕底部,以便用户可以垂直滚动。我想让它在动画结束后用户不能垂直滚动。有什么方法可以检测动画何时完成?
import { motion } from 'framer-motion';
import { FunctionComponent } from 'react';
const Home: FunctionComponent = () => {
const ease = [0.43, 0.13, 0.23, 0.96];
const pageVariants = {
initial: {
y: '0',
transition: { ease, duration: 10, delay: 0.8 },
},
animate: {
y: '100%',
transition: { ease, duration: 10 },
transitionEnd: { display: "none",},
},
exit: {
y: '0',
opacity: 0,
transition: { ease, duration: 10, delay: 0.8 },
},
};
return (
<>
<div style={{ display: 'grid', gridTemplateColumns: '1fr auto' }}>
<div className="bg-red-100 h-screen">box</div>
<div className="bg-blue-100 w-96">box2</div>
</div>
<div
style={{
width: '300px',
position: 'absolute',
marginLeft: 'auto',
marginRight: 'auto',
bottom: 0,
top: 0,
left: 0,
right: 0,
display: 'flex',
alignItems: 'center',
justifyContent: 'center',
}}
>
<div>
<img src="profile.svg" />
<p>hello</p>
</div>
</div>
<motion.div
className="h-screen bg-white absolute z-50 w-full -top-0"
variants={pageVariants}
></motion.div>
</>
);
};
export default Home;
解决方案
在 framer-motion 的文档中描述了一个transitionEnd属性。如果你像这样将它设置为你的运动 div,它应该在动画结束时消失:
<motion.div
className="h-screen bg-white absolute z-50 w-full -top-0"
variants={pageVariants}
animate={{
transitionEnd: {
display: "none",
},
}}
>
</motion.div>
推荐阅读
- python - AWS 上的 PyautgoGui 收到错误
- python-3.x - 如何在使用 python 的团队中使用电子邮件 ID 获取用户 ID
- python - Python Scraping:如何从具有多个的类中返回单个值?
- if-statement - 简单的 if/else 语句似乎不起作用,谁能告诉我我做错了什么?
- r - R中nls()函数的正确语法
- python - Python如何在另一个python文件中更新和写入属性
- scala - FP in scala - 每个生成器大小的测试用例数
- javascript - 空数组 [].forEach.call 上的 Javascript forEach
- c# - 从工具提示 C# 获取 X 值
- swift - 如何自动更新 Firestore 中更改的信息