WeChatアプレットはスクロールビューを使用して左右のリンクを実現します。参考までに、具体的な内容は次のとおりです。 左側のボタンをクリックすると、右側が指定した位置にジャンプします
右にスクロールすると、左のメニューが対応する位置にジャンプします
実装効果図: メインコードは次のとおりです。 インデックス.wxml <ビュークラス="コンテナ"> <view class="category-left"> <スクロールビュー scroll-y="true" スタイル="height:100%"> <block wx:for="{{category}}" wx:key="id"> <view class="catgegory-item {{activeId === item.id?'active-item':''}}" data-id="{{item.id}}" bindtap="clickItem">{{item.name}}</view> </ブロック> </スクロールビュー> </ビュー> <view class="category-right"> <scroll-view scroll-y="true" style="height:100%" scroll-into-view="{{toView}}" scroll-with-animation="ture" bindscroll="scroll"> <view class="categoty-detail"> <block wx:for="{{content}}" wx:key="id"> <view class="catefory-main"> <view class="category-title" id="{{item.id}}">{{item.title}}</view> <view class="category-content"> <view class="content-item" wx:for="{{item.options}}" wx:for-item="i" wx:key="id"> <画像 src="{{i.src}}"></画像> <テキスト>{{i.テキスト}}</テキスト> </ビュー> </ビュー> </ビュー> </ブロック> </ビュー> </スクロールビュー> </ビュー> </ビュー> インデックス //index.js //アプリケーションインスタンスを取得する const app = getApp() ページ({ データ: { 表示: 'a1', アクティブID: 'a1', カテゴリ: {名前: '新製品'、ID: 'a1'}, { 名前: 'クラウドファンディング', id: 'a2' }, { 名前: 'Xiaomi 携帯電話'、ID: 'a3' }, { 名前: 'redmi 電話'、 ID: 'a4' }, { 名前: 'ブラックシャークゲーム'、 ID: 'a5' }, { name: "携帯電話アクセサリー", id: 'a6' }, { 名前: 'TV', ID: 'a7'}, { 名前: 'コンピュータ'、 ID: 'a8' }, ]、 コンテンツ: [ { タイトル: '- 新製品 -', オプション: [ { src: '../../image/redmi.png',id: '001',text: 'redmi8'}, { src: '../../image/redmi.png', id: '002', テキスト: 'redmi8A' }, { src: '../../image/redmi.png', id: '003', テキスト: 'Xiaomi 9pro 5G'}, { src: '../../image/redmi.png', id: '004', テキスト: 'redmi8'}, { src: '../../image/redmi.png', id: '005', テキスト: 'redmi8' } ]、 id: 'a1' }, { タイトル: 「- クラウドファンディング -」 オプション: [ { src: '../../image/zhongchou.png', id: '006', テキスト: 'redmi8' }, { src: '../../image/zhongchou.png', id: '007' ,text: 'redmi8'}, { src: '../../image/zhongchou.png', id: '008', テキスト: 'redmi8' }, { src: '../../image/zhongchou.png', id: '009',text: 'redmi8' } ]、 id: 'a2' }, { タイトル: '- Xiaomi 携帯電話 -', オプション: [ { src: '../../image/xiaomi.png', id: '006', テキスト: 'redmi8' }, { src: '../../image/xiaomi.png', id: '007', テキスト: 'redmi8' }, { src: '../../image/xiaomi.png', id: '008', テキスト: 'redmi8' }, { src: '../../image/xiaomi.png', id: '009', テキスト: 'redmi8' } ]、 id: 'a3' }, { タイトル: '- redmi 携帯電話 -', オプション: [ { src: '../../image/hongmi.png', id: '006', テキスト: 'redmi8' }, { src: '../../image/hongmi.png', id: '007', テキスト: 'redmi8' }, { src: '../../image/hongmi.png', id: '008', テキスト: 'redmi8' }, { src: '../../image/hongmi.png', id: '009', テキスト: 'redmi8' } ]、 id: 'a4' } ]、 }, //イベント処理関数 onLoad: function () { this.setData({ 表示: 'a1', 高さArr: [] }) クエリを wx.createSelectorQuery() に設定します。 クエリ.selectAll('.catefory-main').boundingClientRect((rect)=> { rect.forEach(ele => { this.calculateHeight(ele.height); }) }).exec(); }, クリックアイテム(e) { this.setData({ アクティブID: e.currentTarget.dataset.id、 toView: e.currentTarget.dataset.id }) }, スクロール(e) { scrollHeight を e.detail.scrollTop とします。 index = this.calculateIndex(this.data.heightArr,scrollHeight); とします。 this.setData({ アクティブID: 'a'+インデックス }) }, // スクロール間隔を計算する calculateHeight(height) { if(!this.data.heightArr.length) { this.data.heightArr.push(高さ) }それ以外 { this.data.heightArr.forEach(ele => { 高さ += 要素 }) this.data.heightArr.push(高さ); } }, // 左側で選択された下付き文字を計算する calculateIndex(arr, scrollHeight) { インデックスを '' とします。 for(let i =0;i<arr.length;i++) { スクロール高さ >= 0 && スクロール高さ < arr[0]){ インデックス = 0; }それ以外の場合(スクロール高さ >= arr[i-1] && スクロール高さ < arr[i]){ インデックス = i; } } インデックス+1を返します。 } }) インデックス.wxss /**index.wxss**/ 。容器 { パディング: 0; 幅:100%; 高さ:100vh; ディスプレイ: フレックス; flex-direction: 行; align-items:flex-start; } .category-left { 高さ: 100%; 幅: 22%; パディング: 0 20rpx; ボックスのサイズ: 境界線ボックス; 右境界線: 1px 実線 #efefef; } .カテゴリ項目{ パディング: 20rpx 0; フォントサイズ: 30rpx; テキスト配置: 中央; } .アクティブアイテム{ 色: オレンジ; } .カテゴリ右{ フレックス:1; 高さ: 100%; } .カテゴリコンテンツ{ 表示: グリッド; グリッドテンプレート列: repeat(auto-fill, 190rpx); } .カテゴリータイトル{ テキスト配置: 中央; } .コンテンツアイテム{ ディスプレイ: フレックス; flex-direction: 列; パディング: 20rpx; テキスト配置: 中央; フォントサイズ: 30rpx; } .コンテンツアイテム画像{ 幅: 120rpx; 高さ: 120rpx; } 以上がこの記事の全内容です。皆様の勉強のお役に立てれば幸いです。また、123WORDPRESS.COM を応援していただければ幸いです。 以下もご興味があるかもしれません:
|
<<: Windows Apache 環境で SSL 証明書を展開して、Web サイトを https 対応にする方法
>>: MySQLのファジークエリのような遅い速度を解決する方法
1. MySQLをダウンロードするMySQL 公式 Web サイトにログインし、MSI インストー...
この記事では、ショッピングカートを実装するためのVue.jsフレームワークの具体的なコードを参考まで...
1.MySQLレプリケーションの概念これは、プライマリ データベースの DDL および DML 操作...
多くのプログラマーは MySQL に精通していると思います。多くの人が count の使い方と、最適...
MySQL の多くのテーブルには、NULL が列のデフォルト属性であるため、アプリケーションが NU...
これまでの仕事では、開発サーバーは一般的にTomcatでした。データソースは、多くの場合、appli...
1. ショートカットCtrl + Shift + Pを使用してコンソールを呼び出します 2、「スニペ...
目次シナリオ分析発達要約するシナリオ分析システムでは、1 つのモジュールに 3 つのサブモジュールが...
ワーカープロセスは、起動されると、まず自身の動作に必要な環境を初期化し、次に実行する必要があるイベン...
<br /> 英語原文: http://desktoppub.about.com/od/...
MySQL 8.0 サービスを開始できません最近、 cmdで MySQL サービスを起動するときに遭...
今日、IE8 をインストールしました。ダウンロードするために Microsoft の Web サイト...
目次概要実装保護エージェント仮想エージェント画像の遅延読み込みを実現する仮想プロキシ概要プロキシ パ...
HTML入門ハイパーテキスト マークアップ言語: ハイパーテキスト マークアップ言語ハイパーテキスト...
目次1. 開発前の準備2. 新しいプロジェクトIdea は Java 開発のための強力なツールであり...