私はWebアプリケーションを開発していますが、iFrame内にdivがあり、オーバーフローしているコンテンツを非表示にして、スクロール可能にしたいと考えています。
IOS 9のSafarで-webkit-overflow-scrolling:touch;
をdivに追加すると(既にoverflow-y: scroll;
が含まれているため、スクロールに滑らかな感触を与えることができますが、壊れてしまい、まったくスクロールしません。
これは既知の問題であることはわかっていますが、私のシナリオに関連する解決策は見つかりませんでした。データを送信する以上のことを行うiFrameがあり、実際にはユーザーのコンテンツが含まれています。向きは関係ありません。コンテンツは常にスクロール可能である必要があります。
overflow: auto
と-webkit-overflow-scrolling: touch
が含まれるdiv内の動的コンテンツでこの問題に遭遇しました。
汚い、醜い回避策:domに追加したときに、コンテンツをスクロールdivよりも大きくします。このようなもの:
<div style="overflow: auto; -webkit-overflow-scrolling: touch;">
<div style="min-height: 101%">
dynamic content
</div>
</div>
私の理論では、Safariは-webkit-overflow-scrolling: touch
が追加されたときにかなりの最適化を試みる(必要とする)ため、一部のタイプの動的コンテンツではニースを再生しません。
IOS9のwebkit-overflow-scrolling: touch
でもこの問題が発生しました。デバイスまたはiOSシミュレータで再現できます。 Christopher Campsが言及しているように、それは動的コンテンツ、つまりスクロール可能なコンテナーよりも小さいコンテナーからコンテナーよりも大きいコンテンツに変化するコンテンツでのみ発生します。
この問題を示すCodePenがここにあります (クリストファーキャンプの修正を含む)。
このSafariバグのもう1つのハックは、JavaScriptを使用してstyle="overflow: none"
し、直後に以前の値にリセットします。