問題の要約
動作する 2 次元スクロール コードを取得しました。そのようなスクロールは正常に機能しています。スクロールは任意の方向に行うことができます (水平方向のみ、または ti,e で垂直方向のみに制限されるのとは異なります) が、2 つの問題があります -
- 表示領域を超えて上と左に向かってスクロールすると、スクロール可能な領域に戻りません。
- 右と下にスクロールすると元に戻ります。
問題のデモ - http://jsfiddle.net/sandeepan_nits/pAhjU/6/
注 - Webkit ブラウザー (Google chrome および Safari) でのみテストしてください。
私が探しているソリューション
- どちらか、私のコードで何が間違っているかを指摘してください。
- または、同じバージョンの iscroll を使用して、適切に実装された両方向のスクロール (水平 + 垂直) の動作デモを共有してください。私が使用している - バージョン 3.7.1、望ましい、または iscroll バージョン 4 も使用しています。
- または、もちろん、任意のポインタをいただければ幸いです。
問題の説明
ここで動作コードを確認してください - http://jsfiddle.net/sandeepan_nits/pAhjU/6/
ノート -
- Webkit ブラウザーのみでテストします (Google chrome および Safari)。
- jsfiddle の HTML セクション内にすべてを故意に配置しました。これは、物事を完全に分離すると、スクロールが機能せず、正確にどこで機能しなくなるかわからないためです。ご指摘いただければありがたいです。
コード
ここにHTMLがあります -
<div class="header">
<div class='left_link'></div>Demo</div>
<div id="main_content" class="main_content">
<b><div id=scroller1><br/>
<div class='center_data'>Scrollable area</div>
<div class='center_data'>hello world!</div>
<br/>
</div></b>
</div>
注 -無効な html があることはわかっています -<div id=scroller1>
内部にあり、タグ<b></b>
を削除する<b></b>
と水平スクロールが機能しなくなる理由がわかりません -ここを確認してください。
これがjsです-
var myScroll;
var a = 0;
function loaded() {
//setHeight(); // Set the wrapper height. Not strictly needed, see setHeight() function below.
// Please note that the following is the only line needed by iScroll to work. Everything else here is to make this demo fancier.
myScroll = new iScroll('scroller1', {desktopCompatibility:true});
//myScroll2 = new iScroll('scroller2', {desktopCompatibility:true});
}
// Prevent the whole screen to scroll when dragging elements outside of the scroller (ie:header/footer).
// If you want to use iScroll in a portion of the screen and still be able to use the native scrolling, do *not* preventDefault on touchmove.
document.addEventListener('touchmove', function (e) { e.preventDefault(); }, false);
// Load iScroll when DOM content is ready.
document.addEventListener('DOMContentLoaded', loaded, false);
その理由は、スクロール可能な div がデフォルトでスクロール可能な領域の右下隅にレンダリングされるためだと思います。しかし、それらを構成する適切な方法、つまりスクロール可能な領域内のスクロール可能な div をレンダリングする場所を設定する方法についてはわかりません。これまでのところ、水平スクロールと垂直スクロールの両方の方法で動作するデモは見つかりませんでした。
iscrollのドキュメントと多くの動作中のデモを確認しましたが、水平方向と垂直方向の両方でスクロールできるデモは見つかりませんでした。http://cubiq.org/iscrollの「Syntax」セクションの下にある「Accepted options are:」セクションを確認しましたが、これらのパラメーターはどれも私が探しているものではないようです。
他のもの
また、もう1つ、特定のスクロールデモを調べている間、クロムブラウザでdom要素で覆われた領域を表示できません。領域を表示するとは、DOM インスペクター パネルの上にマウスを移動すると、ブラウザー ビューで DOM が強調表示されることを意味します。表示されないときは?http://jsfiddle.net/sandeepan_nits/pAhjU/12/のように、検証済みの HTML で確認しました。
誰かがタグを作成する
iscroll
かiscroll3
、質問にタグを付け直すことができるようにしてください.
更新
スクロール領域が適切に表示画面内にある状態で通常の2次元スクロールを行いたいだけで、画面外に出ると跳ね返るはずです。現在、画面の外で上下左右にスクロールしても(私のjsfiddleでは)跳ね返ることはありません。右と下にスクロールすると跳ね返ります。スクロール領域を画面内にうまく配置したいだけです。バウンスバックは自動的に修正されると思います。