プレーンなJavascriptまたはjQueryのいずれかを使用して、スクロール要素の高さ全体を取得する必要があります。しかしDOMプロパティーscrollHeight
is apparently not 100% reliable。`scrollHeight`プロパティを使用せずに確実に要素のscrollHeightを返します。
auto
のCSSの高さを与え、そのサイズをチェックアウトし、その前の値にCSSを返す想定した
- どのように私はjQueryの.css('height')
のようなCSS height:100%
の代わりheight:1012px
を得るのですか戻ります)。
$el.css('height', 'auto');
scrollHeight = $el.height();
$el.css('height', '');
:しかし、私は道にjQueryの要素に直接CSSスタイルを適用するため、単にので、理論的には、私はこれを行うことができ、スタイルには通常のスタイルシート宣言された値に''
戻り、それを適用することを考え出しましたしかし、これは動作していません。 height:auto
は、要素の元のスタイル100%
をオーバーライドしておらず、エレメントを完全な希望の高さにすることができません。
だから私はこれらの行に沿ってさらに何かを考えています:最初の子要素の上端の位置と最後の子要素の下端の位置を使用して高さを取得します。 (必要であれば、私は、これは概念の単なる証拠である、パディングとマージンを調整することができます。)
function scrollHeight($el) {
var lastEl = $el.children(':last');
return (
lastEl.position().top
+ lastEl.height()
- $el.children(':first').position().top;
);
}
Math.max($el[0].scrollHeight, $el.height())
の中にいくつかの作業にも役に立つかもしれません...
scrollHeight
を知り、それが信頼できるものであること、アイテムがスクロールされても変更されないこと、そしてすべての主要なブラウザやIE 8で作業する必要がある唯一の人になることはできません(ただし、興味深いことにIE 6の解決策を知るために& 7)。
IE 6と7? Google(はい、白い開始ページでも))は、2人の同僚に支持を落としました –
問題を再現するjsfiddleを提供できますか? –
@ RokoC.Buljanそれはかなり良い点です。私の会社は去年のうちにIE7を去っただけなので、野生では乏しくなっても、それをどうサポートするか知りたいと思っていたのです。しかし、私はこれを反映するために質問を更新します。 – ErikE