我需要#blue
div的顶部与#red
标头的底部保持固定距离(例如2em)。换句话说,当#red
标题的垂直尺寸增加时(即由于视口缩小导致菜单项包裹),#blue
div应该被“推下”。
我宁愿一个纯CSS的解决方案,但如果任何人都可以证实我的感觉,这不能通过CSS完成,那么我也需要和欣赏关于哪个jQuery函数我应该挂钩的建议,以及哪些DOM事件。
注:
布局否则作品作为-是,除了目前
#blue
DIV是(有效地)垂直地从灰#page
div的顶部定位在由一个固定的距离。这意味着,由于#red
标题变得更高,因此#red
将“落后”到div而不是“推”下来。HTML被限制,除了
#green
和#blue
div的顺序可以颠倒(在#main
格内)。#blue
相对于#page
由#red
头以下逻辑流的,因为我的要求来定位其#green
兄弟定位,并且没有,:#green
必须的顶部保持与顶部定位在由固定的量#page
。我已经通过使
#green
相对于白镶上#main
DIV在其中其 水平位置实现定位实现这一点(正确或错误),以及#main
依次定位 内#page
绝对实现固定垂直位置。这当然会对
#blue
的位置产生影响。我只是不是 确定是否有办法“突破”这个部分远离其他 ,使它回到更“正常”的流程。我并不受限于这种方法来
#green
的定位 相对#page
,只是,只要最后的结果为#green
是相同的,#blue
向下移动作为#red
包装的结果, 这样做独立于#green
。
您的时间非常感谢!
HTML:
<body>
<div id="page">page
<header id="red">
<div id="menu-container">
<ul id="nav-menu">
<li class="menu-item">menu</li>
<li class="menu-item">menu</li>
<li class="menu-item">menu</li>
<li class="menu-item">menu</li>
<li class="menu-item">menu</li>
<li class="menu-item">menu</li>
<li class="menu-item">menu</li>
<li class="menu-item">menu</li>
</ul>
</div>
</header>
<div id="main">
<div id="blue"></div>
<div id="green"></div>
</div>
</div>
CSS:
body {
/*arbitrary*/
background-color: black;
padding: 0 1em
}
#page {
/*arbitrary*/
background-color: gray;
border-color:gray;
border-width:1pt;
border-style:dotted;
/* necessary - or at least, the achieved result is */
max-width: 1000px;
min-width: 240px;
margin: 0 auto;
/* both blue and green positioned relatively to this div */
position:relative;
}
header {
/*arbitrary*/
background-color: red;
/* necessary - or at least, the achieved result is */
width: 100%;
}
/* necessary - or at least, the achieved result is */
#menu-container {
width: 50%;
}
ul {
list-style: none;
}
.menu-item {
margin: 0 0.25em 0 0.25em;
display: inline-block;
}
#main {
/*arbitrary*/
border-color:white;
border-width:1pt;
border-style:dotted;
/* necessary - or at least, the achieved result is */
position:absolute;
top: .5em;
width: 100%;
}
#green {
/*arbitrary*/
background-color: green;
height: 15em;
/* necessary - or at least, the achieved result is */
z-index: 100;
width: 40%;
position: relative;
left: 50%;
}
#blue {
/*arbitrary*/
background-color: blue;
height:3em;
/* necessary - or at least, the achieved result is */
width:100%;
/**** here's the problem - top of blue currently 5em below top of grey page.
But I want it 2em below bottom of red header nomatter how tall red header is ****/
position: absolute;
top:5em;
}
总是给相关的代码和标记**的问题本身**,不只是链接(甚至没有的jsfiddle,虽然这是一个不错的辅助* *)。为什么:http://meta.stackexchange.com/questions/118392/add-stack-overfow-faq-entry-or-similar-forputing-code-in-the-question – 2013-03-09 16:55:51
@TJCrowder完成,谢谢你的咨询。 – Sepster 2013-03-09 17:04:06