Uniapp realisiert gleitenden Scoring-Effekt

Uniapp realisiert gleitenden Scoring-Effekt

In diesem Artikel wird der spezifische Code von Uniapp zur Implementierung der gleitenden Bewertung zu Ihrer Information bereitgestellt. Der spezifische Inhalt ist wie folgt

Uniapp-Entwicklung, Gleitwertung, Klickwertung

<Vorlage>
 <Ansicht>
  <Ansichtsklasse="flex" Stil="margin:200rpx;">
    <block v-for="(item,index) in scoreArray" :key='index' ><!-- Durchlauf der Punkteliste-->
      <!-- Stellen Sie das Touch-Ereignis und das Klick-Ereignis auf die gleiche Methode ein, sonst wird das Ereignis nicht ausgelöst, wenn Sie klicken, aber nicht schieben. -->
      <Ansichtsklasse='starLen' @touchmove='changeScore' @tap='changeScore' >
        <!-- Verwenden Sie den ternären Operator, um dynamisch zu ändern, welches Bild angezeigt wird. Score ist die Punktzahl in js, Index ist der Index von scoreArray-->
        <!-- Der src-Teil kann wie folgt geschrieben werden: src="{{score>index?'../../images/fullStar.png':'../../images/nullStar.png'}}" , sodass fullStarUrl und nullStarUrl in der js-Datei entfernt werden können -->
        <image class='star' mode="aspectFill" :src="score>index?fullStarUrl:nullStarUrl" style="Breite: 30rpx; Höhe: 30rpx;"/>    
      </Ansicht>
    </block>
    <view class='scoreContent'>{{scoreContent}}</view><!-- Aktuellen Punktestand anzeigen -->
  </Ansicht>
 </Ansicht>
</Vorlage>

<Skript>
 Standard exportieren{
  beim Laden() {
  },
  Daten(){
   zurückkehren {
        fullStarUrl: 'Volles Sternenbild', //Volles SternenbildnullStarUrl: 'Leeres Sternenbild', //Leere Sternenbilderscore: 0, //BewertungsnotenscoreArray: [1, 2, 3, 4, 5], //Aufgeteilt in 1-5 WertungsstufenscoreText: ['1 Stern', '2 Sterne', '3 Sterne', '4 Sterne', '5 Sterne'], //BewertungslistenscoreContent: '' //Textanzeige der Bewertungen}
  },
  Methoden:{
     changeScore: Funktion(e) {
       console.log(e) //Informationen zum Touch-Ereignis der Konsole var that = this;
       var num = 0; //temporäre Zahl, bestimme dynamisch die Punktzahl, die übergeben werden soll var touchX = e.touches[0].pageX; //Hole die X-Koordinate des aktuellen Berührungspunkts var starMinX = 110; //Die X-Koordinate des ersten Sterns auf der linken Seite, angenommen der Abstand von der Seite beträgt 110, wie weit ist er von links var starWidth = 15; //Die Breite des Sternsymbols, angenommen 15 (festgelegt in der wxss-Datei „.star“)
       var starLen = 5; //Der Abstand zwischen den Sternen wird mit 5 angenommen (festgelegt in der wxss-Datei „.starLen“)
       var starMaxX = starWidth * 5 + starLen * 4+starMinX; //Zur äußersten rechten X-Koordinate des äußersten rechten Sterns muss die Breite von 5 Sternen und der Abstand zwischen 4 Sternen addiert werden, if (touchX > starMinX && touchX < starMaxX) { //Die Anfangsposition von Klick und Berührung liegt innerhalb des Bereichs, in dem sich die Sterne befinden //Verwenden Sie die Methode Math.ceil(), um die Ganzzahl des Verhältnisses der X-Koordinate der aktuellen Berührungsposition zu (Stern + Abstand zwischen den Sternen) zu erhalten und zu bestimmen, auf welchen Stern aktuell geklickt wird num = Math.ceil((touchX - starMinX) / (starWidth + starLen));
         if (num != that.score) { //Wenn der aktuelle Score nicht dem gerade festgelegten Wert entspricht, weisen Sie den Wert zu. Da die Touchmove-Methode eine hohe Aktualisierungsrate hat, können hierdurch einige Ressourcen gespart werden that.score = num,
             dieser.ScoreInhalt = dieser.ScoreText[num - 1]
         }
       } else if (touchX < starMinX) { //Wenn die Klick- oder Touchposition links vom ersten Stern ist, stelle den Standardwert wieder her, sonst bleibt der erste Stern immer bestehen that.score = 0,
           that.scoreContent = ''
       }
     },
  }
 }
</Skript>

<style lang="less" scoped>
.starLen{
  Rand rechts: 10rpx;
  Anzeige: Inline-Block;
}

.Stern{
  Breite: 30rpx;
  Höhe: 30rpx;
}

.scoreContent{
  Rand links: 100rpx;
  Anzeige: Inline-Block;
  Farbe: #fff;
}
</Stil>

Die Abstände im Code werden alle auf der Basis von 10px/2 in 5rpx umgerechnet. (Wenn Sie andere Einheiten verwenden, rechnen Sie diese bitte selbst um.)
var starMinX = 110, der Abstand des äußersten linken Sterns von der linken Seite des Bildschirms
var starWidth = 15, die Breite des Sterns
var starLen = 5, das ist der Abstand zwischen zwei Sternen.
Beispielergebnisse:

Das Obige ist der vollständige Inhalt dieses Artikels. Ich hoffe, er wird für jedermanns Studium hilfreich sein. Ich hoffe auch, dass jeder 123WORDPRESS.COM unterstützen wird.

Das könnte Sie auch interessieren:
  • Uniapp implementiert eine Navigationsleiste, die nach links und rechts verschoben werden kann
  • Uniapp implementiert verschiebbare Tabs

<<:  MySQL-Parameterbezogene Konzepte und Abfrageänderungsmethoden

>>:  Ubuntu20.04 VNC-Installation und Konfigurationsimplementierung

Artikel empfehlen

So installieren Sie Grafana und fügen Influxdb-Überwachung unter Linux hinzu

Installieren Sie Grafana. Die offizielle Website ...

Erläuterung des Arbeitsmechanismus von Namenode und SecondaryNameNode in Hadoop

1) Prozess 2) FSImage und Bearbeitungen Nodenode ...

Einführung in semantische XHTML-Tags

Der erste Punkt ist, dass Menschen die Semantik vo...

MySQL Online-Übung zur Deadlock-Analyse

Vorwort Ich glaube, dass jeder beim Erlernen von ...

Apache Spark 2.0-Jobs brauchen lange, bis sie abgeschlossen sind

Phänomen Bei der Verwendung von Apache Spark 2.x ...

Implementierung einer Warenkorbfunktion basierend auf Vuex

In diesem Artikelbeispiel wird der spezifische Co...

Uniapps Erfahrung in der Entwicklung kleiner Programme

1. Erstellen Sie ein neues UI-Projekt Zunächst ei...

Beispiel für die Verwendung von Docker zum Erstellen eines ELK-Protokollsystems

Die folgenden Installationen verwenden alle das V...

Implementierung der Validierung mehrerer Elemente im Formular

Im Projekt werden häufig Formulartests durchgefüh...

Analyse des Funktionsprinzips und des Implementierungsprozesses von Docker Hub

Ähnlich wie der von GitHub bereitgestellte Code-H...

Mysql 5.6.37 Winx64-Installation Dual-Version MySQL-Hinweise

Wenn MySQL Version 5.0 bereits auf dem Computer v...

Vue3 kapselt die Lupeneffektkomponente der Jingdong-Produktdetailseite

In diesem Artikel wird der spezifische Code der V...