我创建了菜单。这在firefox中工作得很好,但在谷歌浏览器中,不显示悬停。此外,当我调整浏览器部分菜单隐藏并且不可滚动时,我尝试使用MENU width:100%;
,但是当我这样做并调整浏览器大小时,类布局会失真并显示在菜单行之外,菜单失真。无论如何要解决这个问题:
所以我强行将菜单的宽度定义为1366px,以避免菜单失真。请帮忙。
#mainmenu {
width:1366px;
height:50px;
/*position:relative;*/
position:fixed;
top:18px;
padding-left:200px;
line-height:50px;
background:#0b2c3d;
z-index:10;
box-shadow:5px 0px 15px #7e7a7a;
}
#mainmenu, #dd_home, #dd_profile, #dd_achv, #dd_contact,#dd_login {
cursor:pointer;
}
#mainmenu ul {
list-style-type:none;
margin:0px;
padding:0px;
}
#mainmenu ul li {
text-decoration:none;
float:left;
/*border-right-style:dotted;*/
}
#mainmenu ul li a {
text-decoration:none;
display:block;
width:150px;
text-align:center;
text-transform:uppercase;
color:white;
}
#mainmenu ul li.home {
width:150px;
text-align:center;
margin-top:-5px;
border-bottom:5px solid #0a68fb;
}
#mainmenu ul li.home:hover {
display:block;
background-color:#0a68fb;
border-top-left-radius:5px;
border-top-right-radius:5px;
}
#mainmenu ul li.profile {
margin-top:-5px;
border-bottom:5px solid #ed4901;
}
#mainmenu ul li.profile:hover {
display:block;
background-color:#ed4901;
border-top-left-radius:5px;
border-top-right-radius:5px;
}
#mainmenu ul li.achv {
margin-top:-5px;
border-bottom:5px solid #27fb06;
}
#mainmenu ul li.achv:hover {
display:block;
background-color: #27fb06;
border-top-left-radius:5px;
border-top-right-radius:5px;
}
#mainmenu ul li.contact {
margin-top:-5px;
border-bottom:5px solid #b70bfb;
}
#mainmenu ul li.contact:hover {
display:block;
background-color:#b70bfb;
border-top-left-radius:5px;
border-top-right-radius:5px;
}
#mainmenu ul li.contact:checked {
margin-top:-5px;
border-bottom:10px solid #b70bfb;
}
#mainmenu ul li.login {
margin-top:-5px;
border-bottom:5px solid #36b096;
}
#mainmenu ul li.login:hover {
display:block;
background-color:#36b096;
border-top-left-radius:5px;
border-top-right-radius:5px;
}
#mainmenu ul li.nepal {
margin-top:-5px;
border-bottom:5px solid #f8d605;
overflow:hidden;
}
HTML
<div id="mainmenu">
<ul>
<li class="home"><a href="about.aspx"> Home</a>
<li class="profile"><a href="profile.aspx" >Profile</a>
<li class="achv"><a href="achv.aspx">achievements</a>
<li class="contact"><a href="Contact.aspx">Contact</a>
<li class="login"><a href="login.aspx">Log in</a>
<li class="nepal"><a href="#">jaya nepal</a></li>
</ul>
</div>
JSFiddle: jsfiddle.net/gzeLS
答案 0 :(得分:1)
从display:block
样式中删除:hover
:
或者,将display:block
添加到非悬停样式:
我不确定为什么Chrome不喜欢这样。我说这是一个Chrome bug。
要调整菜单大小,请使用max-width
和min-width
进行操作。在文本开始重叠之前,您只能获得大约600px的宽度。通过给菜单min-width
预防重叠。
但是,正如您已经发现的那样,当窗口太小时,部分菜单会被隐藏。即使您在主体上设置min-width
以显示滚动条,您仍然无法滚动菜单,因为您使用的是position: fixed
。如果窗口低于某个宽度,最好的办法是使用媒体查询缩小字体大小。
修改:以下是我为了the third jsFiddle所做的更改细分,无论窗口大小如何,居中都会有效。
width
,请指定left
和right
。text-align: center
,而不是padding
。这将考虑不同的窗口大小。display: inline-block
上设置ul
以使其可以居中。width
上设置max-width
和ul
。使用width
允许我们按百分比调整li
元素的大小,这样如果窗口太小,它们就会缩小。而max-width
让我们实际居中菜单项,当窗口 宽度足以适合全宽度菜单时,在左右边缘给出边距。white-space: nowrap
上设置ul
。min-width
。overflow: hidden
。li
选择器中。以下是我在the fourth jsFiddle中所做的更改,以使菜单适合较小的窗口并保持可见:
min-width
以允许缩小以适合窗口。@media all and (max-width: 640px) { #mainmenu { font-size: 90%; } }
@media all and (max-width: 590px) { #mainmenu { font-size: 80%; } }
@media all and (max-width: 530px) { #mainmenu { font-size: 70%; } }
@media all and (max-width: 468px) { #mainmenu { font-size: 60%; } }
答案 1 :(得分:0)
如果您进行了这一小改动,例如在主页链接上:
#mainmenu ul li.home:hover
以强>
#mainmenu ul li.home a:hover
然后您会注意到您的悬停属性已在Chrome和Firefox中正确显示。
<强>更新强>
And here's a fix for your second problem.
您需要将主div的text-align
设置为center
,以便将ul
置于容器中心。典型的margin: 0 auto;
不起作用。我还添加了一个white-space:nowrap;
,以防止在屏幕小于水平对齐的菜单项时中断。
希望这有帮助。