我试图在使用 Framer Motion 时淡出另一个 div 时在同一空间中淡出一个 div。即使过渡有延迟,对象本身也会立即渲染,这会导致同一空间中的另一个对象跳来跳去。
这是我正在尝试做的一个小代码示例:
const [short, setShort] = useState(false);
return (
<div>
<img src="image.jpg" />
<AnimatePresence>
{!short && (
<motion.span
initial={{ opacity: 0 }}
animate={{ opacity: 1 }}
exit={{ opacity: 0 }}
transition={{ delay: 1.5 }}
key="logoText"
>
TEXT
</motion.span>
)}
{short && (
<motion.span
initial={{ opacity: 0 }}
animate={{ opacity: 1 }}
exit={{ opacity: 0 }}
transition={{delay: 1.5}}
key="searchBox"
>
SOME DIFFERENT TEXT
</motion.span>
)}
</AnimatePresence>
<Button onClick={() => setShort(!short)}>Toggle</Button>
</div>
);
};
基本上占用的空间SOME DIFFERENT TEXT
立即出现,将切换按钮向右推,然后按一次TEXT
就消失了。然后SOME DIFFERENT TEXT
在单击按钮后立即再次向右推出。
我怎样才能让两个项目占据相同的空间,以便它们无缝过渡到彼此?