ホームページ  >  記事  >  ウェブフロントエンド  >  iScrollとは何ですか? iScrollの活用例を詳しく解説

iScrollとは何ですか? iScrollの活用例を詳しく解説

伊谢尔伦
伊谢尔伦オリジナル
2017-07-19 15:38:374220ブラウズ

iScroll が作成されました:

iScroll は、iPhone や Android モバイル デバイスなどのモバイル Webkit ブラウザーのために完全に作成されました。
iScroll の使用方法:

iScroll の原理は、外側の層にオーバーフロー非表示 (overflow:hidden;) DOM があり、この領域の最初の DOM 構造がインスタンス化され、ラップされたコンテンツをしたがって、iScroll を使用する場合は、スクロール要素をできるだけシンプルにし、DOM の数を減らし、ネストを減らす必要があります。DOM 構造が複雑になればなるほど、iScroll の実行が難しくなるからです。これにより、一部のノードが異常に表示される可能性があります。 したがって、推奨される DOM 構造は次のとおりです:


<p id="wrapper">//overflow:hidden;
 <ul>
 //只有第一个DOM结构(ul)被实例化,这个DOM可以纵向或者横向的滚动,
 //多出的内容会被wrapper的样式hidden。
  <li>1</li>
  <li>2</li>
  <li>3</li>
 </ul>
</p>

注: 繰り返しになりますが、ラッパー内の最初の子要素 ​​(ul) のみがインスタンス化およびスクロールでき、それは外側の DOM (ラッパー) と組み合わせる必要があります。スクロールを実装します。
ラッパーに複数の UL がある場合はどうなりますか?非常に簡単な文を思い出してください。ラッパー内の最初の子要素 ​​(ul) のみがインスタンス化され、スクロールされます。 注: 最初の DOM 構造 (first) の ID は、ここでは記述する必要はありません。ここでは、誰もが識別しやすいように ID を書きましたが、一番外側の ID (ラッパー) は、JS をインスタンス化するときに必要になるため、記述する必要があります。この ID:


<p id="wrapper">//overflow:hidden;
 <p id="first">
  //只有第一个DOM结构(ul)被实例化,这个DOM可以纵向或者横向的滚动,
  //多出的内容会被wrapper的样式hidden
  <ul>
   <li>1</li>
   <li>2</li>
   <li>3</li>
  </ul>
  <ul>
   <li>4</li>
   <li>5</li>
   <li>6</li>
  </ul>
 </p>
</p>

iScroll はどのようにインスタンス化すべきですか

:

インスタンス化について話したので、いつインスタンス化すればよいでしょうか?インスタンス化の方法は色々あると言われていますが、私は使ったことはありませんので一つだけ言います

(1) 現在のページの iscroll.js と uw3c.js を HTML (uw3c.html) の下部に読み込みます。 ) page (body の後、html の前) 、これにより、HTML DOM 構造を確実にロードできるようになります。 (2) JS がページ DOM 構造とデータを挿入する前に iScroll をインスタンス化します。つまり、JS は後で DOM またはデータを挿入するために使用される可能性があるため、これにより、データを挿入する前に iScroll がインスタンス化されることが保証されます。溶けた。

HTML://HTML 構造



var myScroll = new iScroll("wrapper");

JS://JS ファイルの内容


<html >
 <body>
  ...code...
 </body>
  //插入iscroll.js文件
 <script type="text/javascript" src="js/iscroll.js" > </script >
 //插入本页面JS文件
 <script type="text/javascript" src="js/uw3c.js" > </script >
</html>

iScroll のパラメータ:

iScroll をインスタンス化するとき、2 つのパラメータを渡すことができます。最初のパラメータはインスタンス化された外部 DOM の ID、2 番目のパラメーターは iScroll 実行メソッドのオブジェクトです:

var myscroll;
 function iscroll(data){
  //实例化iScroll
  myscroll=new iScroll("wrapper");
  pageData(data);
 }
 function pageData(obj){
  $("body").html(obj);
  myscroll.refresh();//当DOM结构发生变化的时候,需要刷新iScroll
 }
 iscroll("<p>pagedata</p>");

2 番目のパラメーターの内容は次のとおりです: このパラメーターは iScroll の効果を制御します:


var myscroll=new iScroll("wrapper",{hScrollbar:false});
或者
var opts = {
    vScroll:false,//禁止垂直滚动
    snap:true,//执行传送带效果
    hScrollbar:false//隐藏水平方向上的滚动条
   };
var myscroll = new iScroll("wrapper",opts);

iScroll のメソッド:

もちろん、2 番目のパラメーターには、実行できるメソッドもいくつかあります:
(1)scrollTo(x, y, time,relative) メソッド: 4 つのパラメーターを渡します: X 軸スクロール距離、Y 軸スクロール距離、効果時間、現在位置を基準とするかどうか。たとえば:


hScroll  false 禁止横向滚动 true横向滚动 默认为true
vScroll  false 禁止垂直滚动 true垂直滚动 默认为true
hScrollbar  false隐藏水平方向上的滚动条
vScrollbar  false 隐藏垂直方向上的滚动条
fadeScrollbar false 指定在无渐隐效果时隐藏滚动条
hideScrollbar 在没有用户交互时隐藏滚动条 默认为true
bounce   启用或禁用边界的反弹,默认为true
momentum  启用或禁用惯性,默认为true,此参数在你想要保存资源的时候非常有用
lockDirection false取消拖动方向的锁定,true拖动只能在一个方向上(up/down 或者left/right)

(2)refresh() メソッド: DOM 構造が変更された後、iScroll を更新する必要があります。更新しないと、スクロール プラグインが不正確にインスタンス化されます:


//在200毫秒的时间内,Y轴向上滚动100像素;
uw3c.scrollTo(0, -100, 200)
//在200毫秒的时间内,相对于当前位置,X轴向左滚动100像素;
uw3c.scrollTo(-100, 0, 200, true)

( 3)onPosChange 、位置の変化を返すことができるメソッドはありますか?使用している iScroll に onPosChange メソッドがあるかどうかを確認できます。


uw3c.refresh();//刷新iScroll

(4) onScrollEnd: スクロール終了時にイベントをトリガーしたい場合は、このメソッドを使用します。


onPosChange:function(x,y){
 if(y < -200){
  //如果Y周向上滚动200像素,$("#uw3c")就显示,否则就隐藏。
  $("#uw3c").show();
 }else{
  $("#uw3c").hide();
 }
}

(5) onRefresh: DOM 構造が変更された後、iScroll を更新する必要があります。そうしないと、スクロール プラグインが不正確にインスタンス化されます。onRefresh は、iScroll が更新された後に実行されるメソッドです。 。
(6)onBeforeScrollStart: スクロールを開始する前の時間コールバック。デフォルトでは、ブラウザーのデフォルト動作が防止されます。

(7) onScrollStart: スクロールを開始するコールバック。

(8)onBeforeScrollMove: コンテンツが移動する前のコールバック。
(9) onScrollMove: コンテンツ移動のコールバック。

(10)onBeforeScrollEnd: スクロールの終了前にコールバックします。

(11) onTouchEnd: 手が画面から離れた後のコールバック。
(12) onDestroy: インスタンスを破棄するコールバック。

以上がiScrollとは何ですか? iScrollの活用例を詳しく解説の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。