@MyQuestion
junior-middle fullstack

HTML|CSS: почему при transform: rotate(180deg) translateY(50%) эемент смещается относительно центра по оси X?

Добрый вечер!

Опишу два состояния.
1:
.price-tables__item .price-tables__title::after {
    right: 10px;
    top: 50%;
    transform: rotate(0) translateY(-50%);
  }

  .price-tables__item.opened .price-tables__title::after {
    transform: rotate(180deg) translateY(50%);
  }

Псевдоэлемент относительно своего центра слева смещается по оси X смещается. Т.е. делает оборот вокруг точки одной из своих сторон и когда делает rotate, элемент занимает правильную позицию. В итоге получается ломаная анимация, которую я совсем не ожидал увидеть.

2:
.price-tables__item .price-tables__title::after {
  content: "";
  position: absolute;
  top: 20px;
  right: 17px;

  width: 20px;
  height: 20px;
  background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23fff'%3e%3cpath fill-rule='evenodd' d='M1.646 4.646a.5.5 0 0 1 .708 0L8 10.293l5.646-5.647a.5.5 0 0 1 .708.708l-6 6a.5.5 0 0 1-.708 0l-6-6a.5.5 0 0 1 0-.708z'/%3e%3c/svg%3e");
  background-repeat: no-repeat;
  background-size: 20px;
  background-position: center;
  transition: transform 0.3s linear;
  transform: rotate(0);
}

.price-tables__item.opened .price-tables__title::after {
  transform: rotate(180deg);
}


Тут всё отлично отрабатывает, без смещения, но при этом, я не могу позиционировать псевдо элемент по центру.

Почему так происходит? Чего-то я тут не понимаю ) Где-то рядом ответ, но не как не соображу.

Пока писал, придумал решение без позиционирования, но хочется понять, что я не так делал, когда позиционировал элемент абсолютно ?
  • Вопрос задан
  • 210 просмотров
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы