我需要#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