のは、私は、スクロール可能なdivの内側に<li>
要素を持っており、スクロールはビューポートでその要素を表示するように設定したとしましょう。
上記の図に示すように、その要素とスクロール可能な親の間の距離を取得する必要がありますが、element.getBoundingClientRect().top
とelement.offsetTop
は私に間違った値を与えます。それはできますか?
私は物事が少し容易にするために、ペンを作った:
http://codepen.io/Darksoulsong/pen/LbYMex
私のコードの一部:
document.addEventListener("DOMContentLoaded", function(event) {
var selectedEl = document.getElementById('consequatur-51');
var selectedElRect = selectedEl.getBoundingClientRect();
var sidebar = document.getElementById('sidebar');
sidebar.scrollTop = selectedEl.offsetTop - 60;
document.getElementById('offsetTop').innerText = selectedEl.offsetTop;
document.getElementById('rectTop').innerText = selectedElRect.top;
});
あなた 'scrolledParentDistance'はいつもあなたがスクロール可能な要素を持っている場合は、内部のコンテンツをスクロールすると、その' top'が変更されます0 – Oriol
番号になります。 'getBoundingClientRect()。top'も同様に変更されます。 'getBoundingClientRect()。top'は現在の時点で要素の上端からビューポートの上端までの距離を返します。固定値ではありません – Dummy
まあ、あなたは' parentTop = parentElem.getBoundingClientRect ().top'、そして、 'parentTop - parentElem.getBoundingClientRect()。top'は基本的に' parentTop - parentTop'ですので '0'です。 – Oriol