効果画像: 1. はじめに独自のアプレットでこのような機能を実装する必要がある 1. 核となる考え方 スワイパーとスクロールビューは、currentTab navScrollLeft の 2 つの変数を共有します。ナビゲーションをクリックするか、スワイパーをスライドすると、2 つの変数の値が現在のインデックスに設定されます。 2. 実装タブナビゲーションバーは<scroll-view>タグを使用し、コンテンツは<swiper>を使用します。 1.wxml実装 <ビュークラス="コンテナ"> <!-- タブ ナビゲーション バー --> <!-- scroll-left 属性はスクロール バーの位置を制御できます --> <!-- scroll-with-animation スクロールはアニメーション遷移を追加します --> <!-- スクロールx="true" navScrollLeft: 初期値 0 navData: タブテキスト 配列の現在の要素の変数名を指定するには、wx:for-item を使用します。 配列の現在のインデックスの変数名を指定するには、wx:for-index を使用します。 --> <!--タブ --> <スクロールビュー scroll-x="true" class="nav" scroll-left="{{navScrollLeft}}" scroll-with-animation="{{true}}"> <block wx:for="{{navData}}" wx:for-index="idx" wx:for-item="navItem" wx:key="idx"> <!-- 選択されているかどうかを判断し、選択されている場合はスタイルを設定します--> <!-- スイッチナビゲーション --> <view class="nav-item {{currentTab == idx ?'active':''}}" data-current="{{idx}}" bindtap="switchNav"> {{navItem.text}} 表示> </ブロック> </スクロールビュー> <!-- ページコンテンツ --> <!--duration="300": スライドアニメーションの持続時間 --> <!-- スイッチタブ --> <スワイパー class="tab-box" current="{{currentTab}}" 期間="300" bindchange="switchTab"> <スワイパーアイテム wx:for="{{[0,1,2,3,4,5,6]}}" wx:for-item="タブアイテム" wx:for-index="idx" wx:key="idx" クラス="タブコンテンツ"> {{タブアイテム}} </スワイパーアイテム> </スワイパー> </ビュー> 2.js実装 //index.js //アプリケーションインスタンスを取得する const app = getApp() ページ({ データ: { ナビデータ:[ { テキスト: 「ニュース」 }, { テキスト: 「告白」 }, { テキスト: 「テイクアウト」 }, { テキスト: 「家庭教師になる」 }, { テキスト: 「家庭教師を探す」 }, { テキスト: 「家を借りる」 }, { テキスト: 「自動車学校」 } ]、 現在のタブ: 0, navScrollLeft: 0 }, //イベント処理関数 onLoad: function () { }, switchNav(イベント){ // 現在のタブのIDを取得します var cur = event.currentTarget.dataset.current; //各タブオプションは幅の1/5を占めます var singleNavWidth = this.data.windowWidth / 5; //タブオプションを中央に配置する this.setData({ navScrollLeft: (現在 - 2) * シングルナビゲーション幅 }) // IDがクリックされたタブIDと一致しているかどうかを確認します if (this.data.currentTab == cur) { false を返します。 } それ以外 { this.setData({ 現在のタブ: cur }) } }, switchTab(イベント){ var cur = イベントの詳細.current; var singleNavWidth = this.data.windowWidth / 5; this.setData({ 現在のタブ: cur, navScrollLeft: (現在 - 2) * シングルナビゲーション幅 }); } }) 3.wxss実装 /**index.wxss**/ ページ { 幅: 100%; 高さ: 100%; } 。容器 { 幅: 100%; 高さ: 100%; } .nav { /* タブナビゲーションの幅と高さを設定する*/ 高さ: 80rpx; 幅: 100%; /* 2つの枠線付きボックスを並べて配置する必要がある場合、 これは、box-sizing を "border-box" に設定することで実行できます。 */ ボックスのサイズ: 境界線ボックス; オーバーフロー: 非表示; /* 中心 */ 行の高さ: 80rpx; 背景: #f7f7f7; フォントサイズ: 16px; /* 段落内のテキストが折り返されないことを指定します: */ 空白: ラップなし; 位置: 固定; 上: 0; 左: 0; zインデックス: 99; } .nav-item { 幅: 20%; 表示: インラインブロック; テキスト配置: 中央; } .nav-item.active { 色: 緑; } .タブボックス{ 背景: rgb(31, 201, 96); /* これをナビゲーションの高さに設定します*/ パディングトップ: 80rpx; 高さ: 100%; ボックスのサイズ: 境界線ボックス; } .タブコンテンツ{ /* div 要素内のコンテンツの左端/右端を切り取ります - 要素のコンテンツ領域からオーバーフローする場合: */ overflow-y: スクロール; } 3. 参考文献と要約この記事は https://www.jb51.net/article/169290.htm を参照しています。 解決プロセス 4. 最適化0. レンダリング 1. 各タブの長さは適応的です 2. 前のタブをクリックすると 現在 1 にいるときに 3 をクリックすると、パスは 1-2-3 になります。実機テストの後、エクスペリエンスに影響を与えることなく 3 に直接ジャンプします。 // ****************************** ナビゲーション バーを選択すると、ナビゲーション バーの ID と位置が取得されます ******************************************** タブ選択(e) { console.log("結果:", e); //ニュースデータベースを操作する var cur = e.currentTarget.dataset.id; //タブオプションを中央に配置する this.setData({ // 各タブのID TabCur: e.currentTarget.dataset.id、 //適応スクロール左: (e.currentTarget.dataset.id) * 60, }) // IDがクリックされたタブIDと一致しているかどうかを確認します if (this.data.currentTab == cur) { false を返します。 } それ以外 { this.setData({ 現在のタブ: cur }) } console.log(e.currentTarget.dataset.id); コンソールにログ出力します。 console.log("水平スクロールバーの位置", this.data.scrollLeft); }, スイッチタブ(e) { コンソールログ(e); var cur = e.detail.current; this.setData({ TabCur: cur、 スクロール左: cur * 60, }); } これで、WeChatミニプログラムタブスライド切り替え機能の実装コードに関するこの記事は終了です。より関連性の高いミニプログラムタブスライド切り替えコンテンツについては、123WORDPRESS.COMで以前の記事を検索するか、以下の関連記事を引き続き閲覧してください。今後とも123WORDPRESS.COMを応援してください。 以下もご興味があるかもしれません:
|
<<: mysql init_connect に関するいくつかの重要なポイントの要約
>>: あなたが知らない Linux KDE アプリケーション 11 選
Dockerのインストール カール -fsSL https://get.docker.com -o...
1. はじめに先ほど、ウェブページの急速な発展について紹介しました。今回は、より深い内容についてお...
1. 要約:一般的に、次のカテゴリに分類できます。 Docker 環境情報 — docker [i...
これは主に CSS スタイルのコントロールと META タグです。コードをコピーコードは次のとおりで...
1. Busyboxのソースコードをオンラインでダウンロードしてください。コンパイル方法については、...
nginxをインストールするnginx-fullをインストールする必要があることに注意してください。...
この記事では、Nodejs 開発プロセスで遭遇する配列の特性によって発生する問題と解決策、および配列...
この記事では、参考のために、WeChatアプレットのチャットルームを実装するための具体的なコードを例...
序文Nginx は、イベント駆動型の非同期非ブロッキング処理フレームワークを使用する軽量 HTTP ...
1. csvファイルをインポートする次のコマンドを使用します。 1.mysql> infile...
ストアドプロシージャとは簡単に言えば、これは強力で、JAVA 言語のメソッドに似た比較的複雑な論理関...
目次導入js のイテレータはどのように見えるか反復プロトコル反復可能なプロトコルイテレータプロトコル...
目次序文アイデアの起動速度Tomcat ログが文字化けしている序文Idea を再インストールしたので...
1. Nginxの同時実行性を最適化する [root@proxy ~]# ab -n 2000 -c...
この記事の例では、両端キューを実装するためのJavaScriptの具体的なコードを参考までに共有して...