この記事では、WeChatアプレットの左右連動を実現するための具体的なコードを参考までに紹介します。具体的な内容は次のとおりです。 最近、WeChatアプレットを使用して、学校のコースシステム分析プロジェクトを構築しました。注文プロジェクトを選択した後、ホームページを実装する際に、マクドナルドの注文と同じように、左側にカテゴリ、右側に料理を表示したいと考えました。左側のカテゴリをクリックすると、右側が対応するカテゴリにスクロールし、右側の料理をスクロールすると、現在左側にスクロールしている料理のカテゴリも強調表示されます。それではまず結果をお見せしましょう! この機能は小さいですが、スクロールビューの原理を理解すれば非常に便利になると思います。 まず、WeChatミニプログラムの公式ドキュメントを確認してください:スクロールビュー ここでは、私自身の理解に基づいて、私が使用しているプロパティを紹介します。
<scroll-view class='aside' scroll-y='true' style='height:{{asideheight}}px' scroll-with-animation="true" scroll-top='{{itemLeftToTop}}' > <view wx:for="{{menus}}" wx:key="id" data-id="{{item.id}}" bindtap='tabMenu' class="{{item.id === currentLeftSelected ? 'menu active' : 'menu'}}"> <ビュー id="{{item.id}}">{{item.name}}</ビュー> </ビュー> <view class="option"> <button id='user_btn' bindtap='getin' >pc</button> <画像 id='user_img' src='../../images/index/user_option.png'></画像> </ビュー> </スクロールビュー> <!--各料理の詳細情報、ボタンをクリックすると各料理の数量を追加できます--> <scroll-view class="item-content" scroll-y='true' scroll-into-view="{{itemScrollId}}" scroll-with-animation='true' style='height:{{asideheight}}px' bindscroll="right" > <view wx:for="{{menus}}" wx:for-index="parentIndex" wx:key="id" id="{{item.id}}" > <view class="item_title">{{item.name}}</view> <view class="{{orderCount.num === 0 ? 'box' : 'box active'}}"> <view class="item" wx:for="{{item.categroy}}" wx:key="categroyid" data-parentIndex='{{parentIndex}}' data-index='{{index}}'> <画像 src="{{item.url}}"></画像> <text class="title">{{item.categroy_name}}</text> <text class="price">¥ {{item.price}} 元</text> <view class="opera"> <text class="btn_price " bindtap='del' data-id="{{item.id}}" data-parentIndex='{{parentIndex}}' data-index='{{index}}'>-</text> <text class="num">{{item.num}}</text> <text class="btn_price" bindtap="add" data-id="{{item.id}}" data-parentIndex='{{parentIndex}}' data-index="{{index}}">+</text> </ビュー> </ビュー> </ビュー> </ビュー> </スクロールビュー> 高さの変数を参照していることがわかります。js での実装は次のとおりです。 wx.getSystemInfo({ 成功: 関数 (res) { var asideheight = res.windowHeight var asideheight1 = 0; that.setData({ アサイドハイト: アサイドハイト、 横幅1:横幅+80 }) }, 失敗: () => { console.log("ディスプレイの高さを取得できません。ネットワーク接続を確認してください") } }); そして関数の始めに左右の小さなグリッドの高さを設定します 定数RIGHT_BAR_HEIGHT = 41; // 右側の各サブクラスの高さ(固定) 定数RIGHT_ITEM_HEIGHT = 122; // 左側の各クラスの高さ(固定) 定数LEFT_ITEM_HEIGHT = 41; 左側の実装は比較的簡単です。currentLeftSelected と itemScrollId の 2 つのデータが設定されます。これら 2 つに、現在クリックされているクラスの ID 値が割り当てられます。前者は、クリックすると左側のクラスが選択された状態を実現し、右側の値は itemScrollId に割り当てられます。次に、この値が前面のスクロール ビューの右半分の scroll-into-view に割り当てられ、左側がクリックされると右側がジャンプするようにします。 タブメニュー: 関数 (e) { this.setData({ 現在の左選択: e.target.id || e.target.dataset.id、 アイテムスクロールID: e.target.id || e.target.dataset.id }); コンソールログ(e); }, 右半分のアイデアは、右側の各皿の高さを上から計算して配列に保存し、スライド時に現在のスライドの高さを取得し、bindscroll でバインドされた関数で比較する必要があることです。左側の currentLeftSelected を、高さの範囲に対応するクラスの ID に設定します。 get_eachItemToTop: 関数 () { var obj = {}; var totop = 0; var menus_ex = {}; var that = this; menus_ex = that.data.menus; コンソールにログ出力します。 for(let i=1;i<menus_ex.length;i++){ totop += (RIGHT_BAR_HEIGHT + menus_ex[i - 1].categroy.length * RIGHT_ITEM_HEIGHT); obj[menus_ex[i] ? menus_ex[i].id : 'last'] = totop; } obj を返します。 }, 右: 関数 (e) { (i = 0 とします; i < this.data.menus.length; i++) { 左 = this.data.eachrightScrollToTop[this.data.menus[i].id] とします。 右 = this.data.eachrightScrollToTop[this.data.menus[i + 1] ? this.data.menus[i + 1].id : 'last'] とします。 e.detail.scrollTop < 右 && e.detail.scrollTop >= 左) の場合 { this.setData({ 現在の左選択: this.data.menus[i].id, アイテムの左から上まで: LEFT_ITEM_HEIGHT * i }) } } }, このようにして、基本的に左右の連動が実現されます。 以上がこの記事の全内容です。皆様の勉強のお役に立てれば幸いです。また、123WORDPRESS.COM を応援していただければ幸いです。 以下もご興味があるかもしれません:
|
>>: MySQLが間違ったインデックスを選択する理由と解決策
MySQL を頻繁に使用する人は、次のような状況に遭遇する可能性があります。 1. フィールド タ...
目次1. ソースパッケージサービスの起動管理2. ソースパッケージサービスのセルフスタート管理3. ...
pymysqlをインストールするpip install pymysql 2|0pymysqlの使用2...
目次1 システムの紹介2 システムショートカット3 一般的なシステムコマンド1 システムの紹介 1....
リンク A のセマンティクス、ライティング スタイル、およびベスト プラクティス。私は JavaEy...
前述のこの記事はとても短いです〜主な目的は、モバイル端末上のクリックと js イベントのメカニズムに...
Docker でシェル コマンドを実行するには、コマンドの前に sh -c を追加する必要があります...
この記事では、モグラ叩きゲームを実装するためのJavaScriptの具体的なコードを参考までに紹介し...
この記事では、参考までにMySQL zipファイルをインストールする具体的な方法を紹介します。具体的...
今夜の夕食後にノートパソコンの電源を入れたところ、問題が発生しました。通常、コンピューターがスリープ...
ステップ: 1. 仮想マシンディレクトリに新しいdocker-compose.ymlファイルを作成し...
<br />原文: http://uicom.net/blog/?p=762 Faceb...
日常業務において、フォームの検証は非常に一般的な設計要件です。ログイン ボックスや登録ボックス、アン...
目次簡単な紹介間隔の設定説明するパラメータ戻り値使用法タイムアウトの設定説明するパラメータ使用法:タ...
目次Dockerを使用してMySQLサービスをデプロイする方法DockerでRedisサービスをデプ...