我做了一个响应式菜单:
<ul id="nav">
<li>Menu 1
<ul>
<li><a href="/">Menu 111</a></li>
<li><a href="/">Menu 22</a></li>
<li><a href="/">Menu 3333</a></li>
<li>Menu 44
<ul>
<li><a href="/">Menu 111111</a></li>
<li><a href="/">Menu 22</a></li>
<li><a href="/">Menu 3333</a></li>
<li><a href="/">Menu 44</a></li>
</ul>
</li>
</ul>
</li>
<li><a href="/">Menu 2222</a></li>
<li>Menu 33<ul><li>This submenu should be under Menu33</li></ul></li>
<li><a href="/">Menu 4444444</a></li>
</ul>
a
{
background-color: red;
}
#nav {
display:table;
}
#nav > li {
list-style:none;
padding:0px 10px 0px 10px;
border:1px #000 solid;
position:relative;
display:table-cell;
width:1%;
}
#nav ul li {
width: 100%;
display:block;
text-indent:10px;
line-height:30px;
margin-right:10px;
border-top:1px #000 solid;
border-bottom:1px #000 solid;
border-left:none;
border-right:none;
background:#fff;
position:relative;
white-space:nowrap;
}
ul {
display:none;
}
li:hover > ul {
display:block;
position:absolute;
z-index:1000;
border:1px #000 solid;
}
ul#nav > li:hover > ul {
margin-left: -10px;
}
#nav > li ul li ul {
left:100%;
top:-2px;
white-space:nowrap;
}
#nav li:hover > a, #nav li:hover {
color:#fff;
background:#000;
}
li, li a {
color:#000;
text-decoration:none;
}
* {box-sizing:border-box;-moz-box-sizing:border-box;}
问题是,菜单是可点击的,标签不适合所有容器(这就是为什么我用红色突出显示)。如何躲闪它?
答案 0 :(得分:7)
a {
display: block;
}
也可以添加width: 100%;
,
<a>
元素为display: inline
,因此宽度仅与文本和添加到元素的任何填充一样宽。 display: block
会占用可用的宽度。
如果您仍有问题,请不要忘记父元素的填充。孩子只能占用尽可能多的空间。父填充可以防止它一直延伸到父级的边缘。元素的边距也是如此。如果此处的a
标记有边距,则会在其周围留出空间。
答案 1 :(得分:1)
li {
text-align:center;
}
a
{
background-color: red;
display:block;
}
对于填充的BG,请使用display:block;
对于对齐方式,请定位li
个项目。
如果您只想让自己的顶级列表项居中,请在所有text-align
项上使用基本li
,然后使用psuedo class
来指导ul#nav
的后代}。强>
ul#nav li {
text-align:left;
}
ul#nav > li {
text-align:center;
}