我有这个代码:https://codepen.io/sabeser/pen/BaOeBPW
:root {
--scale--ratio: 1;
}
#wrapper {
background-color: yellow;
display: flex;
justify-content: center;
align-items: center;
height: 50vh;
width: 50vw;
}
.circle {
background-color: red;
width: 50px;
height: 50px;
border-radius: 20em;
-webkit-animation: floataround 1.1s infinite alternate;
animation: floataround 1.1s infinite alternate;
transform: scale(var(--scale--ratio)) translate(0%, 0%);
transform-origin: 0% 0%;
transition: transform .9s;
margin: 1em;
}
@keyframes floataround {
0% {
transform: translateY(0);
}
100% {
transform: translateY(-8px);
}
}
.circle:hover {
cursor: pointer;
background-color: green;
--scale--ratio: 1.2;
}
<div id='wrapper'>
<div class='circle'>
</div>
<div class='circle'>
</div>
</div>
它显示了上下移动的两个圆圈:
然而,每个圆圈都应该在悬停时缩放。只有当我删除负责移动的代码时才能实现缩放:
-webkit-animation: floataround 1.1s infinite alternate;
animation: floataround 1.1s infinite alternate;
我如何实现它?
1条答案
按热度按时间n6lpvg4x1#
您需要在
@keyframes
中保留scale()
函数,否则您将完全覆盖transform
属性:如果你想在悬停时平滑地动画缩放效果,那么你必须使用单独的变换属性
scale
和translate
,如下所示:x一个一个一个一个x一个一个二个x
注意:单个转换属性是相当新的,可能不是所有设备都支持。但是,根据caniuse.com,这些天有近90%的用户设备支持它们。