两行 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!
我刚刚删除了所有元素的顶部边框,效果非常好。我从菜单生成器中获得了这段代码,根本不需要那部分。
我通常会尝试编写尽可能少的代码,尽可能删除每一行并测试内容是否仍然有效。没有在这个菜单上这样做!
再次感谢,
布莱恩
我有一个只有两行的 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!
我刚刚删除了所有元素的顶部边框,效果非常好。我从菜单生成器中获得了这段代码,根本不需要那部分。
我通常会尝试编写尽可能少的代码,尽可能删除每一行并测试内容是否仍然有效。没有在这个菜单上这样做!
再次感谢, 布莱恩