Как я могу исправить переход ios для ширины, высоты и преобразования?

#ios #css #transform #transition

#iOS #css #преобразование #переход

Вопрос:

На ios (safari и Chrome), если я изменяю размер элемента (ширина, высота), а также поворачиваю его, переход всех этих свойств не работает должным образом.

Я пробовал использовать scale, и это решает проблему, но использование scale влияет на размер дочерних элементов, поэтому это не оптимальное решение.

 transform: translate3d(-50%, -50%, 0) rotate(-13deg) scale(1);
transform-origin: center;
transition: all .3s ease-out;
  

Это неправильное поведение:https://imgur.com/a/K6KOXSj
Здесь у меня есть ручка с кодом:https://codepen.io/alexcondur/pen/pBjOWM?editors=0100

Ответ №1:

Попробуйте добавить это, возможно:

 transform-origin: center center;  /* center twice */
transform-box: fill-box;
  

Ответ №2:

Наконец, после того, как я обдумывал это в течение 2 дней, я нашел решение.

Идея состоит в том, чтобы центрировать элемент без использования translate3d(-50%, -50%, 0);
и только сохраняя rotate преобразование. Итак, я использую flex (я думаю, что grid тоже подойдет)

 .parent {
  display: flex;
  flex-wrap: wrap;
  justify-content: center;
  align-items: center;
}
.child {
  transform: rotate(14deg);
}
  

https://codepen.io/alexcondur/pen/ROaVMe

Если родительский элемент будет меньше дочерних элементов, я бы использовал margin для позиционирования моего дочернего элемента по центру. Например:

 .parent {
  width: 100px;
  height: 100px;
}

.child {
  width: 200px;
  height: 350px;
  margin: -175px 0 0 -100px;
  transform: rotate(14deg);
}