top: 0
(ビューポートの最上部に追加)を設定したときに、固定された配置が何を達成しようとしているのですか?親要素と水平に(固定でこれを行うことは問題です)。スクロールでビューポイントの最上部に絶対配置された要素を固定する
これはテーブルヘッダーなので、入れ子にしてこの方法でハッキングしようとすると、異なる位置付け方法に設定されたdivs
はここでは機能しません。
私は現在スクロールイベントリスナー内のビューポートの上部からテーブルの上面の距離を計算しながらabsolute
の位置でテーブルヘッダを維持した試み:
const distanceToTop = this.headerElement.getBoundingClientRect().top;
this.stickyHeaderElement.style.top = `${Math.abs(distanceToTop)}px`;
this.headerElement
でありますstickyHeaderインスタンスがスモーク&ミラーが発生している間にスクロールして(何もしない)スクロールできる元のテーブルヘッダー。
この現行の方法は、私はそれが何をしたいやっている... あなたは、元のテーブルヘッダを過ぎてスクロールして粘着性のインスタンスを追加して、粘着性のヘッダはすべての出来事により、すべてのDOM操作に揺れるのでしかし、それは非常にハックですイベントリスナーが起動する時刻。
これは上記のロジックで再計算されているためです。
質問:絶対配置されたテーブルヘッダ要素を、固定配置のようにビューポートの上部に追加することはできますか?そこにはより効率的なソリューションがありますか?
私は、あなたが探している単語は "**スティッキー**" であると信じています。すでにたくさんの例と解決策があります。ただそれを探してください:) – Terry
探しているものが分かっていれば、要素の.topが一番上になると 'position:fixed'を追加することができますビューポート(またはエフェクトをトリガーする場所)を指定します。 – ingridly
@ingridlyええ、問題は、位置が固定に設定されていて、水平方向にスクロールすると、追加されたテーブルヘッダーが残りのコンテンツとスクロールしないということです。絶対配置**では、テーブルヘッダーをコンテンツと水平方向にスクロールできます。トリッキーな状況。 – Jose