css - transform 属性的 CSS 过渡,但具有不同的模式
问题描述
我有一个按钮,当它悬停在它上面时,它具有缩放和旋转效果。我想实现这些效果,但持续时间不同。基本上,我想实现这样的目标
.button {
transition: transform 0.1s;/* scale should be .1s and rotate should be .5s*/
}
.button:hover {
box-shadow: 0px 0px 2px 4px rgb(105, 64, 64);
transform: scale(1.111, 1.111) rotate(360deg);
}
有什么简单的方法吗?这甚至可能吗?
概念示例
.button{
transition[scale]: .1s;
transition[rotate]: .5s
}
编辑:实际上,已经存在的解决方案适用于 2 个不同的属性 ( height
and opacity
),而我的解决方案是在单个属性 ( transform
) 上,但transform
有 2 种模式,rotate
and scale
,需要以不同的时间进行动画处理。我需要transform:rotate
with.5s
和transform:scale
with.1s
编辑2:有人提到了动画的使用,所以这就是我所做的
@keyframes anim1 {
0%{
transform: rotate(0deg);
}
50%{
transform: rotate(180deg);
}
100%{
transform: rotate(180deg);
}
}
@keyframes anim2 {
0%{
transform: scale(1,1);
}
50%{
transform: scale(1.111,1.111);
}
100%{
transform: scale(1,1);
}
}
.button{
animation: anim1 3s ease-in-out, anim2 5s ease-in-out;
}
这种方法首先自动播放动画,其次,更重要的是,第二个动画覆盖了第一个动画,我只剩下缩放而没有旋转。但是,如果有人可以使此代码正常工作,那么无论哪种方式都很棒!
解决方案
如评论中所述,这可以通过包装容器来实现。这不是您所说的使用单个容器的期望行为,但不幸的是,截至 2020 年 12 月,该语法不受支持。下面是一个粗略的 POC,展示了这一点:
.wrapper {
display: flex;
justify-content: center;
align-items: center;
height: 100vh;
}
.animate-scale {
transition: transform 0.1s;
}
.animate-scale:hover {
transform: scale(1.111, 1.111);
}
.animate-rotate {
transition: transform 0.5s;
}
.animate-rotate:hover {
transform: rotate(360deg);
}
.button {
box-shadow: 0px 0px 2px 4px rgb(105, 64, 64);
}
<div class="wrapper">
<div class="animate-scale">
<div class="animate-rotate">
<span class="button">
Hover me!
</span>
</div>
</div>
</div>
推荐阅读
- android - RecyclerView 对数据更改没有响应
- html - 我怎样才能使我的按钮居中,
- java - 在某些设备上未调用相机 onPreviewFrame()(不存在预览显示)
- bash - 如何从 Cygwin 调用 bat / cmd 文件并继承变量?
- android - 如何在不同屏幕上保持背景纵横比
- javascript - 为什么带有参数的动词方法会阻塞另一个相同的路由?
- javascript - 当您单击画布内的矩形时,会变成其中所有形状的全屏
- binary - 二进制数的绝对值
- javascript - .subString 直到最后一句结束
- cypress - css 内容上的 cypress ParseError