私は自分のWebアプリケーションのスクロールを最適化しようとしています。私は大量のデータを持つデータテーブルを持っており、スクロールはかなり悪くなります。私はwill-change: transform
をデータテーブルに追加しましたが、テーブルのヘッダーはposition: fixed
でした(ビューポートでスクロールできるように修正しました)。要素はビューポートではまったく動かず、ドキュメントの流れにはまっていません。will-change:不透明度は固定要素をwill-changeとは違って扱います:chromeのtransform?
しかし、偶然、私がwill-change:opacity
を代わりに使用すると、私の固定ヘッダーが正常であることがわかりました。誰かがこの行動を説明できますか?私は彼らが異なった行動を取るべきであると言う文書を見つけることができませんでした。
ここで私が話していることの例を示すコードペンです。値を切り替えると、青いdivにスクロールします。ここで https://codepen.io/bkfarns/pen/aLYgrN
ペンからの基本的なコードは、あまりにもです:
HTML:
<div class="container">
<div class="fixed">should be position: fixed</div>
<div class="too-tall">div that is too tall</div>
</div>
はCSS:
.container {
margin-left: 100px;
background-color: blue;
width:400px;
height:300px;
overflow: auto;
will-change: transform;//changing this to opacity fixes the issue
}
.fixed {
background-color: grey;
position: fixed;
margin-left: 150px;
margin-top: 100px;
}
.too-tall {
background-color: red;
width: 90px;
height: 600px;
}
今すぐスペックを掘り下げる時間がありませんが、おそらく 'will-change:transform'は' transform'が 'none'に留まらないことを意味し、ブラウザは直接スタッキングを作成しますあなたが 'transform:translate(0,0);'を設定したのと同じように、あなたの要素のコンテキストを返します。 https://stackoverflow.com/questions/15194313/transform3d-not-working-with-position-fixed-childrenを参照してください。実際の仕様ではなく、[MDNの記事のこのパラグラフ](https://developer.mozilla.org/en-US/docs/Web/CSS/will-change#wikiArticle)の最後の箇条書きは、この正確な効果について警告します。 – Kaiido