Vue implementiert Multi-Grid-Eingabefeld auf mobilem Endgerät

Vue implementiert Multi-Grid-Eingabefeld auf mobilem Endgerät

Vor Kurzem hat das Unternehmen die Anforderung gestellt, den Vorgang der h5-Seite abzuschließen, wie in der folgenden Abbildung dargestellt.

Da im Internet nicht viele Räder verfügbar waren, habe ich selbst eines gebaut. Kommen wir ohne weitere Umschweife direkt zum Code.

<div Klasse="verify-tel">
    <h1>SMS-Verifizierung</h1>
    <h2>SMS-Verifizierung</h2>
    <div>
        <input ref="pwd" :maxlength="ziffern.länge" v-model="msg" style="position: absolute;z-index: -1;opacity: 0"/>
        <ul Klasse="pwd-wrap" @click="Fokus">
            <li v-for="(Element, Schlüssel) in Ziffern" :style="{'margin-right': (100-10*Ziffern.Länge)/(Ziffern.Länge-1)+'%','Breite':'10%'}" >
                <span v-if="msgLength > Schlüssel">{{msg.substring(Schlüssel,Schlüssel+1)}}</span>
            </li>
        </ul>
    </div> 
</div>

CSS-Teil (der Stilinhalt ist zu kompliziert, bitte überspringen Sie die Änderung)

html,Text{
    Breite: 100 %;
    Höhe: 100%;
    Hintergrund: #fbf9fe;
  }
  .verify-tel{
    Hintergrundfarbe: #f9f9f9;   
    Rand: 0 30px;
    >p{
      Farbe: rot;
      Schriftstärke: fett;
      Rand oben: 40px;
      Rand unten: 30px;
    }
    >h1{
      Schriftstärke: 400;
      Rand unten: 0;
    }
    >h2{
      Rand oben: 0;
      Schriftstärke: 400;
      Schriftgröße: 14px;
      Farbe: #858585;
    }
    .Eingabefeld{
      Rand oben: 30px;
      >Eingabe{
        Breite: 10%;
        Rand: keiner;
        Rahmen unten: 1px durchgehend grau;
        Hintergrundfarbe: #f9f9f9;
        Textausrichtung: zentriert;
        Rand rechts: 18 %;
        Schriftgröße: 35px;
        &:Fokus{
          Rahmen unten: 1px durchgehendes tiefes Himmelblau;
        }
        &:letzter-vom-Typ{
          Rand rechts: 0 !wichtig;
        }
      }
    }
    .btn-box{
      >Schaltfläche{
        Höhe: 40px;
        Rand: 1px durchgezogen #4e8cee;
        Farbe: #4e8cee;
        Hintergrundfarbe: weiß;
        Rahmenradius: 4px;
        Breite: 30%;
        &:letzter-vom-Typ{
          schweben: rechts;
          Breite: 65 %;
          Höhe: 40px;
          Farbe: weiß;
          Hintergrundfarbe: RGB (78,140,238);
          Rahmenradius: 4px;
        }
      }
    }
  }
  .pwd-wrap{
    Polsterung links: 0;
    Breite: 100 %;
    Höhe: 44px;
    Polsterung unten: 1px;
    Rand: 0 automatisch;
    Anzeige: Flex;
    Anzeige: -webkit-box;
    Anzeige: -webkit-flex;
    Cursor: Zeiger;
    Rand: keiner;
    Hintergrundfarbe: #f9f9f9;
  }
  .pwd-wrap li{
    Listenstiltyp: keiner;
    Textausrichtung: zentriert;
    Zeilenhöhe: 44px;
    -WebKit-Box-Flex: 1;
    biegen: 1;
    -webkit-flex: 1;
    Rand: keiner;
    Rahmen unten: 1px, durchgehend schwarz;
    Hintergrundfarbe: #f9f9f9;
    &:letzter-vom-Typ{
      Rand rechts: 0 !wichtig;
    }
    >spanne{
      Schriftgröße: 20px;
    }
  }
  .pwd-wrap li:letztes-Kind{
    Rand rechts: 0;
  }
  .pwd-wrap li i{
    Höhe: 10px;
    Breite: 10px;
    Randradius: 50 %;
    Hintergrund: #000;
    Anzeige: Inline-Block;
  }

js Teil des Codes

<Skript>
  Standard exportieren{
    Daten(){
      zurückkehren {
        Seite: 0, // 1 ist für SMS-Verifizierungsziffern: ['','','','','',''], // Eingabefeld-Ziffernsteuerung, wie viele „Eingabefelder“ können hier konfiguriert werden
        Nachricht:'',
        msgLänge:0,
      }
    },
    Methoden:{
      //Schnittstellenfunktion zur Überprüfung der Mobiltelefonnummer verifyTels:async function () {
        versuchen{
        }fangen(e){
          console.log(e)
        }
      },
      //Dem Eingabefeld den Fokus geben focus(){
        dies.$refs.pwd.focus(); 
      },
    },
    vorMount:Funktion () {
        //Da meine geschäftlichen Anforderungen mehrere Seiten erfordern und Ziffern von der übergeordneten Komponente übertragen werden, verstecke ich diese und es bleibt nur eine Codezeile übrig.
        diese.seite=1;
    },
    betrachten:
      msg(aktuellerWert){
        //Überwachen Sie die Eingabelänge. Wenn die Eingabe vollständig ist, rufen Sie automatisch die Überprüfungsschnittstellenfunktion auf, if(curVal.trim().length===this.digits.length){
           dies.verifyTels(); 
        }
        this.msgLength = aktuelleVal.Länge;
      },
      'Seite':{
        handler:Funktion (neuerWert, alterWert) {
          wenn(alterWert==0&&neuerWert==1){
            //Wenn die Seite zum ersten Mal aufgerufen wird, wird der Fokus automatisch erhalten. Dies kann optimiert werden.
            Dies.Timer = setTimeout(()=>{this.$refs.pwd.focus()},500);
          }
        },
        tief:wahr
      }
    },
    vorZerstören:Funktion () {
      : LöscheTimeout(diesen.Timer);
    }
  }
</Skript>

Bei Fragen stehe ich Ihnen gerne zur Korrektur zur Verfügung. Bequem für jedermann zu verwenden

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:
  • Probleme bei der Implementierung des IP-Eingabefelds auf der mobilen Seite des Vue-Projekts
  • Vue2.0 implementiert die Echtzeit-Abruf- und Aktualisierungslistenfunktion des mobilen Eingabefelds

<<:  Tutorial zu HTML-Tabellen-Tags (36): Hintergrundfarbattribut für Tabellenkopfzeilen BGCOLOR

>>:  PHP-bezogene Pfade und Änderungsmethoden in der Ubuntu-Umgebung

Artikel empfehlen

So wählen Sie zwischen MySQL CHAR und VARCHAR

Inhaltsverzeichnis VARCHAR- und CHAR-Typen Abschl...

MySQL Series 7 MySQL-Speicher-Engine

1. MyISAM-Speicher-Engine Mangel: Keine Unterstüt...

Detaillierte Einführung zum MySQL-Cursor

Inhaltsverzeichnis 1. Was ist ein Cursor? 2. So v...

Hintergrundbild-Cache unter IE6

Fehler beim Flackern des CSS-Hintergrundbilds in ...

Lernen Sie schnell die MySQL-Grundlagen

Inhaltsverzeichnis SQL verstehen SELECT verstehen...

Design-Referenz: Erfolgsbeispiel für die Erstellung einer WordPress-Website

Jede dieser 16 Sites ist eine sorgfältige Lektüre ...

Hinweise zum Systemaufruf des Linux-Kernel-Gerätetreibers

/**************************** * Systemaufruf*****...

Detaillierte Erläuterung der Reihenfolge der JS-Objektdurchquerung

Einige von Ihnen haben vielleicht gehört, dass di...

Analyse des Quellcodes des React-Ereignismechanismus

Inhaltsverzeichnis Prinzip Quellcodeanalyse Deleg...

Detaillierte Diskussion der Unterschiede zwischen Schleifen in JavaScript

Inhaltsverzeichnis Vorwort Aufzählbare Eigenschaf...

Centos7.3 So installieren und implementieren Sie Nginx und konfigurieren https

Installationsumgebung 1. gcc-Installation Um ngin...

MySQL kontrolliert die Anzahl der Versuche, falsche Passwörter einzugeben

1. So überwachen Sie MySQL-Deadlocks in Produktio...

Lösung für Ubuntu, das keine Verbindung zum Internet herstellen kann

Problembeschreibung: Ich habe einen Desktop-Compu...

So implementieren Sie den Vue-Mausrad-Scrolling-Umschalt-Routing-Effekt

Eine Root-Routing-Komponente (die Root-Routing-Ko...