两行 CSS 菜单扩展不正确

Two-Line CSS Menu Expanding Incorrectly

我有一个只有两行的 CSS 菜单,只要您单击第一行的其中一个子菜单选项,它就会扩展到三行。最左边和最右边的选项都很好,但是中间的任何一个都完全搞砸了,把其他所有东西都移到了另一行。

正确的行为:

不正确的行为:

这里是 CSS:

#cssmenu ul {
  margin: 0;
  padding: 7px 6px 0;
  background: #74c141 url(overlay.png) repeat-x 0 -110px;
  line-height: 100%;
  font-family: 'Oxygen', sans-serif;
  -webkit-border-radius: 5px;
  -moz-border-radius: 5px;
  -webkit-box-shadow: 0 1px 3px rgba(0, 0, 0, 0.4);
  -moz-box-shadow: 0 1px 3px rgba(0, 0, 0, 0.4);
}
#cssmenu li {
  margin: 0 5px;
  padding: 0 0 8px;
  float: left;
  position: relative;
  list-style: none;
}
#cssmenu a,
#cssmenu a:link {
  font-weight: bold;
  font-size: 13px;  
  color: #e7e5e5;
  text-decoration: none;
  display: block;
  padding: 8px 20px;
  margin: 0;
  -webkit-border-radius: 5px;
  -moz-border-radius: 5px;
}
#cssmenu a:hover {
  background: #000;
  color: #fff;
}
#cssmenu .active a,
#cssmenu li:hover > a {
  background: #90ce67 url(overlay.png) repeat-x 0 -40px;  
  color: #444;
  border-top: solid 1px  #f8f8f8;
}
#cssmenu ul ul li:hover a,
#cssmenu li:hover li a {
  background: none;
  border: none;
  color: #666;
  -webkit-box-shadow: none;
  -moz-box-shadow: none;
}
#cssmenu ul ul a:hover {
  background: #74c141 url(overlay.png) repeat-x 0 -100px !important;
  color: #fff !important;
  -webkit-border-radius: 5px;
  -moz-border-radius: 5px;
}
#cssmenu li:hover > ul {
  display: block;
}
#cssmenu ul ul {
  z-index: 1000;
  display: none;
  margin: 0;
  padding: 0;
  width: 250px;
  position: absolute;
  top: 40px;
  left: 0;
  background: #ffffff url(overlay.png) repeat-x 0 0;
  border: solid 1px #b4b4b4;
  -webkit-border-radius: 5px;
  -moz-border-radius: 5px;
}
#cssmenu ul ul li {
  float: none;
  margin: 0;
  padding: 3px;
}
#cssmenu ul ul a,
#cssmenu ul ul a:link {
  font-weight: normal;
  font-size: 12px;
}
#cssmenu ul:after {
  content: ".";
  display: block;
  clear: both;
  visibility: hidden;
  line-height: 0;
  height: 0;
}
* html #cssmenu ul {
  height: 1%;
}

我显然希望菜单元素留在原地,并且在鼠标悬停或单击时不会移动。谢谢观看!!!

干杯, 布莱恩

我想这可能是因为您列表中的项目宽度发生了变化。

请记住,以下属性会调整元素的总宽度:

  • 宽度
  • 填充
  • 保证金
  • 边框

属性必须是静态的。例如,我可以在以下选择器中看到,边框值从 1px 变为 0px(由于 none 值,在第二条规则中)。

#cssmenu .active a,
#cssmenu li:hover > a {
  background: #90ce67 url(overlay.png) repeat-x 0 -40px;  
  color: #444;
  border-top: solid 1px  #f8f8f8;
}
#cssmenu ul ul li:hover a,
#cssmenu li:hover li a {
  background: none;
  border: none; /* look at this maybe set it as 1px, with a transparent color value */
  color: #666;
  -webkit-box-shadow: none;
  -moz-box-shadow: none;
}

如果你也能 post html 会很有帮助。

太棒了,谢谢 jonhurlock!

我刚刚删除了所有元素的顶部边框,效果非常好。我从菜单生成器中获得了这段代码,根本不需要那部分。

我通常会尝试编写尽可能少的代码,尽可能删除每一行并测试内容是否仍然有效。没有在这个菜单上这样做!

再次感谢, 布莱恩