指定された場所にスクロール上の小さなマイクロチャネルプログラムをクリック

 

当社は、マイクロチャネル・コンタクト・ナビゲーションの効果に似たプロジェクトを行い、適切な場所に右の手紙のページスクロールをクリックします。

 

アプレットなしDOMマイクロチャネルの概念は、アンカーを使用することはできませんので、直接文字に対応するページオフセット位置を取得することはできません。この場合、唯一のノード情報を取得するには、オブジェクトのインスタンスのAPIを作成する小さなプログラムを使用します。

 

クエリ= wx.createSelectorQueryをしましょう()。この); 
。query.selectViewport()scrollOffset()
query.select( "#Nav" ).boundingClientRect(); 
query.select( "#FilterNav" ).boundingClientRect(); 
query.select( "#" +((文字== '#') '他'? レター))boundingClientRect();。
query.exec(関数(RES){ 
    せscrollTopスプライト = 0 ;
     もし(RES [3 ]){ 
      scrollTopスプライト = RES [0] .scrollTop + RES [3 ] .top 
    } { 
      scrollTopスプライト = RES [0 ] .scrollTop; 
    }
    wx.pageScrollTo({ 
        scrollTopスプライト:scrollTopスプライト - RES [1] .height - RES [2 ] .height、
        持続時間: 300 
    }); 
});

コードの意味を説明します。

1.は、ノードオブジェクトを作成しますwx.createSelectorQuery()返回一个对象实例;

2.表示エリアを選択します。

3.コール選択方法は、ノードのID値を渡し、それが同じノード・オブジェクトに複数回呼び出され、最後にスクロール領域上記ページ画像の上からの結果の配列を(返しすることができる2つのナビゲーション・バーの高さの距離であるので、クエリ2ナビゲーションバー)。

4.exec()コールバックメソッドは、クエリ内のすべてのノードに関する情報を取得することができ、第一の配列の位置情報ページ(スクロール距離)、取得した最上位ノードの値は、画面の上部の文字位置に対してノードに対応します

結果:画面の高さの相対距離の手紙ノードからページのスクロール位置= +ページスクロール - ヘッドナビゲーションバーの高さ - メニューバーの高さ

wx.pageScrollTo()APIは、ページをスクロールするために呼び出します

コンテナが指定した場所にスクロールにスクロールする場合は、位置を計算少し異なるものになります。

var query = wx.createSelectorQuery().in(this);
query.select("#swiper").boundingClientRect();
query.select("#"+ letter).fields({ rect:true,scrollOffset:true });
query.selectViewport().scrollOffset()
query.exec((res)=>{
  _this.setData({
     letterScrolltop: res[1].top - res[0].top
  })
});    

上图因为是弹出框里的内容,所以列表放在scroll-view滚动容器中,和上面不一样的是滚动位置是:滚动容器距离页面顶部距离 - 锚点距离页面顶部距离,将计算后的偏移量修改至对应scroll-view容器的scroll-top属性就行了。

おすすめ

転載: www.cnblogs.com/neeter/p/11990875.html