【发布时间】:2013-12-16 20:46:48
【问题描述】:
一段时间以来,我一直远离使用 opacity 和 height 来使用 css 为下拉菜单设置动画。我这样做的原因是因为它们在没有li 悬停的情况下被激活。
由于下拉菜单不使用display: none; 到display: block; 会发生什么情况,您可以激活li 下方的下拉菜单,其中将显示嵌套菜单。
我厌倦了一遍又一遍地使用相同的动画,所以我尽力防止这种情况发生,但遗憾的是,菜单仍然这样做。 (它似乎也在某些显示器上显示 IE 和 Firefox 中的文本,而不是全部)
这是我的菜单 CSS,
.subNav {
width: 200px;
height: 0;
overflow: hidden;
font-size: 16px;
padding-top: 10px;
transition: all 0.6s ease;
-webkit-transition: all 0.6s ease;
-moz-transition: all 0.6s ease;
-o-transition: all 0.6s ease;
-ms-transition: all 0.6s ease;
position: relative;
z-index: 100;
left: 50%;
margin-left: -100px;
border-radius: 0 0 5px 5px;
padding: 10px;
top: 0;
}
ul.nav li:hover .subNav {
min-height: 100px;
height: auto;
overflow: visible;
background: #c1c1c1;
box-shadow: 0 2px 6px rgba(0, 0, 0, 0.4);
}
这是一个JSFIDDLE,删除 url 中的 show 以查看代码,如果您将鼠标悬停在其下方的 nav 和 div 之间,您将看到它是如何打开的。无论如何我可以防止这种情况吗?
文本剪辑的屏幕截图,(不是问题,因为它非常随机。我在我的 mac chrome 上发生了这种情况,但在我的 windows chrome 上工作似乎很好。在我的计算机上的 firefox 和 IE 中工作而我的同事在 Firefox 中很好。)
【问题讨论】:
-
display:none丢失 -
显示没有丢失是有原因的。在我的问题中,我说我没有使用该方法,其背后的原因是由于该技术会杀死动画。
-
如何使用 webkit 动画而不是过渡来做同样的事情
-
或者像我在回答中所做的那样,而不是让它不可见或将其移除,只需将其移远即可。
标签: html css drop-down-menu