Material-design-lite: ツールチップの位置が正しくない

作成日 2015年07月08日  ·  3コメント  ·  ソース: google/material-design-lite

エッジケースの方が多いですが、それでも私が現在開発しているアプリで発生しています。 このシナリオは、スクロールバーが存在し、問題の要素に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
P1 Tooltip

最も参考になるコメント

TIL!

観察された動作はCSS仕様に従って正しいです:

レイアウトがCSSボックスモデルによって管理されている要素の場合、変換にnone以外の値を指定すると、スタッキングコンテキストと包含ブロックの両方が作成されます。 オブジェクトは、固定された子孫の包含ブロックとして機能します。

ツールチップはposition: fixedを使用して配置されます。 つまり、変換を適用することにより、たとえそれがNOPであっても、固定位置の原点を移動したことになります。

簡単な修正は、ツールチップを別のコンテナ(またはbody )に移動することです。

全てのコメント3件

興味深いバグ。 変換が原因で発生していることは確認できますが、_理由_がわかりません。 これは、最近のWebによるアニメーションの推進で現在行われていることである可能性があるため、対処する必要があります。

TIL!

観察された動作はCSS仕様に従って正しいです:

レイアウトがCSSボックスモデルによって管理されている要素の場合、変換にnone以外の値を指定すると、スタッキングコンテキストと包含ブロックの両方が作成されます。 オブジェクトは、固定された子孫の包含ブロックとして機能します。

ツールチップはposition: fixedを使用して配置されます。 つまり、変換を適用することにより、たとえそれがNOPであっても、固定位置の原点を移動したことになります。

簡単な修正は、ツールチップを別のコンテナ(またはbody )に移動することです。

うーん、とても面白い。 少なくとも私たちは今知っており、それが再び起こった場合、ここに人々を向けることができます。 @surmaの調査をしてくれてありがとう!

このページは役に立ちましたか?
0 / 5 - 0 評価