首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Material UI:滑动过渡组件-可以改变变换距离吗?

Material UI:滑动过渡组件-可以改变变换距离吗?
EN

Stack Overflow用户
提问于 2020-06-18 05:44:29
回答 1查看 2.2K关注 0票数 1

“向上”变换的默认起始变换是从窗口底部开始的(https://github.com/mui-org/material-ui/pull/16281/commits/6dc9988c7847fd262d14b10f1f8d1d6b49d8daa6)。

我正在努力寻找一种方法来改变这种状况。我只希望变换距离为12px。我在幻灯片组件上尝试了一个style道具,因为它可以在淡入淡出组件上工作,但没有成功。

代码语言:javascript
复制
<Slide
  in
  direction="up"
  timeout={500}
  style={{transform: 'translateY(12px)'}}
>
  <Card>
    ...
  </Card>
</Slide>
EN

回答 1

Stack Overflow用户

发布于 2020-06-19 04:35:46

可以使用Transition props here设置onEnteronEnteringonEntered控制柄以执行所需的操作。

编辑:把我的例子放在这里,以防对以后的人有帮助。我找到了一种更好的方法来做到这一点,因为修改material ui <Slide>太痛苦了(它们的转换会卸载组件,所以没有任何东西可以通过偏移量保持渲染)我最终使用一些material ui主题帮助器制作了自己的<Transition>

代码语言:javascript
复制
const HideOnScroll = ({ offset = 0, children }) => {
  const trigger = useScrollTrigger({ target: window });
  const theme = useTheme();
  return (
    <Transition
      appear={false}
      in={!trigger}
      timeout={0}
      onExited={(node) => {
        const { top, height } = node.getBoundingClientRect();
        const transform = `translateY(-${top + height - offset}px)`;
        node.style.transform = transform;
        node.style.webkitTransform = transform;

        const options = {
          duration: theme.transitions.duration.leavingScreen,
          easing: theme.transitions.easing.easeOut,
        };
        node.style.transition = theme.transitions.create(
          ['transform'],
          options
        );
        node.style.webkitTransition = theme.transitions.create(
          ['-webkit-transform'],
          options
        );
      }}
      onEntered={(node) => {
        node.style.transform = 'none';
        node.style.webkitTransform = 'none';

        const options = {
          duration: theme.transitions.duration.enteringScreen,
          easing: theme.transitions.easing.easeIn,
        };
        node.style.transition = theme.transitions.create(
          ['transform'],
          options
        );
        node.style.webkitTransition = theme.transitions.create(
          ['-webkit-transform'],
          options
        );
      }}
    >
      {children}
    </Transition>
  );
};
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/62438862

复制
相关文章

相似问题

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