首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >框架运动:在过渡过程中是否有动画?

框架运动:在过渡过程中是否有动画?
EN

Stack Overflow用户
提问于 2022-09-10 06:42:06
回答 1查看 68关注 0票数 1

我对切换按钮使用了简单的转换效果,非常类似于docs,我的手柄如下所示:

代码语言:javascript
复制
    <Handle
      animate
      layout
      isOn={isOn}
      transition={spring}
      variantColor={variantColor}
      onClick={() => setIsOn(!isOn)}
    />

我的手柄造型:

代码语言:javascript
复制
const Handle = styled(motion.div)<{ isOn: boolean; variantColor: string }>(
  ({ isOn, theme, variantColor }) => ({
    width: theme.spacing(3),
    height: theme.spacing(3),
    position: 'absolute',
    left: isOn ? '65%' : '0%',
    backgroundColor: variantColor,
    borderRadius: 'inherit',
    cursor: 'pointer',
  }),
);

left比例在单击时会发生变化,因此它会在“65%”到“0%”之间切换。我想要做的也是添加一个缩放动画,它使手柄变大,然后回到原来的大小,同时left转换生效。所以如果我试着:

代码语言:javascript
复制
<Handle
  animate={{
    scale: [null, 1.2, 1],
    opacity: 1,
  }}
  layout
  isOn={isOn}
  transition={spring}
  variantColor={variantColor}
  onClick={() => setIsOn(!isOn)}
/>

缩放动画发生在页面加载时,当转换发生时,我如何拥有这个动画触发器?请注意,缩放动画并不关心isOn是真是假,而不是从左到右移动句柄的转换,反之亦然。缩放动画完全相同,应该只在left转换的同时进行。

EN

回答 1

Stack Overflow用户

发布于 2022-09-10 10:37:05

我发现其中一种方法是使用框架运动库中的useAnimation钩子。

代码语言:javascript
复制
import { motion, useAnimation } from 'framer-motion';

const control = useAnimation();

然后在onClick事件中使用它:

代码语言:javascript
复制
      onClick={() => {
        setIsOn(!isOn);
        control.start({
          scale: [null, 1.1, 1],
          transition: { duration: 0.2 },
        });
      }}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/73669808

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档