CSS3 下拉菜单不会从 li 和 ul 之间的空白处保持打开状态
Posted
技术标签:
【中文标题】CSS3 下拉菜单不会从 li 和 ul 之间的空白处保持打开状态【英文标题】:CSS3 dropdown not staying open from whitespace between li and ul 【发布时间】:2013-09-17 01:14:23 【问题描述】:我正在为一家公司制作 CSS3 下拉菜单,但遇到了一个小问题。我首先认为问题是由 wordpress 引起的,但是在 jsfiddle 中重新创建导航后,我知道这是别的东西。
我有一个带有两个子菜单的nav
,在子菜单上我使用了一个伪前元素在顶部给它一个三角形。这是一个很好的效果,经过我的测试,我发现了一个问题。它的功能很棒而且看起来真的很流畅,但是li
和ul
之间的空白会导致一个相当大的问题,如果您将鼠标悬停在该空白之间,子菜单将关闭,因为它不在li
悬停状态.
我很擅长使用 css,并且尝试了很多选项,但它们都会导致相同的问题。谁有想法?我宁愿不使用该设计元素,但如果必须,我会还是应该使用 jQuery?
CSS
#top-menu
width: 100%;
height: 50px;
background: mediumSeaGreen;
#top-menu > ul
list-style-type: none;
padding: 0;
margin: 0 auto;
width: 70%;
clear: both;
#top-menu > ul > li
float: left;
width: 11.1%;
background: #2b2b2b;
display: block;
height: 50px;
line-height: 50px;
text-align: center;
color: #fff;
-webkit-transition: all .5s ease;
cursor: pointer;
#top-menu > ul > li:hover
background: mediumSeaGreen;
#top-menu > ul > li > ul
display: none;
list-style-type: none;
margin: 0;
padding: 5px;
background: mediumSeaGreen;
position: relative;
top: 10px;
border-radius: 3px;
box-shadow: 0 -1px 2px #2b2b2b;
#top-menu ul li ul:before
content: "";
position: absolute;
border-right: 10px solid transparent;
border-left: 10px solid transparent;
border-bottom: 10px solid mediumSeaGreen;
top: -10px;
left: 42%;
display: block;
z-index: 1002;
#top-menu > ul > li:hover > ul
display: block;
#top-menu > ul > li > ul > li
padding: 0;
margin: 5px 0 5px 0;
line-height: 18px;
color: #2b2b2b;
jsFiddle
【问题讨论】:
【参考方案1】:您可以在:before
元素后面放置一个透明的:after
元素。这不是:after
的用法,但它似乎工作得很好
Updated jsFiddle
#top-menu ul li ul:after
content: "";
position: absolute;
top:-10px;
left:0px;
height:10px;
width:100%;
display:block;
z-index:1001;
【讨论】:
你就是男人!我找不到任何与此问题相似的东西。除了你之外,没有人愿意帮忙,所以我非常感谢! 很高兴能帮上忙!在旁注中,您可能希望为不支持伪元素的浏览器创建后备。这可能是个问题,具体取决于您希望它覆盖的对象 是的,我已经开始计划这个了,因为我敢肯定,在见到客户之后,他们仍然使用 IE 洞穴人版.. 哈哈,我永远不会明白任何精通技术的人会怎么考虑使用 IE。也许这只是我,但再次感谢你这么多的人。以上是关于CSS3 下拉菜单不会从 li 和 ul 之间的空白处保持打开状态的主要内容,如果未能解决你的问题,请参考以下文章