Я не думаю, что вы должны использовать translate()
для этого. Я полагаю, что вы могли бы просто вычислить правильные значения или манипулировать transform-origin
с помощью JavaScript, но такой вид отрицает цель использования CSS-преобразований.
Вы также можете анимировать свойства, чтобы вы могли удалить translate()
из .activate
и изменить свойство перехода для .card
на:
-webkit-transition-property: all;
Затем вы можете использовать «обычный» CSS для позиционирования, а переход сделает все остальное. Например. добавить эти свойства в .activated
:
position: absolute;
top: 50%;
left: 50%;
margin-top: -50px;
margin-left: -40px;
Хотя есть небольшая проблема с этим. Хотя CSS может плавно переходить свойства top
, left
и margin
, он не может плавно переходить свойство position
, поэтому, когда карта активируется, она сначала переместится в верхний левый угол, а затем переместится плавно к центру страницы.
Я не уверен, есть ли какое-то решение, кроме как абсолютно точно позиционировать оригинальные карты.
Кроме того, при использовании translate()
положение других карт не изменяется при активации одной из них. Однако в моем примере активированная карта вынимается из потока, поэтому другие карты будут перемещаться влево, чтобы заполнить пробел (как это делают плавающие элементы). Это может быть не то, что вы хотите. Этого не произойдет, если вы начнете с них всех.
Конечно, в самих спецификациях есть множество вопросов о подобных проблемах, учитывая, что они все еще экспериментальны: