Vue uniapp はセグメンター効果を実現します

Vue uniapp はセグメンター効果を実現します

この記事では、セグメンター効果を実現するためのvue uniappの具体的なコードを参考までに共有します。具体的な内容は次のとおりです。

これは、vueでスタイルを動的に変更する効果を記録するためだけのものです。

まずは効果を見せましょう

テンプレート

<view class="countTime">
 <text class="title">割引と食事時間</text>
 <view class="wrap">
  <view class="box" v-for="(item,index) in discountList" :key="index" @click="toggleItem(index)">
   <view class="selBox" :style="[itemStyle(index)]">
    <view class="countBox">
     <text class="count">{{item.count}}</text>
     <text>折りたたむ</text>
       </ビュー>
    <text class="time">{{item.time}}</text>
   </ビュー> 
   <text class="countPrice" :style="[priceStyle(index)]">割引後、1人あたりの平均価格は100円です</text>
  </ビュー>
 </ビュー>
</ビュー>

スクリプト部分

この部分の鍵となるのは、計算されたコードです

エクスポートデフォルト{
  データ() {
   戻る {
    themColor:this.Enum.Them.base、
    割引リスト:[{
     「カウント」:6.9,
     "時間":"12:00~13:00"
    },{
     「カウント」:6.7,
     "時間":"14:00~16:00"
    },{
     "カウント":6.5,
     "時間":"20:00~22:00"
    }],
    現在のインデックス:0
   }
  },
  計算:{
   アイテムスタイル(){
    インデックスを返す => {
     スタイルを {} にします
     if(インデックス === this.currentIndex){
      style.backgroundColor = this.themColor;
      style.border = `1px solid ${this.themColor}`;
      スタイルの色 = '#fff';
     }
     //2番目が選択されると、最初の右の境界線と3番目の左の境界線はnoneに設定されます
     if(this.currentIndex === 1){
      if(インデックス === this.currentIndex - 1){
       style.borderRight = 'なし!重要'
      }
      if(インデックス === this.currentIndex + 1){
       style.borderLeft = 'なし!重要'
      }
     }
     戻りスタイル
    }
   },
   価格スタイル(){
    インデックスを返す => {
     スタイルを {} にします
     if(インデックス === this.currentIndex){
      style.color = this.themColor
     }
     戻りスタイル
    }
   }
  },
  メソッド: {
   トグルアイテム(idx){
    this.currentIndex = idx
   }
  }
 }

CSS スタイル

ここで使用する SCSS についてはここでは詳しく説明しません。

.countTime{
  ディスプレイ: フレックス;
  flex-direction: 列;
  。タイトル{
   フォントサイズ: $uni-font-size-bl;
   マージン: 20rpx 0;
  }
  。包む{
   ディスプレイ: フレックス;
   。箱{
    @include flex(列、中心、中心);
    幅: 33%;
    &:n番目の子(2){
     & > .selBox{
      左境界線: なし;
      右境界線: なし;
     }
    }
    .selBox{
     @include flex(列、中心、中心);
     幅: 100%;
     高さ: 150rpx;
     境界線: 1px 実線 $uni-border-color;
     .countBox{
      フォントサイズ: $uni-font-size-lg;
      フォントの太さ: 太字;
      下部マージン: 10rpx;
      。カウント{
       フォントサイズ: $uni-font-size-bl;
      }
     }
     。時間{
      フォントサイズ: $uni-font-size-l;
     }
    }
    .count価格{
     上マージン: 10rpx;
     フォントサイズ: $uni-font-size-l;
    }
   }
  }
 }

以上がこの記事の全内容です。皆様の勉強のお役に立てれば幸いです。また、123WORDPRESS.COM を応援していただければ幸いです。

以下もご興味があるかもしれません:
  • uniapp エントリーレベル nvue クライミングピット記録の分析
  • vue+uniappライブ放送プロジェクトに基づいて、uni-appはDouyin / Momoライブ放送ルーム機能を模倣します
  • uniappとvueの違いの詳細な説明

<<:  MySql8 WITH RECURSIVE 再帰クエリ親子コレクションメソッド

>>:  既存のDockerコンテナの内容を変更する方法

推薦する

デザイン理論: コンテンツプレゼンテーションのための 10 のヒント

<br /> テキスト、記号、リンクの3つの側面に焦点を当て、主に中国語で、個人的な執筆...

Dockerfile ビルド中に発生する「/bin/sh: pip: コマンドが見つかりません」という問題の解決方法

記述した Dockerfile の内容は次のとおりです。 Python:3.6.8 から pip i...

Vue2.x における双方向バインディングの原理と実装

目次1. 実施プロセス2. オブザーバーを表示する3. ウォッチャーを実装する4. コンパイルを実装...

MYSQL での Truncate の使用法の詳細な説明

この記事のガイド: テーブル内のデータを削除するには、削除と切り捨ての 2 つの方法があります。TR...

jQueryはクッキーを操作する

コードをコピーコードは次のとおりです。 jQuery.cookie = 関数(名前、値、オプション)...

Springboot+Vue-Cropperでアバターの切り取りとアップロードの効果を実現

アバターをアップロードするにはVue-Cropperコンポーネントを使用します。参考までに具体的な内...

Vue デフォルトスロットの理解とサンプルコード

目次スロットとは何かデフォルトスロットの理解コードスニペット要約するスロットとは何かスロットは、親コ...

Vue命令の動作原理と実装方法

Vue の紹介現在のビッグフロントエンドの時代は、混乱と衝突の時代です。世界は多くの派閥に分かれてお...

Vue+Websocketはチャット機能を実装するだけです

この記事では、チャット機能を簡単に実装するためのVue+Websocketの具体的なコードを参考まで...

Apache SkyWalking アラーム設定ガイドの詳細な説明

アパッチ スカイウォーキングApache SkyWalking は、マイクロサービス、クラウド ネイ...

負のz-indexを持つ要素がクリックできない問題の解決策

最近、ポップアップ広告に取り組んでいました。デフォルト ページには z-index が設定されていな...

MySQL マルチテーブル共同クエリ操作例の分析

この記事では、MySQL のマルチテーブル共同クエリ操作について説明します。ご参考までに、詳細は以下...

JS が WeChat の「クソ爆弾」機能を実装

みなさんこんにちは、Qiufengです。最近、WeChatは新しい機能をリリースしました(WeCha...

30 種類の無料の高品質英語リボンフォント

30 種類の高品質な英語リボン フォントを無料でダウンロードできます。デザイナーは常に、25 種類の...