Element.scrollHeight - スクロール分を含めた高さを取得する
投稿日: / 更新日:
JavaScriptの、ElementオブジェクトのscrollHeight
はスクロール分を含めた全体の高さを取得するプロパティです。
説明
scrollHeightプロパティはスクロール分を含めた全体の高さです。スクロールバーがあるかないかで計算方法が変わります。
border
padding
content
スクロールバーが表示されていない場合、heightとpaddingとborderの合計で、marginを含まない値となります。例えば上記のような要素があったとします。scrollHeightプロパティを参照すると、border(青色)、padding(白色)、height(茶色)の合計値が取得できます。これに関しては、offsetHeightと同じです。
さて、scrollHeightの特徴はここからです。要素がスクロール可能な状態になっている時、考え方が全く変わってきます。例えば上記のように青い枠線を持った要素のscrollHeightを考えてみましょう。この青い要素は自身よりも大きいサイズの画像を内包していて、スクロール表示させています。
この時、scrollHeightの起点はborderの左上ではなく、paddingの左上となります。そして、スクロールできる分の高さがscrollHeightの数値となるのです。
border
padding
content
もう1つ例を見ておきます。内包するコンテンツが小さく、スクロールをする必要がなくても、スクロールバーが表示されている状態の場合、scrollHeightの起点はpaddingの左上となり、そして、スクロールバーを含めない、paddingとheightの合計がscrollHeightの値となります。
さて、ChromeやSafariと、Firefoxで取得できるscrollHeightの値が違うことがあります。これの原因は、paddingとスクロールバーの関係です。
まずはFirefoxの例を見て下さい。下部にスクロールバーがある時、padding-bottomの幅が削られてしまいます。
一方、Chromeの例を見て下さい。下部にスクロールバーがある時、padding-bottomの幅は削られません。Safariも同様です。この削られるか、削られないかの分の幅が、scrollHeightで取得できる値のズレとなって表れます。ブラウザ間で異なる値になる可能性が高いscrollHeightは、プログラムに組み込みにくいということが言えますね。
サンプルコード
<p id="target">SYNCER</p>
// 要素を取得
var pElement = document.getElementById( "target" ) ;
// scrollHeightを取得
var scrollHeight = pElement.scrollHeight ;
デモ
Element.scrollHeight
を取得して表示します。
構文
readonly long scrollHeight = Element.scrollHeight
返り値
項目 | 説明 |
---|---|
scrollHeight | スクロールできる分を含めた全体の高さ。スクロールバーがある時とない時で計算方法が異なる。インライン要素の場合は0 。 |
関連項目
- Location - ブラウザロケーションのオブジェクト。
- Location.assign() - コンテンツをロードして表示する。
- Location.reload() - ドキュメントをリロードする。
- Location.replace() - 現在のURLを置換する。