html - 让li完全覆盖ul,li的宽度不固定

标签 html css menu html-lists

我有一个水平菜单导航。

enter image description here

代码是:

<div class="menu-holder">
    <ul class="menu"> 
        <li>
            <a href="#">Home</a> 
        </li>
        <li>
            <a href="#">Profile</a> 
        </li>
        <li>
            <a href="#">Billing</a> 
            <ul class="submenu"> 
                <li><a href="#">New</a></li> 
                <li><a href="#">Find</a></li>                         
            </ul>
        </li>
        <li>
            <a href="#">Workspaces</a> 
        </li>
        <li>
            <a href="#">Manage Leaves</a> 
        </li>
        <li>
            <a href="#">Blogs</a> 
        </li>
        <li>
            <a href="#">News</a> 
        </li>
        <li>
            <a href="#">Search</a> 
        </li>              
        <li>
            <a href="#">Albums</a> 
        </li> 
    </ul>         
</div>

CSS:

ul.menu {
    list-style: none;
    padding: 0 20px;    
    margin: 0;
    float: left;
    width: 960px;
    background: #222;
    font-size: 1.2em;
    -moz-border-radius: 20px;
    -webkit-border-radius: 20px;
    -khtml-border-radius: 20px;
    border-radius: 10px;    
    behavior: url(CSS3PIE);
}
ul.menu li {
    float: left;
    margin: 0;  
    padding: 0 15px 0 0;
    position: relative; 
}
ul.menu li a{
    padding: 10px 5px;
    color: #fff;
    display: block;
    text-decoration: none;
    float: left;
}
ul.menu li a:hover{
    background: url(Images/topnav_hover.gif) no-repeat center top;
}
ul.menu li span { 
    width: 17px;
    height: 35px;
    float: left;
    background: url(Images/subnav_btn.gif) no-repeat center top;
}
ul.menu li span.subhover {background-position: center bottom; cursor: pointer;} 
ul.menu li ul.submenu {
    list-style: none;
    position: absolute; 
    left: 0; top: 44px;
    background: #333;
    margin: 0; padding: 0;
    display: none;
    float: left;
    width: 170px;
    border-radius: 5px; 
    -webkit-border-radius: 5px;
    border: 1px solid #111;
    behavior: url(CSS3PIE);
}
ul.menu li ul.submenu li{
    margin: 0; padding: 0;
    border-top: 1px solid #252525; 
    border-bottom: 1px solid #444; 
    clear: both;
    width: 170px;
}
html ul.menu li ul.submenu li a {
    float: left;
    width: 145px;
    background: #333 url(Images/dropdown_linkbg.gif) no-repeat 10px center;
    padding-left: 20px;
}
html ul.menu li ul.submenu li a:hover { 
    background: #222 url(Images/dropdown_linkbg.gif) no-repeat 10px center; 
}

还有 jQuery 被用来创建这个导航。

现在我想让li完全覆盖ui。但没有对 li 应用固定宽度。因为还有另一个菜单项(图中未显示),该菜单项将根据登录用户的 Angular 色可见。

可能吗?


enter image description here

最佳答案

我相信解决此问题的最佳方法是使用 display: table/table-cell 而不是 float: left。这是一个 fiddle :http://jsfiddle.net/nk7yY/

基本上,您要在代码中更改的内容是:

ul.menu {
    display: table;
    width: 100%; /* Tables are not 100% width like block elements */
    /* Everything you already had except float: left; which I don't really get why you have to begin with */
}

ul.menu li {
    display: table-cell;
    /* Everything you already had except float: left; */
}

ul.menu li a {
    /* Just remove the float here as well */
}

编辑:虽然这在旧版 IE 中不起作用,但您可以为它们保留 float (例如使用 *float hack)。

关于html - 让li完全覆盖ul,li的宽度不固定,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10062942/

相关文章:

javascript - 如何从 Bootstrap 搜索栏获取输入并将其放入 ajax 调用中以检索数据?

jquery - 如何使用 jquery 根据另一个下拉列表的选择更改下拉列表值

CSS 按钮 : 100% Gradient-filled div with image overlay only covering top half

menu - 如何使用 GTKada 创建撕下菜单?

php - 如何在不缩小列的情况下制作可滚动表格?

html - 使用 Form::text 在 Laravel 输入字段上设置自动对焦

css - 语义 UI css 与最小宽度属性混淆。我该如何解决?

jquery - 以与单击它们相反的顺序撤消框的颜色变化(使用 HTML、CSS、Jquery)

html - 固定 div 上的移动式菜单定位

javascript - 算法停止了,我不知道为什么