Html CSS3下拉列表未从li和ul之间的空白处打开

Html CSS3下拉列表未从li和ul之间的空白处打开,html,css,drop-down-menu,hover,pseudo-element,Html,Css,Drop Down Menu,Hover,Pseudo Element,我正在为一家公司制作CSS3下拉菜单,遇到了一个小问题。我最初认为问题是由wordpress引起的,但在JSFIDLE中重新创建nav后,我知道这是另外一回事 我有一个带有两个子菜单的nav,在子菜单上我使用了一个伪before元素在顶部给它一个三角形。这是一个很好的效果,在我测试之后,我发现了一个问题。它的功能非常好,看起来非常平滑,但是li和ul之间的空白会导致相当大的问题,如果您将鼠标悬停在空白区域之间,子菜单将关闭,因为它不在li悬停状态 我对css很在行,并且尝试了很多选项,但它们都会

我正在为一家公司制作CSS3下拉菜单,遇到了一个小问题。我最初认为问题是由wordpress引起的,但在JSFIDLE中重新创建nav后,我知道这是另外一回事

我有一个带有两个子菜单的
nav
,在子菜单上我使用了一个伪before元素在顶部给它一个三角形。这是一个很好的效果,在我测试之后,我发现了一个问题。它的功能非常好,看起来非常平滑,但是
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;
}

您可以将透明的
:放置在
元素后面的
:之前的
元素后面。这与
:after
的使用方式无关,但它似乎工作得相当好


您可以在
:before
元素后面的
:后面放置一个透明的
:after
元素。这与
:after
的使用方式无关,但它似乎工作得相当好


你就是那个男人!!我找不到任何类似于这个问题的东西。除了你之外,没有人愿意帮忙,所以我非常感激!很高兴我能帮忙!另一方面,您可能希望为不支持伪元素的浏览器创建回退。这可能是一个问题,取决于你想让它到达的人是谁。我已经开始计划这个问题,因为我确信,在会见客户之后,他们仍然使用IE cave man edition。。LOL,我永远不会明白任何技术精明或不可能会考虑使用IE。也许它只是我,但再次感谢你这么多人。你是男人!!我找不到任何类似于这个问题的东西。除了你之外,没有人愿意帮忙,所以我非常感激!很高兴我能帮忙!另一方面,您可能希望为不支持伪元素的浏览器创建回退。这可能是一个问题,取决于你想让它到达的人是谁。我已经开始计划这个问题,因为我确信,在会见客户之后,他们仍然使用IE cave man edition。。LOL,我永远不会明白任何技术熟练或不愿意考虑使用IE.也许它只是我,但再次感谢你这么多的人。
#top-menu ul li ul:after {
    content: "";
    position: absolute;
    top:-10px;
    left:0px;
    height:10px;
    width:100%;
    display:block;
    z-index:1001;
}