【发布时间】:2017-07-13 20:44:49
【问题描述】:
我知道这个问题在 SO 中可能已经被问过数百万次了,但我已经尝试了大部分解决方案,我只是不知道为什么它对我不起作用。
所以我有一个带有display 的下拉菜单,最初针对none。当我点击它时,它显示出很好的过渡。 (到目前为止,一切都很好)。但是当我再次单击它以隐藏下拉列表时,它会立即隐藏,但我不希望那样。我想隐藏分配给显示的类似过渡。这是我的 CSS 代码:
.dropdown-menu {
padding: 0 0;
display: none;
-webkit-animation: slide-down .3s ease-out;
-moz-animation: slide-down .3s ease-out;
}
.table-dropdown-open {
display: block;
-webkit-animation: slide-down .3s ease-out;
-moz-animation: slide-down .3s ease-out;
}
@-webkit-keyframes slide-down {
0% {
opacity: 0;
-webkit-transform: translateY(-10%);
}
100% {
opacity: 1;
-webkit-transform: translateY(0);
}
}
@-moz-keyframes slide-down {
0% {
opacity: 0;
-moz-transform: translateY(-10%);
}
100% {
opacity: 1;
-moz-transform: translateY(0);
}
}
这不是重复的,因为我试图从 block 过渡到
none。不是从none 到block
【问题讨论】:
-
CSS 中的过渡或动画在
display: none/display: block上不起作用。使用opacity: 0/opacity: 1或visibility属性。 -
我认为它会起作用,因为您可以从块集成到无。你确定它不会从无到阻止吗? @MuhammadUsman
-
@DingDong 你能举个例子,
display属性逐渐从block过渡到none,好吗?我从没想过这是可能的。非常感谢您的努力,谢谢。 -
你
display它始终和transitionanimatable财产。比如opacity,从0到1。你也可以玩transform。实际上,transform和opacity是仅有的 2 个您应该设置动画的属性,因为它们不需要DOM重新绘制除您正在设置动画的元素之外的任何内容,因此不会影响浏览器性能,即使您'同时为大量元素制作动画。
标签: html css drop-down-menu css-transitions css-animations