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

TypeScript-Problem beim Iterieren über Objekteigenschaften

Inhaltsverzeichnis 1. Problem 2. Lösung 1. Deklar...

JavaScript entfernt unnötige Eigenschaften eines Objekts

Inhaltsverzeichnis Beispiel Methode 1: Löschen Me...

Detaillierte Analyse von MySQL-Datenbanktransaktionen und -Sperren

Inhaltsverzeichnis 1. Grundlegende Konzepte SÄURE...

Detaillierte Erläuterung des MySQL 5.7.9-Shutdown-Syntaxbeispiels

mysql-5.7.9 bietet endlich eine Shutdown-Syntax: ...

Konzept und Anwendungsbeispiele für die MySQL-Indexkardinalität

Dieser Artikel erläutert anhand von Beispielen da...

Beispiel für die JavaScript-Funktion „CollectGarbage“

Sehen wir uns zunächst ein Beispiel für die Speic...

Das Vue-Projekt implementiert eine Fortschrittsbalkenfunktion für den Dateidownload

Im täglichen Geschäftsleben gibt es zwei gängige ...

So öffnen Sie das MySQL-Binlog-Protokoll

Binlog ist eine binäre Protokolldatei, die alle M...

Detaillierte Erklärung der Linux-Systemverzeichnisse sys, tmp, usr, var!

Der Wachstumspfad vom Linux-Neuling zum Linux-Mei...

Vue realisiert den gesamten Prozess der Slider-Drag-Verifizierungsfunktion

Rendern Definieren Sie das Skelett, schreiben Sie...

So lösen Sie das Problem, dass der Docker-Container keinen Vim-Befehl hat

Finden Sie das Problem Als ich heute versuchte, d...