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