Fix Material-UI Правая сторона Персональная анимация ящика

У меня довольно сложное приложение с несколькими ящиками. У меня проблема с анимацией на правой стороне ящика. Сами ящики прекрасно анимируются, а родительские div - нет. Я попытался применить ту же анимацию для ящика к родительскому элементу div, и это не решило мою проблему. Я повторил проблему в CodeSandbox. Увидеть ниже.

пример

2 ответа

Наш конкретный вариант использования довольно сложный, но я думаю, что нам удалось найти решение. По сути, мы должны были применить переход к <main> элемент и установить его поля на основе состояния правой панели инструментов. Увидеть ниже.

main: {
    position: 'relative',
    flex: 1,
    height: '100%',
    overflow: 'hidden',
    transition: theme.transitions.create('margin', {
      easing: theme.transitions.easing.easeOut,
      duration: theme.transitions.duration.enteringScreen,
    }),
    marginRight: -500,
  },
  mainRightOpen: {
    transition: theme.transitions.create('margin', {
      easing: theme.transitions.easing.easeOut,
      duration: theme.transitions.duration.enteringScreen,
    }),
    marginRight: 0,
  }

и реализовано так...

<main
  className={`${classes.main}
    ${this.props.rightToolBarOpen ? classes.mainRightOpen : null}
   `}
  ref={(mainContent) => { this.mainContent = mainContent; }}
>

Кроме того, если вам не нужно фиксированное значение маржи, вы можете использовать процент для управления маржой, например:

      // define the drawerWidth

const drawerWidth = 33.33333;

// put margin value as a string format like below: 

content: {
  flexGrow: 1,
  padding: theme.spacing(6),
  transition: theme.transitions.create('margin', {
    easing: theme.transitions.easing.sharp,
    duration: theme.transitions.duration.leavingScreen,
  }),
  marginRight: `${-drawerWidth}%`,
},
contentShift: {
  transition: theme.transitions.create('margin', {
    easing: theme.transitions.easing.easeOut,
    duration: theme.transitions.duration.enteringScreen,
  }),
  marginRight: 0,
},

Приведенное выше решение работает со мной (версия Material-UI, которую я использую: v4.12.1)

Другие вопросы по тегам