Вместо этого думайте о масштабировании с началом координат (0,0) как масштабирование + перевод с центром происхождения.В отдельности следующее:
-webkit-transform-origin: top left;
-webkit-transform: scale(1.5);
совпадает с:
-webkit-transform-origin: center;
-webkit-transform: scale(1.5) translate3d(16.66%, 16.66%, 0);
Теоретически центр начала вращения должен оставлять углы торчащими на sqrt(1/2)-0.5
, что требует от нас перемещения источникавниз и вправо на 20.71%
, но по какой-то причине алгоритм преобразования webkit перемещает вещи вниз для нас (но не достаточно) и масштабирует происхождение для нас (опять же не совсем).Таким образом, нам нужно переместиться вправо на 50%
и внести некоторые коррективы в это странное поведение:
-webkit-transform-origin: center;
-webkit-transform: scale(1.5) rotate(45deg) translate3d(52.5%, 0.5%, 0);
-webkit-transition: all 2s ease-in;
Примечание: мой первоначальный ответ был с использованием div
с width:100px;
и height100px;
, что требуетtranslate3d(54px, 0, 0)
.