我知道,这并不是你问题的真正解决方案,因为你要求
显示 + 不透明度
我的方法解决了一个更普遍的问题,但也许这是背景问题,需要使用display
与opacity
相结合来解决。
我的愿望是在元素不可见时将其移开。这个解决方案正好做到了这一点:它将元素移到了一边,可以用于过渡效果:
.child {
left: -2000px;
opacity: 0;
visibility: hidden;
transition: left 0s 0.8s, visibility 0s 0.8s, opacity 0.8s;
}
.parent:hover .child {
left: 0;
opacity: 1;
visibility: visible;
transition: left 0s, visibility 0s, opacity 0.8s;
}
这段代码不包含任何浏览器前缀或向后兼容的技巧。它只是说明了元素不再需要时如何移动的概念。
有趣的部分是两个不同的过渡定义。当鼠标指针悬停在.parent
元素上时,.child
元素需要立即放置,然后更改不透明度:
transition: left 0s, visibility 0s, opacity 0.8s;
当没有悬停时,或者鼠标指针移出元素后,必须等待不透明度变化完成后才能将元素移出屏幕:
transition: left 0s 0.8s, visibility 0s 0.8s, opacity 0.8s;
将对象移开是一种可行的替代方案,当设置
display:none
会破坏布局时。希望我对这个问题有所启发,尽管我没有回答它。
animation-fill-mode: forwards;
。因此,在这种情况下,透明度动画运行后,display
会恢复为none
。使用这个CSS设置可以保持动画的最后状态,所以它是display: block
。 - Matthew