如何使水平可扩展菜单流畅

时间:2014-03-17 17:00:57

标签: html css responsive-design

我有以下HTML代码,它在DIV中显示水平可扩展菜单:

<div id='cssmenu'>
    <ul>
        <li class='active'><a href='about_us.aspx'>ABOUT US</a></li>
        <li><a href="#">MISSION</a></li>
        <li class='has-sub'><a href='#'>LEADERSHIP</a>
            <ul>
                <li><a href='#'>President</a></li>
                <li><a href='#'>Medical Director</a></li>
                <li><a href='#'>Board of Directors</a></li>
                <li><a href='#'>Key Administrators</a></li>
            </ul>
        </li>
        <li><a href='#'>WESTMED HISTORY</a></li>
        <li><a href='#'>COMMUNITY SUPPORT</a></li>
    </ul>
</div>

这是菜单的CSS:

@import url(http://fonts.googleapis.com/css?family=Oxygen+Mono);

#cssmenu {
    padding: 0;
    margin: 0;
    border: 0;
    width: 100%;
}
#cssmenu ul, #cssmenu li {
    list-style: none;
    margin: 0;
    padding: 0;
}
#cssmenu ul {
    position: relative;
    z-index: 19;
}
#cssmenu ul li {
    float: left;
    min-height: 1px;
    vertical-align: middle;
    border-right: 1px solid #535353;
}
#cssmenu ul li:last-child {
    border-right: none;
}
#cssmenu ul li.hover, #cssmenu ul li:hover {
    position: relative;
    z-index: 20;
    cursor: default;
}
#cssmenu ul ul {
    visibility: hidden;
    position: absolute;
    top: 100%;
    left: 0;
    z-index: 21;
    width: 100%;
}
#cssmenu ul ul li {
    float: none;
}
#cssmenu ul ul ul {
    top: 0;
    left: auto;
    right: -99.5%;
}
#cssmenu ul li:hover > ul {
    visibility: visible;
}
#cssmenu ul ul {
    bottom: 0;
    left: 0;
}
#cssmenu ul ul {
    margin-top: 0;
}
#cssmenu ul ul li {
    font-weight: normal;
}
#cssmenu a {
    display: block;
    line-height: 1em;
    text-decoration: none;
}
#cssmenu {
    background: #333;
    border-bottom: 4px solid #1b9bff;
    font-family: Tahoma, Arial, sans-serif;
    font-size: 12px; 
}
#cssmenu > ul {
    *display: inline-block;
}
#cssmenu:after, #cssmenu ul:after {
    content: '';
    display: block;
    clear: both; 
}
#cssmenu a {
    background: #333;
    color: #CBCBCB;
    padding: 0 12px; 
}
#cssmenu ul {
    text-transform: uppercase;
}
#cssmenu ul ul {
    border-top: 4px solid #1b9bff;
    text-transform: none;
    min-width: 190px; 
}
#cssmenu ul ul a {
    background: #1b9bff;
    color: #FFF;
    border: 1px solid #0082e7;
    border-top: 0 none;
    line-height: 150%;
    padding: 16px 20px; 
}
#cssmenu ul ul ul {
    border-top: 0 none;
}
#cssmenu ul ul li {
    position: relative;
}
#cssmenu > ul > li > a {
    line-height: 48px;
}
#cssmenu ul ul li:first-child > a {
    border-top: 1px solid #0082e7;
}
#cssmenu ul ul li:hover > a {
    background: #35a6ff;
}
#cssmenu ul ul li:last-child > a {
    border-radius: 0 0 3px 3px;
    box-shadow: 0 1px 0 #1b9bff; 
}
#cssmenu ul ul li:last-child:hover > a {
    border-radius: 0 0 0 3px;
}
#cssmenu ul ul li.has-sub > a:after {
    content: '+';
    position: absolute;
    top: 50%;
    right: 15px;
    margin-top: -8px;
}
#cssmenu ul li:hover > a, #cssmenu ul li.active > a {
    background: #1b9bff;
    color: #FFF;
}
#cssmenu ul li.has-sub > a:after {
    content: '+';
    margin-left: 5px; 
}
#cssmenu ul li.last ul {
    left: auto;
    right: 0; 
}
#cssmenu ul li.last ul ul {
    left: auto;
    right: 99.5%;
}

对于桌面和大屏幕,它的效果很好,但每当我将其加载到平板电脑中时,图像就会转到下一行:

enter image description here

如何使菜单更流畅,以便根据cssmenu DIV可用的空间大小调整大小?

1 个答案:

答案 0 :(得分:1)

查看flexbox,这可能是您的选择。

这个演示非常方便,您可以选择 space-around (如果我理解您的问题):http://codepen.io/chriscoyier/pen/FAbpm