我有以下内容:
HTML(部分):
<div id="page">
<div id="header">
<div id="logo">
<img src="logo.jpg" alt="Logo" />
</div>
<div id="menu">
<ul>
<li>Item 1</li>
<li>Item 2</li>
<li>Item 3</li>
<!-- how many <li>s as need -->
</ul>
</div>
</div>
<div id="content">
</div>
<div id="footer">
</div>
</div>
CSS:
html, body {
min-height: 100%;
}
#page {
position: absolute;
right: 0;
width: 97%;
height: 100%;
overflow-y: auto;
text-align: center;
}
#header {
position: relative;
height: auto;
min-width: 100%;
margin: 10px auto 0 auto;
display: inline-block;
overflow-x: hidden;
}
#header #logo {
float: left;
}
#header #menu ul {
list-style-type: none;
}
#header #menu ul li {
height: 2em;
line-height: 2em;
}
#content {
position: relative;
margin: 20px auto 0 auto;
width: 95%;
}
#footer {
position: relative;
margin-top: 20px;
width: 100%;
height: 260px;
}
当添加新的菜单项时,它们应该使菜单上升而不是下来,这就是为什么我需要做我上面所说的。下面的第一张图片说明了我想做的事情以及实际情况(较轻的部分是在较暗的部分,是的,它是移动布局):
第一张图片:
第二张图片:
请不要使用JavaScript,只需要纯CSS。 再次感谢您的关注。
答案 0 :(得分:2)
尝试将#header的显示属性更改为表格,将#logo和#menu显示为'table-cell',并将它们垂直对齐到底部 - 它应该做你需要的
#header {
position: relative;
height: auto;
min-width: 100%;
margin: 10px auto 0 auto;
display: table;
overflow-x: hidden;
}
#logo {
display:table-cell;
vertical-align:bottom;
}
#menu {display:table-cell; vertical-align:bottom;}
你的css #header #logo
中的选择器太多了,因为标识符不能重复,所以#logo
就足够了
这是工作示例:http://jsfiddle.net/6xBvR/1/
答案 1 :(得分:1)
将position:absolute;
和bottom:0px;
添加到#header #logo
:
#header #logo {
float: left;
position: absolute;
bottom: 0px;
}
应该解决你的问题。您也可以将#header #logo
截断为#logo
。
答案 2 :(得分:0)
我不会使用浮点数,我会使用display:inline-block
和vertical-align:bottom
#logo {
display: inline-block;
vertical-align:bottom;
}
#menu {
display: inline-block;
vertical-align:bottom;
}
但你需要设置一些宽度。
我需要从ul
#menu ul {margin-bottom:0px}