双线CSS菜单扩展错误

时间:2015-04-27 21:14:55

标签: html css css3 drop-down-menu menu

我有一个两行的CSS-only菜单,当你点击第一行的一个子菜单选项时,它会扩展到三行。这对于最左边和更右边的选项来说都很好,但是中间的任何一个都完全拧紧它并将其他所有东西都移开并转移到另一条线上。

正确的行为: enter image description here

行为不正确: enter image description here

这是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%;
}

我显然希望菜单元素保持原位,并且在悬停或点击时不会移动。谢谢你的期待!!!

干杯, 布赖恩

2 个答案:

答案 0 :(得分:2)

我相信这可能是因为列表中的项目正在改变宽度。

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

  • 宽度
  • 填充
  • 余量
  • 边界

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

#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;
}

如果你也可以发布html会很有帮助。

答案 1 :(得分:-1)

太棒了,谢谢jonhurlock!

我刚从所有元素中移除了border-top,它完美无缺。我从菜单生成器中获取了这些代码,根本不需要该部分。

我通常会尝试尽可能地编写稀疏代码,删除每行,并测试是否仍然有效。 Hadn没在这个菜单上做过!

再次感谢, 布赖恩