簡體   English   中英

獲取文檔內容的高度,包括絕對/固定定位元素

[英]Get height of document content including absolute/fixed positioned elements

我需要調整iframe的大小以匹配其內容 ,但我嘗試過的高度屬性不考慮position: fixed元素。

假設只有兩個元素的文檔具有absolutefixed類。

body { padding: 0; margin: 0; }
.absolute {
    position: absolute;
    height: 100px;
}
.fixed {
    position: fixed;
    height: 200px;
}
  • html.scrollHeight 0(Opera / Firefox中的視口高度)
  • html.offsetHeight 0
  • body.scrollHeight 0(Chrome中的視口高度)
  • body.offsetHeight 0
  • body.outerHeight 0

如果我添加html { position: relative; } html { position: relative; }html.scrollHeight在Chrome中為100px,但沒有值為200px。 起初我也有浮動問題,但我通過向body添加一個clearfix來解決這個問題。

我在這里做了一個jsbin: http ://jsbin.com/ehixiq

如果不可能獲得真正的高度,那么我最好的解決方法是什么? 我只需要支持最新版本的Opera,Chrome和Firefox。

我發現最好的方法是使用javascript,因為它可以在渲染后可靠地獲得高度。 在最近的一個項目中,我使用jQuery來完成窗口的完整高度:

$(document).height()

你可以為元素高度做這樣的事情:

$('.element2').height($('.element1').height())

更新:

$('iframe').height($('iframe').parent().height())

我能想出的唯一方法是獲得所有元素的實際底部位置:

var els = Array.prototype.slice.call(document.body.getElementsByTagName('*'));
var elHeights = [];
for (var i = 0, l = els.length; i < l; i++) {
  elHeights.push(els[i].scrollTop + els[i].offsetHeight);
}
var docHeight = Math.max.apply(Math, elHeights);

瀏覽器在具有100個元素的DOM上管理每秒5-100k次操作,在我的情況下,大多數文檔將具有大小。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM