私がやろうとしているの.top
は、固定されたブロック(それを呼び出しましょう)と別のブロック(これを呼び出しましょう).content
を持って.top
いること.top
です。
今、いくつかの明白な設定があります
これ http://jsbin.com/rucifuzu/1/edit?html,css,output
またはこれ http://jsbin.com/hufomaxu/1/edit?html,css,output
両方の問題は、a) スクロールバーの幅を考慮する必要があることです。b) スクロール/スワイプしても、その下に.top
ある要素では何もしません。overflow: auto
私はいくつかの解決策について考えました。
最初はpointer-events: none
on.top
になり、マウスイベントに対して「透明」になり、その下にあるものすべてでスクロールがトリガーされます。問題は、クリックイベントも機能しないことです.top
。それは問題だ。クリック/選択可能なものだけにリセットすることもできpointer-events
ますが、それらのクリック可能なものの1つが大きなお尻の見出しになることを考えると、マウスの位置でスクロールが機能しないという問題が再び発生します。auto
overflow: auto
2 つ目は、私がスクロール委譲と呼んでいるもので、JS を使用してマウスホイール イベントをキャッチし、要素の scrollTop を変更しました。これは正常に機能しますが、この委譲が行われている間と、ネイティブ スクロールの開始時にスクロールの「感触」が異なる可能性があり.content
ます。また、タッチ デバイスでこの動作を正しく行うのも面倒です。
したがって、どちらも理想的ではありません。この問題に対する巧妙で簡単な解決策を見逃していませんか?
TL;DR 目標は、.top
要素をクリック可能で「スクロールスルー可能」にすることです
- この方法
.top
はクリック可能ですが、その下の要素はスクロールしません- http://jsbin.com/hufomaxu/1/edit?output - このようにその下の要素はスクロールしますが、
.top
クリックできません- http://jsbin.com/tuluwili/1/edit?output