スクロールdivでバウンス効果を無効にする方法はありますか?
これまで私はこれらのことを試しましたが、どれもうまくいきませんでした。助けてください!
モバイルWebアプリケーションでiPhoneの垂直バウンス/スクロールを無効にする方法
UIScrollViewおよびpagingEnabled=YESでバウンスを無効にできない
ipadサファリ:スクロールを無効にし、効果をバウンスしますか?
スクロール時にUITableViewの垂直方向のバウンスを無効にする
と
ありがとう!
スクロールdivでバウンス効果を無効にする方法はありますか?
これまで私はこれらのことを試しましたが、どれもうまくいきませんでした。助けてください!
モバイルWebアプリケーションでiPhoneの垂直バウンス/スクロールを無効にする方法
UIScrollViewおよびpagingEnabled=YESでバウンスを無効にできない
ipadサファリ:スクロールを無効にし、効果をバウンスしますか?
スクロール時にUITableViewの垂直方向のバウンスを無効にする
と
ありがとう!
Cordova 1.7を使用している場合は、Cordova.plistファイルを開き、キーUIWebViewBounceをNOに設定するだけです。
phoneGapプロジェクトのconfig.xml
ファイルを開き、UIWebViewBounceをデフォルトのtrueからfalseに変更します。
<preference name="UIWebViewBounce" value="false" />
デフォルトが真である理由を想像することはできません...
これは、スクロールしたい要素に .scroll クラスを配置するのに役立ちます。
起こっていることは、すべてのタッチ移動がデフォルトで無効になっていることです。スクロールしたい要素に .scroll クラスがある場合、ゲートを true に設定して通過を許可します。
タッチエンドでは、ゲートを false にリセットします。
これは IOS5 と 6 で動作し、Chrome と Safari で動作する可能性があり
ます この記事を見て拡張して
ください How to prevent page scrolling when scrolling a DIV element?
これに対する唯一の問題は、スクロール可能な要素をオーバースクロールすると、スクロールが true に設定されている間、弾性効果によりスクロールがツリーを通過できることです。スクロール位置を手動で設定すると、恐ろしいバウンス効果によって上書きされます。
それらのAppleフリガーには、各ステップが固定された設定されたタイムアウトで実行されるスクロールのネイティブ実装があるに違いありませ
ん。したがって、-20までスクロールすると、各ステップがどこにあるかをチェックせずにループに固定されると思います。-20 -19 -18 などに順番にスクロールします。
これを回避する方法を考えなければなりません!(実際、それを入力して負荷をかけるのですが、私にはアイデアがあります!)
$(function(){
var scroll = false
var scroll_element;
$('body').on('touchmove',function(e){
if(!scroll){
e.preventDefault()
}
})
$('body').on('touchend',function(e){
scroll = false
})
$('.scroll').on('touchstart',function(e){
scroll_element = this
scroll = true
})
})
あなたのコメントに基づいて、使用しているコードはスクロールを完全に無効にすることです。スクロールしたいが、バウンス効果がなければ、次のようにしてみてください。
var xStart, yStart = 0;
document.getElementById("scrollableDiv").addEventListener('touchstart',function(e) {
xStart = e.touches[0].screenX;
yStart = e.touches[0].screenY;
});
document.getElementById("scrollableDiv").addEventListener('touchmove',function(e) {
var xMovement = Math.abs(e.touches[0].screenX - xStart);
var yMovement = Math.abs(e.touches[0].screenY - yStart);
if((yMovement * 3) > xMovement) {
e.preventDefault();
}
});
この解決策はこちらで見つかりました。それがあなたのために働くかどうか私に知らせてください。
これが最善の方法ではないことはわかっていますが、うまくいきます。
これが私がしたことです-
#scrollableDiv {
position:fixed;
top:50px;
width:300px;
height:500px;
word-wrap: break-word;
overflow-y: scroll;
}
document.getElementById("scrollableDiv").innerHTML = longText;
document.getElementById("scrollableDiv").scrollTop = 0;