104

JavaScript を使用して、親要素ではなく、ページの上部から要素までの距離を取得する方法を知りたいです。
ここに画像の説明を入力

http://jsfiddle.net/yZGSt/1/

4

15 に答える 15

106

offsetTop は、要素の親のみを調べます。親がなくなるまで親ノードをループし、それらのオフセットを合計します。

function getPosition(element) {
    var xPosition = 0;
    var yPosition = 0;

    while(element) {
        xPosition += (element.offsetLeft - element.scrollLeft + element.clientLeft);
        yPosition += (element.offsetTop - element.scrollTop + element.clientTop);
        element = element.offsetParent;
    }

    return { x: xPosition, y: yPosition };
}

更新: この回答にはいくつかの問題があります。値は本来あるべき値と比べてわずかな違いがあり、場合によっては正しく機能しません。

正確な@eeglbalazsの回答を確認してください。

于 2014-07-18T16:04:20.787 に答える
14

使用するoffsetTop

document.getElementById("foo").offsetTop

デモ

于 2012-08-04T04:46:49.460 に答える
2

要素の一番上の位置までスクロールします。

var rect = element.getBoundingClientRect();
var offsetTop = window.pageYOffset + rect.top - rect.height;
于 2018-12-20T06:38:29.843 に答える
1
document.getElementById("id").offsetTop
于 2022-01-13T22:06:09.207 に答える
-8

jQuery のoffset()メソッドを使用する:

$(element).offset().top

例: http://jsfiddle.net/yZGSt/3/

于 2012-08-04T04:48:50.650 に答える