同一个转换 属性 可以有不同的转换时间吗?

Can you have different transition times on the same transition property?

我有一个设置按钮(带有图标作为 src 的 img),我想在光标悬停时旋转它,然后在用户按下它时缩小并恢复正常。

#settings-button:hover {
    transition: transform 1s ease-out;
    transform: rotate(360deg);
}

#settings-button:active {
    transition: transform 50ms ease-out;
    transform: scale(0.90);
}

使用当前代码,它以正确的速度缩小,但需要 1 秒才能恢复到正常大小。如果我在 :hover 中更改持续时间,它可以正常工作,但它旋转得如此之快以至于你看不到它。

同一个过渡是否有不同的持续时间属性?

您可以使用 CSS Houdini 完成此操作。

但您可以通过简单地使用 2 个 CSS 动画并使用 JavaScript 在它们之间切换来实现您想要的效果。一个只会比另一个快或慢。

解决我遇到的问题。

#settings-button:hover {
    animation: rotate 1s ease-in-out;
}

#settings-button:active {
    transition: transform 50ms ease-out;
    transform: scale(0.90);
}

@keyframes rotate {
    0% {transform: rotate(-360deg)};
}