Uniappがスライディングスコアリング効果を実現

Uniappがスライディングスコアリング効果を実現

この記事では、スライディングスコアリングを実装するためのuniappの具体的なコードを参考までに共有します。具体的な内容は次のとおりです。

ユニアプリ開発、スライディング評価、クリック評価

<テンプレート>
 <表示>
  <view class="flex" style="margin:200rpx;">
    <block v-for="(item,index) in scoreArray" :key='index' ><!-- スコアリストを走査します-->
      <!-- タッチ イベントとクリック イベントを同じ方法に設定します。そうしないと、クリックしてもスライドしない場合にイベントがトリガーされません。 -->
      <view class='starLen' @touchmove='changeScore' @tap='changeScore' >
        <!-- 三項演算子を使用して、表示される画像を動的に変更します。score は js 内のスコア、index は scoreArray の添え字です -->
        <!-- src 部分は次のように記述できます: src="{{score>index?'../../images/fullStar.png':'../../images/nullStar.png'}}" 。これにより、fullStarUrl と nullStarUrl を js ファイルから削除できます -->
        <image class='star' mode="aspectFill" :src="score>index?fullStarUrl:nullStarUrl" style="width: 30rpx; height: 30rpx;"/>    
      </ビュー>
    </ブロック>
    <view class='scoreContent'>{{scoreContent}}</view><!-- 現在のスコアを表示 -->
  </ビュー>
 </ビュー>
</テンプレート>

<スクリプト>
 エクスポートデフォルト{
  オンロード() {
  },
  データ(){
   戻る {
        fullStarUrl: 'Full Star Picture', //Full Star PicturenullStarUrl: 'Empty Star Picture', //Empty Star Picturescore: 0, //評価スコアscoreArray: [1, 2, 3, 4, 5], //1~5 の評価レベルに分かれていますscoreText: ['1 つ星', '2 つ星', '3 つ星', '4 つ星', '5 つ星'], //評価リストscoreContent: '' //評価のテキスト表示}
  },
  方法:{
     スコア変更: 関数(e) {
       console.log(e) //コンソールタッチイベント情報 var that = this;
       var num = 0; // 一時的な数値。渡されるスコアを動的に決定します。var touchX = e.touches[0].pageX; // 現在のタッチ ポイントの X 座標を取得します。var starMinX = 110; // ページからの距離が 110 であると仮定した場合の、左側の最初の星の X 座標。左からの距離はどれくらいですか。var starWidth = 15; // 星アイコンの幅。15 と仮定します (wxss ファイル ".star" で設定)
       var starLen = 5; //星間の距離は5と仮定します(wxssファイル「.starLen」で設定)
       var starMaxX = starWidth * 5 + starLen * 4+starMinX; // 一番右の星の右端の X 座標に、5 つの星の幅と 4 つの星の間の距離を加算する必要があります。 if (touchX > starMinX && touchX < starMaxX) { // クリックとタッチの初期位置は、星が配置されているスペース内です。 // Math.ceil() メソッドを使用して、現在のタッチ位置の X 座標と (星 + 星間の距離) の比率の整数を取得し、現在クリックされている星を特定します。 num = Math.ceil((touchX - starMinX) / (starWidth + starLen));
         if (num != that.score) { //現在のスコアが設定した値と等しくない場合は値を割り当てます。touchmoveメソッドはリフレッシュレートが高いため、リソースを節約できます。that.score = num,
             that.scoreContent = that.scoreText[num - 1]
         }
       } else if (touchX < starMinX) { //クリックまたはタッチ位置が最初の星の左側にある場合はデフォルト値を復元し、それ以外の場合は最初の星が常に存在するようになります that.score = 0,
           that.scoreContent = ''
       }
     },
  }
 }
</スクリプト>

<style lang="less" スコープ>
.starLen{
  右マージン: 10rpx;
  表示: インラインブロック;
}

。星{
  幅:30rpx;
  高さ:30rpx;
}

.スコアコンテンツ{
  左マージン: 100rpx;
  表示: インラインブロック;
  色: #fff;
}
</スタイル>

コード内の距離はすべて10px/2に基づいて5rpxに変換されています。(他の単位を使用する場合は、自分で変換してください)
var starMinX = 110、画面の左側から一番左の星までの距離
var starWidth = 15、星の幅
var starLen = 5、これは 2 つの星の間の距離です。
結果の例:

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

以下もご興味があるかもしれません:
  • Uniappは左右にスライドできるナビゲーションバーを実装しています
  • Uniappはスライド可能なタブを実装

<<:  MySQL パラメータ関連の概念とクエリ変更方法

>>:  Ubuntu20.04 VNCのインストールと設定の実装

推薦する

base target="" はフレームを開くためのベースリンクのターゲットを指定します

<base target=_blank> は、基本リンクのターゲット フレームを新しいペ...

MySQL の count 関数の正しい使い方の詳細な説明

1. 説明MySQLでは、テーブル内の行の総数を取得する必要がある場合、通常は次の文を使用します。 ...

MySQL binlog_ignore_dbパラメータの具体的な使用法

序文:前の記事を読んだ後、binlog はデータベースで実行されたすべての DDL および DML ...

クラウドサーバーを購入し、Alibaba Cloud に Pagoda Panel をインストールする手順

アリババクラウドがサーバーを購入クラウドサーバーを購入し、サーバーバージョンとしてcentos 7....

Nginx の Docker インストールの問題とエラー分析

質問: DockerにNginxをインストールするときに次のエラーが発生しました: docker: ...

dns-prefetch とは何ですか? フロントエンドの最適化: DNS の事前解決によりページ速度が向上します

目次背景1. dns-prefetch とは何ですか? 2. dns-prefetch を設定するに...

JavaScript フロー制御 (ループ)

目次1. forループ2. 二重の for ループ3. whileループ4. dowhileループ5...

Pythonの関数知識についての簡単な説明

目次関数パラメータの2つの主要なカテゴリ位置パラメータ可変長パラメータ名前空間要約する関数パラメータ...

MySQL 8.0.18 のインストールと設定方法のグラフィック チュートリアル (Linux)

この記事では、Linux MySQL 8.0.18のインストールと設定のグラフィックチュートリアルを...

MySQL 5.7.17 winx64 のインストールと設定のグラフィックチュートリアル

MySQL のインストールに関する以前のメモを要約して、皆さんと共有しました。ステップ 1: mys...

MySQL が uuid または snowflake id を主キーとして使用することを推奨しない理由の詳細な分析

前書き: MySQL でテーブルを設計する場合、MySQL では UUID や非連続かつ非繰り返しの...

MySQL 5.7.13 ソースコードのコンパイル、インストール、および構成方法のグラフィックチュートリアル

インストール環境: CentOS7 64ビットMINI版公式ソースコードのコンパイルおよびインストー...

LeetCode の SQL 実装 (183. 注文をしたことがない顧客)

[LeetCode] 183.注文しない顧客Web サイトに、Customers テーブルと Or...

JavaScript 上級プログラミング: 変数とスコープ

目次1. 元の値と参照値2. インスタンス3. 範囲1. 元の値と参照値6 つの単純なデータ型の値は...

Json の長所と短所、使用方法の紹介

目次1. JSONとは何か1.1 配列リテラル1.2 オブジェクトリテラル1.3 混合リテラル1.4...