HTML
 Computer >> コンピューター >  >> プログラミング >> HTML

HTML DOM offsetTopプロパティとは?使い方と取得できる値をサンプル付きで解説

HTML DOM offsetTopプロパティとは

HTML DOMのoffsetTopプロパティは、指定した要素の上端が、親要素の上端からどれだけ離れているかを示す数値(ピクセル単位)を返します。JavaScriptで要素の垂直方向の位置を取得したい場合に活用できる、基本的かつ重要なプロパティです。

例えば、スクロールに応じたアニメーションや、要素の位置に基づいたレイアウト制御などを実装する際に役立ちます。

構文

offsetTopプロパティは、ピクセル(px)単位の数値を返します。構文は以下のとおりです。

HTMLelement.offsetTop

戻り値に含まれるもの

offsetTopで返される値には、以下の要素が含まれます。

  • 指定した要素の上位置とマージン(margin)
  • 親要素の上パディング(padding)、スクロールバー、ボーダー(border)、マージン(margin)

offsetTopプロパティの使用例

ここでは、フォーム要素のoffsetTop値を取得し、その内訳(子要素のtop・マージン、親要素bodyのパディング・ボーダー・マージンなど)とあわせて画面に表示するサンプルを紹介します。

サンプルコード

<!DOCTYPE html>
<html>
<head>
<title>HTML DOM offsetTop</title>
<style type="text/css">
    #picForm {
        width:70%;
        margin: 0 auto;
        text-align: center;
    }
    input[type="button"] {
        border-radius: 10px;
    }
    #containerDiv {
        margin: 0 auto;
    }
</style>
</head>
<body>
    <form id="picForm">
        <fieldset>
            <legend>HTML-DOM-offsetTop</legend>
            <div id="containerDiv">
                <img id="image" src="https://www.tutorialspoint.com/compiler_design/images/compiler-design-mini-logo.jpg">
            </div>
            <input type="button" onclick="getHeight()" value="Get offsetTop">
            <div id="divDisplay"></div>
        </fieldset>
    </form>
<script>
    var divDisplay = document.getElementById("divDisplay");
    var picForm = document.getElementById("picForm");
    var containerDiv = document.getElementById("containerDiv");
    function getHeight() {
        // window.getComputedStyle() で計算済みのCSSスタイルを取得
        var style = window.getComputedStyle(picForm);
        var style2 = window.getComputedStyle(document.body);
        divDisplay.innerHTML = 'フォームのTop Offset: '+picForm.offsetTop+'px';
        divDisplay.innerHTML += '<br>子要素(form)のTop位置: '+style.Top;
        divDisplay.innerHTML += '<br>子要素(form)のTopマージン: '+style.marginTop;
        divDisplay.innerHTML += '<br>親要素(body)のTopパディング: '+style2.paddingTop;
        divDisplay.innerHTML += '<br>親要素(body)のTopボーダー幅: '+style2.borderTopWidth;
        divDisplay.innerHTML += '<br>親要素(body)のTopマージン: '+style2.marginTop;
    }
</script>
</body>
</html>

実行結果

このサンプルでは、window.getComputedStyle()メソッドを使って計算済みのCSSスタイルを取得し、offsetTopの値がどのスタイル値から構成されているかを確認できます。

ボタンをクリックする前の表示

HTML DOM offsetTopプロパティとは?使い方と取得できる値をサンプル付きで解説

「Get offsetTop」ボタンをクリックした後の表示

HTML DOM offsetTopプロパティとは?使い方と取得できる値をサンプル付きで解説

まとめ

offsetTopプロパティを使えば、要素が親要素の上端からどの位置にあるかを簡単に数値として取得できます。戻り値には要素自身のマージンだけでなく、親要素のパディングやボーダーなども含まれる点に注意しましょう。要素の位置情報が必要なUI実装の際に、ぜひ活用してみてください。

  1. HTML DOM offsetLeftプロパティとは?使い方をサンプルコード付きで解説

    HTML DOM offsetLeftプロパティとは HTML DOMのoffsetLeftプロパティは、指定した要素の左端が親要素の左側からどのくらいの位置にあるかを表す数値を返します。戻り値はピクセル(px)単位の整数値です。 このプロパティは、要素の配置計算やドラッグ&ドロップ機能の実装など、正確な位置情報が必要となる場面で非常に役立ちます。 構文 構文は以下の通りです。 HTMLelement.offsetLeft offsetLeftが返す値には、次のものが含まれます。 指定した要素自体の左位置とマージン(margin) 親要素の左パディング(padding)、スクロールバー、ボー

  2. HTML DOM Video textTracksプロパティの使い方をわかりやすく解説

    HTML DOM の Video textTracks プロパティは、<video> 要素に関連付けられたテキストトラック(字幕やキャプションなど)の情報を格納した TextTrackList オブジェクトを返します。このプロパティを利用すると、JavaScript から動画に設定された字幕トラックの総数やラベル、言語などの情報を簡単に取得できます。 構文 textTracks プロパティの基本的な構文は以下の通りです。 mediaObject.textTracks 戻り値は TextTrackList オブジェクトであり、length プロパティでトラックの総数を取得したり、イン