响应式设计导航菜单

时间:2014-03-26 00:09:58

标签: jquery html css html5 css3

enter image description here


  • 这是一种响应式设计。
  • Logo是此处唯一的固定宽度元素。其他元素的宽度应取决于内容。
  • 导航项目不可数。所以无法设置固定宽度。 (可能是3或4个菜单项)
  • 搜索元素的宽度应取决于其他元素。并尽可能地延伸。
  • 用户名可以非常,因此无法在此处定义宽度。如果username更长,则元素的宽度更长。

尝试了几种方法: *将外部div作为display:table和其他所有元素作为display:table-cell。 *通过使用jquery窗口调整大小来计算搜索宽度。但是当点击窗口调整大小按钮时,它的宽度不是应该的。

任何人都知道如何使用纯CSS / CSS3实现此导航,或者不是通过jquery实现此导航?

欣赏你的想法,帮助......

2 个答案:

答案 0 :(得分:5)

你去了:http://jsfiddle.net/6jXcz/1/

水平缩放非常精细,与导航项目数无关。

说明:我使用了“表格”CSS规则并强制#search的宽度为100%。为了防止徽标(或任何其他元素)被“粉碎”,我使用了white-space: nowrap上的#menumin-width上的#logo

<div id="table">
    <div id="menu">
        <div id="logo">LOGO</div>
        <ul id="navigation"><li>Item 1</li><li>Item 2</li></ul>
        <div id="search">
            <input type="text" name="search">
        </div>
        <div id="user">Username</div>
    </div>
</div>

和CSS:

#table {
    display: table;
    width: 100%;
}
#menu {
    background: grey;
    line-height: 50px;
    white-space: nowrap;
    display: table-row;
}
#menu > * {
    display: table-cell;
    text-align:center;
    height: 50px;
}
#logo {
    min-width: 200px;
    width: 200px;
}
#navigation {
    list-style-type: none;
    margin:0;
    padding:0;
}
#navigation li {
    display:inline-block;
    height: 50px;
    background: #999;
    padding: 0 5px;
}
#search {
    background: #aaa;
    width: 100%;
}
#search input {
    width: 98%;
    padding: 0;
    margin: 0;
    border: none;
    height: 92%;
}

答案 1 :(得分:0)

添加到SB的答案,我会将#search input CSS更改为此以防止调整98%宽度的问题(您可以看到搜索框右侧的填充在调整大小时变得笨拙原答案):

修正版:http://jsfiddle.net/6jXcz/2/

#search input {
    vertical-align: top;
    width: 100%;
    height: 46px;
    margin: 2px 0;
    padding: 0;
    border: none;    
    -webkit-box-sizing: content-box;
    -moz-box-sizing: content-box;
    box-sizing: content-box;
}