1
一個position:relative
元素box
裏面,我有如何完美重疊兩個(相同)元素?
- 一個絕對定位的元素
parent
在top:0
一對夫婦的靜態p
和h1..h6
內。這些可能都有不同的保證金/填充值。 - 幾個絕對定位的元素,其中元素名稱和內容完全匹配上面列表#1中的一個元素。
目標是設置第二個元素的y值,使其與第一個元素中的相應元素完全重疊。
我已經採取了這種做法(使用關閉,但什麼事情都可能被真正使用),從元素content
生成列表#1的陣列:
goog.dom.removeChildren(parent);
for (var i=0; i<content.length; i++) {
offsets.push(parent.offsetHeight);
goog.dom.appendChild(parent, content[i]);
}
return offsets;
然後,使用從offsets
值:
var matchedElm = source[i].cloneNode(true);
goog.style.setStyle(matchedElm, {"top": offsets[i] + "px"});
goog.dom.appendChild(box, matchedElm);
現在,這適用於各種填充和margin=0
,但在利潤率上p
和h1..6
都是非0失敗。我也嘗試過「scrollHeight」,但似乎沒有考慮到利潤率。 然後我嘗試直接從列表#1中的呈現元素獲得offsetTop
,但是這似乎產生與上述過程完全相同的結果以填充offsets
。
我怎樣才能使重疊工作?我正在尋找一個原生的JavaScript或封閉庫解決方案。
您的回答有用,謝謝!減去goog.style.getMarginBox的伎倆。但你能解釋爲什麼減法?我的直覺是,parent.offsetHeight給出的值太低(缺乏邊際),而且必須添加一些東西,而不是減去? – bebbi
@bebbi它看起來像設置重疊內容的頂部設置外框的頂部(包括邊距)。所以我將頂部設置爲30px,邊距爲10px,然後內容將顯示爲40px。 getPageOffset爲您提供內部框(內容的頂部),更改空白將會更改其值。我在代碼中看到了缺陷,因爲我從重疊內容的頂部中扣除了要重疊的內容的邊距,但應該使用重疊內容的邊距,代碼的工作原理是兩者相同,但如果它們不相同,則會失敗。我糾正了這個錯誤。 – HMR
我不確定如何計算getPageOffset,但如前所述;它會給你的內容的位置(所以它包括利潤)。我沒有在我的代碼中使用offsetHeight,因爲查看getPageOffset的源代碼來手動計算元素的位置涉及太多的代碼來重新編寫。我不知道如何使用它:-) – HMR