我正在寫一些Javascript代碼到頁面中,該頁面預先將div放在應該保留在文檔或窗口頂部的主體上,而不管設計/內容如何頁面有,並且正常工作,直到遇到一個標題元素固定頂部。JS/CSS上面的固定元素上方的堆棧元素
我試圖用CSS/JS來完成的事情是,不管什麼,都要讓jsbar保持最高。如果頁面上存在元素(如示例中),那麼jsbar應該堆疊在元素上方,而不是像層或層之上一樣。換句話說,如果固定頂部:0,將其向下移動到jsbar的高度,爲所有其他元素創建新的top = 0 + heightofjsbar。
看到問題的原料基本的例子:http://jsfiddle.net/XEZ5R/
<div class="jsbar">This is dynamically created jsbar</div>
<div class="page">
<header>The header bar</header>
<div class="content">the content here </div>
</div>
.page {
position:relative;
top:0;
background:#f8f8f8;
height:900px;
}
header {
position:fixed;
top:0;
background:#eee;
height:10px;
}
.jsbar {
position:fixed;
top:0;
background:#ccc;
height:10px;
}
我將不勝感激任何想法來解決這個問題。我越少篡改頁面越好。 jsbar被寫入各種各樣的設計/元素的網站。
謝謝。
UPDATE:這裏是所期望的結果的一個例子: http://jsfiddle.net/Zzat9/1/(查看結果,無視HTML/CSS)
也...我只可以使用JavaScript,沒有jQuery和我只有控制我輸出/預先放在文檔頂部的Javascript和CSS ...我無法控制其他任何東西。因此,對於這裏的示例...考慮除jsbar以外的所有內容作爲所有者頁面/內容/元素。
我的想法是採用一些Javascript來查找具有相對於文檔的位置:固定或絕對的元素,然後將它們向下移動到jsbar的高度。喜歡的東西:how to query whole DOM for elements matching some computed style ? (in pure js)
更新2:
我想出了這個JavaScript代碼,做什麼是需要:
var docelements = document.querySelectorAll('header, div, section');
var jsbarheight = '25px';
for (var i=0, max=docelements.length; i < max; i++)
{
if(window.getComputedStyle(docelements[i],null).getPropertyValue('position')=='fixed')
{
var fixedelement = docelements[i];
if(window.getComputedStyle(fixedelement,null).getPropertyValue('top')=='0px')
{
fixedelement.style.top=jsbarheight;
document.body.style.paddingTop=jsbarheight;
}
}
}
但是,這是最有效的?任何人都可以看到這個問題?立即的缺點是進行調整的延遲。
所以,你想要你的頭部固定,但你想它向下滾動,如果'jsbar'重疊它? –
另外,'jsbar'會不會在那裏?或者它是用於警報等? –
jsbar將永遠在那裏。我會模擬一個理想的結果應該是什麼樣的jsfiddle。 – Chris