【发布时间】:2017-06-16 23:15:15
【问题描述】:
假设我有一个带有透明红色的 HTML 元素。当我将元素悬停时,它应该变成纯红色。当我停止悬停元素时,它应该动画回到第一个状态,但仅在 X 秒之后。
到目前为止一切顺利,请参见代码 sn-p。
我的问题是当我停止悬停元素然后又回到悬停它时。初始动画再次开始,但它还没有动画到初始状态还没有开始,因此从全彩色到透明然后褪色到全彩色有一个难看的跳跃。
有没有办法不用 JavaScript 来解决这个问题?
然后,通过将 div 的背景设置为全色,保持不悬停时的颜色。但它也将其设置为初始颜色。我该如何解决这个问题?移除它只会在不悬停时移除颜色!
带有过渡的不透明度不是一个选项,因为我在这个 div 中有内容。
div {
width: 100px;
height: 100px;
background: rgba(50, 60, 95, 1);
animation-name: fadeItOut;
animation-duration: 1s;
animation-delay: 2s;
animation-fill-mode: forwards;
}
div:hover {
animation-name: fadeItIn;
animation-duration: 1s;
animation-delay: 0s;
animation-fill-mode: forwards;
}
@keyframes fadeItIn {
0% {
background: rgba(50, 60, 95, 0.3);
}
100% {
background: rgba(50, 60, 95, 1);
}
}
@keyframes fadeItOut {
0% {
background: rgba(50, 60, 95, 1);
}
100% {
background: rgba(50, 60, 95, 0.3);
}
}
<div></div>
【问题讨论】:
-
对不起,我可能完全没有抓住重点,但为什么不直接this呢?
标签: css css-transitions css-animations