エッジケースの方が多いですが、それでも私が現在開発しているアプリで発生しています。 このシナリオは、スクロールバーが存在し、問題の要素にCSSを介して適用された変換がある場合にのみ発生します。
ここの例を参照してください(赤いボックスにカーソルを合わせます)
このようなものは理論的に問題を解決するでしょう(私は思う)
let rect = el.getBoundingClientRect();
let left = rect.left + window.pageXOffset;
let top = rect.top + window.pageYOffset;
// now we have a more accurate representation of the current top / left coords
興味深いバグ。 変換が原因で発生していることは確認できますが、_理由_がわかりません。 これは、最近のWebによるアニメーションの推進で現在行われていることである可能性があるため、対処する必要があります。
うーん、とても面白い。 少なくとも私たちは今知っており、それが再び起こった場合、ここに人々を向けることができます。 @surmaの調査をしてくれてありがとう!
最も参考になるコメント
TIL!
観察された動作はCSS仕様に従って正しいです:
ツールチップは
position: fixed
を使用して配置されます。 つまり、変換を適用することにより、たとえそれがNOPであっても、固定位置の原点を移動したことになります。簡単な修正は、ツールチップを別のコンテナ(または
body
)に移動することです。