繁体   English   中英

React 如何删除 Material-UI Select 的 animation

[英]React How to remove the animation of Material-UI Select

我正在使用 React Material UI 的 Select 组件。 我希望删除或加速菜单打开时出现的 animation。 我试过类似的东西:

 <Select
     ...
     TransitionComponent={({children}) => children}
 >
     <MenuItem value={...}>...</MenuItem>
     ...
 </Select>

但这不起作用,请帮助

将此添加到您的样式表中:

.MuiMenu-paper {
    transition-duration: 0s !important;
}

这基本上覆盖了 select 下拉列表的转换持续时间并将其设置为 0 秒。

您还可以根据自己的喜好更改持续时间(使其更快)。 默认的 animation 持续时间为:

transition-duration: 251ms, 167ms;

它不起作用的原因:

MUI <Select /> API 没有道具TransitionComponent ,以及其他一些组件,如<Tooltip />确实有

参考:API 文档

相关 QA: React Material UI Tooltips Disable Animation


解决方案

覆盖过渡样式就可以了。

div.MuiPaper-root {
  transition: none !important;
}

在此处输入图像描述


解释

选项的 HTML 结构:

由于是在主组件之外动态生成的,我们不适合直接给它们设置styles。

但是,我们可以选择通过诸如MuiPaper-root之类的类名或诸如给定 id 之类的其他方式覆盖 styles。

<div
  class="MuiPaper-root MuiMenu-paper MuiPopover-paper MuiPaper-elevation8 MuiPaper-rounded"
  tabindex="-1"
  style="opacity: 1; transform: none; min-width: 40px; transition: opacity 251ms cubic-bezier(0.4, 0, 0.2, 1) 0ms, transform 167ms cubic-bezier(0.4, 0, 0.2, 1) 0ms; top: 16px; left: 16px; transform-origin: -8px 7.7px;"
>
  <ul
    class="MuiList-root MuiMenu-list MuiList-padding"
    role="listbox"
    tabindex="-1"
  >
    ...
  </ul>
</div>;

在此处输入图像描述

要添加到 keikai 的答案,您还可以通过主题更改全局执行此操作:

const theme = createMuiTheme({
  overrides: {
    MuiPaper: {
      root: {
        transition: 'none !important'
      },
    },
  }
});

对于使用相应 Material UI InputLabel组件和 mui Select组件的用户,我能够将以下道具传递给InputLabel组件以禁用 animation 并完全收缩:

<div>
   <FormControl>
     <InputLabel
       disableAnimation={true}
       shrink={false}
       ...
     >
       {`some label`}
     </InputLabel>
     <Select>
      {`...`}
     </Select>
   </FormControl>
 </div>

MUI 输入 Label API

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM