Да, это возможно. Причина, по которой он не работает, заключается в том, что вы не можете изменить свойство, которое анимируется при наведении.
Чтобы сохранить шкалу на уровне 0,7:
IDK, если это опечатка или ошибка, но она должна быть
animation-fill-mode: forwards;
(вам не хватает 's')
Чтобы применить 'transform: scale (...)' при наведении курсора:
вам просто нужно добавить 'animation: 0;' to: hover:
html, body {
margin: 0;
}
.container {
margin: 0;
padding: 0;
width: 800px;
height: 800px;
animation-name: image-animation;
animation-delay: 1s;
animation-duration: 1s;
animation-fill-mode: forwards;
animation-timing-function: ease-out;
transform-origin: top center;
background: green;
}
@keyframes image-animation {
to {
transform: scale(0.7);
}
}
.container:hover{
animation: 0;
transform: scale(1.1);
}
<div class="container">
</div>
Однако ваш масштаб по-прежнему основан на исходном размере, и анимация перезапускается после того, как вы наведите курсор мыши, так как свойство анимации изменяется.
Кроме того, у вас не может быть перехода и анимации в одном и том же свойстве, поэтому, если вы хотите, чтобы оно было более плавным, это должны быть две разные анимации.
Но даже если вы это сделаете, поскольку ваша первая анимация имеет задержку, после наведения она переходит от масштаба (1.1) к масштабу (1), ждет 1 с, а затем снова запускает анимацию.
Выглядит лучше без задержки imo, но если вам нужна задержка только при первом запуске анимации, есть варианты, но мне нужно больше подробностей по остальной части кода, чтобы найти подходящее решение.
РЕДАКТИРОВАТЬ: в зависимости от ваших потребностей, вы могли бы иметь: после масштабирования элемента, но это будет только масштабировать цвет. Если у этого div есть дочерние элементы, вы можете добавить еще один, который будет содержать те элементы, для которых вы можете использовать transform (scale) и transition.
html, body {
margin: 0;
}
.container {
margin: 0;
padding: 0;
width: 800px;
height: 800px;
animation-name: image-animation;
animation-delay: 1s;
animation-duration: 1s;
animation-fill-mode: forwards;
animation-timing-function: ease-out;
transform-origin: top center;
}
@keyframes image-animation {
to {
transform: scale(0.7);
}
}
.content {
width: 800px;
height: 800px;
background-color: green;
transition: 0.5s all ease-in;
transform-origin: top center;
}
.content:hover {
transform: scale(1.1);
}
<div class="container">
<div class="content">
some text
</div>
</div>