メモ:高さの取得

以前に scrollHeightで高さを取得してiframeタグの高さを自動調整する方法を調べたが、
ファイルによってスクロールバーが表示されたりされなかったりしてしまう
どうやら取得している値が実際の要素の高さとは違うことがあるようなので、
実際に取得している値と、他のプロパティを調べたのでメモ

エレメントの高さを取得するプロパティ

.clientHeight paddingを含んだ高さ
.scrollHeight paddingと画面上に未表示のコンテンツを含む高さ
.offsetHeight border、padding、スクロールバーを含んだ高さ
scrollHeightでは、marginとborderの値は含まれないので、
iframeの高さ指定に利用した時に、内包要素がmarginを使っているか否かでスクロールバーが出たり出なかったりしていたのだろう

test.htmlで確認

test.htmlのコード

style属性の値を取得するプロパティ(上記 getMargin() で使用)
window.getComputedStyle( Element ).Property

実行(ボタンをクリックで、実際の値を表記)

Chromeデベロッパーツールでbodyタグの実際のサイズを確認
bodyタグ全体(box)の高さは144pxということになる
offsetHeightの値にmarginの値を加えれば、bodyのboxの値が取得できる
テキストファイルだと、まだスクロールバーが表示されてしまう
htmlファイルならドンピシャでサイズが合わせられるようになったが、
テキストファイルだとそうならない
htmlファイルではないから、marginとかpaddingなんて関係ないのだろう

他の高さを取得するプロパティ

ウィンドウ(ブラウザ)の高さを取得するプロパティ
window.innerHeight スクロールバーを含んだブラウザウィンドウの高さ
window.outerHeight タブやブックマークバーなどを含んだブラウザウインドウ外側の高さ
画面の高さを取得するプロパティ
window.parent.screen.height (PC・スマホなどの)画面の高さ
window.screen.height (PC・スマホなどの)画面の高さ
screen.height (PC・スマホなどの)画面の高さ
screen.avaliHeight モニターの利用可能な領域の高さ
3つの screen.height は、ほぼ同じらしい

継続調査

上記のプロパティでも、iframeでテキストファイルの高さがぴたりと合わせられないので継続調査する
解決編へ
また、今回知ったbox-sizingというのも面白そうなのでいつか調べたい

参考になったサイト

jQuery・JavaScript 高さ、横幅取得方法
Javascript で高さ幅とか
[JavaScript] ページの横幅、高さ、スクロール量を取得する
[JavaScript]幅と高さを取得 / 設定する方法
marginとpaddingとは?基礎から解説!ゼロから始めるHTML/CSS講座Vol08
margin?padding?ボックスモデルを理解しよう!あとbox-sizingが便利だよ、って話