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コンテナの内容を変更する方法

推薦する

MySql 学習 3 日目: データ テーブル間の接続とクエリの詳細

主キー:キーワード: 主キー機能: null にすることはできず、一意である必要があります。主キーの...

iframe ページパラメータの文字化けの問題について議論

非常に珍しいパラメータ文字化けの問題に遭遇しました。まずページを見てみましょう写真に示すように、月次...

CSS と HTML とフロントエンド テクノロジーのレイヤー図

フロントエンドテクノロジー層 (写真は少し極端ですが、参考までに) Javascript と DOM...

Vue3 のリアクティブ関数 toRef 関数 ref 関数の紹介

目次リアクティブ機能使用法: toRef 関数 (理解するだけ)使用法: ref関数レスポンシブデー...

Centos7 システムでの python2 と python3 の共存

最初のステップは、Python のバージョン番号とインストール パスを確認することです。 上記のビュ...

HTMLは読み取り専用のテキストボックスを実装しており、コンテンツを変更することはできません。

さっそく、コードを直接投稿します。具体的なコードは次のとおりです。 <!--方法 1: onf...

MySQL 5.7.18のインストール方法とMySQLサービスの起動手順の詳細な説明

MySQL は非常に強力なリレーショナル データベースです。しかし、初心者の中には、インストールや設...

Nginx/Httpd ロードバランシング Tomcat 設定チュートリアル

前回のブログでは、Nginx と httpd を使用して、逆生成用のバックエンド Tomcat サー...

Linux は、Deepin がルートユーザーとして Google Chrome ブラウザを起動できない問題を解決します

Deepin がルートユーザーとして Google Chrome ブラウザを起動できない問題を解決す...

MySQL のインストール方法と設定に関するいくつかの問題の概要

1. MySQL rpm パッケージのインストール # インストールソースをダウンロードします [r...

MySQL InnoDB row_id 境界オーバーフロー検証方法の手順

背景クラスメートと row_id の境界問題について話し合ったので、ここで詳しく説明します。 Inn...

Tomcat セキュリティ仕様 (Tomcat セキュリティ強化と仕様)

tomcat はオープンソースの Web サーバーです。Tomcat ベースの Web は実行効率...

Apache Webサーバーのインストールと設定方法

信頼性が高く、人気があり、簡単に構成できる Web サーバーである Apache で独自の Web ...

ブラウザでビデオプレーヤーを実装するための基本的な考え方とコード

目次序文ブラウザにおけるオーディオとビデオに関する知識のまとめビデオエンコーディング包装形態オーディ...

MySQL 8.0 の新機能の落とし穴と解決策についての簡単な説明 (要約)

1. ユーザーを作成して承認するMySQL 8.0 では、ユーザーの作成と認証が以前とは異なります...