Benutzerdefinierter Bulletbox-Effekt von Vue (Bestätigungsfeld, Eingabeaufforderungsfeld)

Benutzerdefinierter Bulletbox-Effekt von Vue (Bestätigungsfeld, Eingabeaufforderungsfeld)

In diesem Artikelbeispiel wird der spezifische Code des benutzerdefinierten Popup-Effekts von Vue zu Ihrer Information geteilt. Der spezifische Inhalt ist wie folgt

1. Bestätigungsfelder und Eingabeaufforderungsfelder anpassen

Bestimmen Sie, ob es sich um ein Bestätigungsfeld oder ein Eingabeaufforderungsfeld handelt, basierend auf dem übergebenen Typ

<Vorlage>
  <Übergangsname="Bestätigung-Ausblenden">
    <div v-if="isShowConfirm" Klasse="meine-confirm" @click.stop="clickFun('clickCancel')">
      <div Klasse="Confirm-Content-Wrap" @click.stop>
        <h3 class="my-confirm-title" v-show="titleText != ''">{{ titleText }}</h3>
        <p class="my-confirm-content">{{ Inhalt }}</p>
        <div Klasse="meine-Operation">
          <div v-if="Typ==='bestätigen'" Klasse="my-cancel-btn" @click="clickFun('clickCancel')">
            <p class="my-btn-text my-border-right">{{ Text abbrechen }}</p>
          </div>
          <div Klasse="confirm-btn" @click="clickFun('clickConfirm')">
            <p class="my-btn-text">{{ Bestätigungstext }}</p>
          </div>
        </div>
      </div>
    </div>
  </Übergang>
</Vorlage>
 
<Skripttyp="text/ecmascript-6">
Standard exportieren {
  Daten () {
    zurückkehren {
      isShowConfirm: false, // Wird verwendet, um die Anzeige/Ausblendung des gesamten Fensters zu steuern titleText: ‚Bedienungstipps‘, // Inhalt des Eingabeaufforderungsfelds: ‚Sagen Sie etwas ...‘, // Inhalt des Eingabeaufforderungsfelds cancelText: ‚Abbrechen‘, // Text der Abbrechen-Schaltfläche confirmText: ‚Bestätigen‘, // Text der Bestätigungsschaltfläche type: ‚bestätigen‘, // Gibt den Typ des Popup-Fensters an: confirm – Bestätigungs-Popup-Fenster (mit Abbrechen-Schaltfläche); alert – Benachrichtigungs-Popup-Fenster (ohne Abbrechen-Schaltfläche)
      outerData: null // Wird zum Aufzeichnen von von außen übertragenen Daten verwendet und kann auch zum Überwachen von Benutzerverhalten und Ereignisfunktionen verwendet werden, um festzustellen, welches Ereignis ausgelöst wurde.}
  },
  Methoden: {
    show (Inhalt, Konfiguration) {
      this.content = Inhalt || „Sag etwas …“
 
      wenn (Object.prototype.toString.call(config) === '[Objekt Objekt]') {
        // Stellen Sie sicher, dass der Benutzer ein Objekt übergibt this.titleText = config.titleText || ''
        this.cancelText = config.cancelText || 'Abbrechen'
        this.confirmText = config.confirmText || 'Bestätigen'
        this.type = config.type || 'bestätigen'
        this.outerData = config.data || null
      }
 
      this.isShowConfirm = true
    },
    versteckt () {
      this.isShowConfirm = false
      this.titleText = 'Bedienungstipps'
      this.cancelText = "Abbrechen"
      this.confirmText = "Bestätigen"
      this.type = "bestätigen"
      this.outerData = null
    },
    clickFun (Typ) {
      dies.$emit('userBehavior', Typ, dies.outerData)
      dies.versteckt()
    }
  }
}
</Skript>
 
<Stilbereich>
.meine-bestätigen {
  Position: fest;
  oben: 0;
  links: 0;
  rechts: 0;
  unten: 0;
  Hintergrundfarbe: rgba(0, 0, 0, 0,5);
  Z-Index: 998;
  /* Dadurch wird verhindert, dass der schwarze Hintergrund erscheint, wenn der Benutzer lange auf den Bildschirm drückt, und dass das Problem mit der Schriftskalierung auftritt, wenn das iPhone horizontal und flach liegt.*/
  -Webkit-Textgrößenanpassung: 100 %;
  -webkit-tap-highlight-color: rgba(0, 0, 0, 0);
}
 
/*Animationen ein- und aussteigen*/
.bestätigen-ausblenden-eintreten-aktiv {
  Animation: Deckkraft 0,3 s;
}
.confirm-fade-enter-active .confirm-content-wrap {
  Animation: Maßstab 0,3 s;
}
.bestätigen-verblassen-aktiv lassen {
  Animation: OutOpacity 0,2 s;
}
 
/* Containerstil für Wrapping-Ebene */
.confirm-content-wrap {
  Position: absolut;
  oben: 28 %;
  links: 0;
  rechts: 0;
  Breite: 280px;
  Rand: 0 automatisch;
  Hintergrundfarbe: #fff;
  Rahmenradius: 5px;
  Z-Index: 999;
  Benutzerauswahl: keine;
}
 
/* Oberer Titelabschnitt */
.mein-Bestätigungstitel {
  Polsterung oben: 20px;
  Textausrichtung: zentriert;
  Schriftgröße: 20px;
  Schriftstärke: 500;
  Farbe: #333;
}
 
/* Mittlerer Inhaltsteil*/
.mein-confirm-content {
  Polsterung: 0 15px;
  Polsterung oben: 20px;
  Rand unten: 32px;
  Textausrichtung: zentriert;
  Schriftgröße: 16px;
  Farbe: #666;
  Zeilenhöhe: 1,5;
}
 
/* Stil der unteren Schaltfläche */
.meine-Operation {
  Anzeige: Flex;
  Rahmen oben: 1px durchgezogen #eee;
}
.meine-Operation .meine-Abbrechen-btn, .Bestätigen-btn {
  biegen: 1;
}
.meine-Operation .confirm-btn {
  Farbe: #ffb000;
}
.meine-Operation .mein-btn-text {
  Textausrichtung: zentriert;
  Schriftgröße: 16px;
  Rand: 8px 0;
  Polsterung: 6px 0;
}
 
/* Andere Dekorationsstile*/
.meine-Grenze-rechts {
  Rahmen rechts: 1px durchgezogen #eee;
}
 
/* Eingehende Animation*/
@keyframes Deckkraft {
  0% {
    Deckkraft: 0;
  }
  100 % {
    Deckkraft: 1;
  }
}
@keyframes skalieren {
  0% {
    transformieren: Skalierung(0);
  }
  60 % {
    transformieren: Skalierung(1.1);
  }
  100 % {
    transformieren: Skalierung(1);
  }
}
 
/* Animation beenden */
@keyframes outOpacity {
  0% {
    Deckkraft: 1;
  }
  100 % {
    Deckkraft: 0;
  }
}
</Stil>

2. Anruf:

(1) Verwendung der Eingabeaufforderung:

<DialogView ref="myDialog" @userBehavior="changeData"></DialogView>
…
//Eingabeaufforderungsfeld this.$refs.myDialog.show(content, {
        Typ: "Alarm",
        Bestätigungstext: 'OK',
        cancelText: 'Abbrechen',
        TitelText: '',
        Daten: null
      })

Wirkung:

(2) Bestätigungsfeld:

this.$refs.myDialog.show('Möchten Sie dieses Produkt einlösen?', {
            Typ: 'bestätigen',
            confirmText: 'Jetzt umtauschen',
            cancelText: 'Nein danke',
            TitelText: '',
            Daten: {shop: shop, betreiben: 'Austausch'}
          })

Wirkung:

Wenn das Bestätigungsfeld gedrückt wird: changeData

<DialogView ref="myDialog" @userBehavior="changeData"></DialogView>
    …
 
    changeData (Typ, Daten) {
      console.log('changeData',Daten)
      if (Typ === 'KlickBestätigen') {
        wenn (data.operate === 'Austausch') {
          // dies.reduceEnergy(data.shop)
          dieser.exchangeCoupon(data.shop)
        } sonst wenn (data.operate === 'downLoad') {
          Fenster.Standort = Daten.URL
        } sonst wenn (data.operate === 'login') {
          this.uplusApi.upVdnModule.goToPage({url: 'mpaas://usercenter'})
          this.isLogin = false
        }
      }
},

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:
  • Vue-Tutorial: Toast-Popup-Box, globales Anrufbeispiel, detaillierte Erklärung
  • Toast-Verwendung in vue.js und Beispielcode mit Toast-Popup-Fenster
  • Vues Beispielcode für Popup-Formulare mit mehreren Bullet-Boxen
  • Vue+iview schreibt einen Beispielcode für eine Popup-Box
  • So implementieren Sie einen einfachen Popup-Dialog in Vue
  • Vue implementiert die Bullet-Box-Maske, klickt auf andere Bereiche, um die Bullet-Box zu schließen, und führt den Unterschied zwischen v-if und v-show ein
  • Vue+elementui realisiert, dass durch Klicken auf eine Zelle in der Tabelle ein Ereignis ausgelöst wird – eine Bulletbox
  • Beispielcode zum Imitieren des Element-UI-Bulletbox-Effekts in einem Vue-Projekt
  • Vue.js implementiert Popup-Fenster nur einmal
  • Lösung für das Scroll-Penetrationsproblem, das durch die Vue-Bulletbox verursacht wird

<<:  Grafisches Tutorial zur Installation und Konfiguration von MySQL 8.0.11 Neue Kennwortauthentifizierungsmethode für MySQL 8.0

>>:  CentOS 8 offiziell veröffentlicht, basierend auf Red Hat Enterprise Linux 8

Artikel empfehlen

Automatisierte Schnittstellentests mit Postman

Inhaltsverzeichnis Hintergrundbeschreibung Erstel...

Eine kurze Einführung in Web2.0-Produkte und -Funktionen

<br />Was ist Web 2.0? Web2.0 umfasst diese ...

React kapselt die globale Bullet-Box-Methode

In diesem Artikelbeispiel wird der spezifische Co...

Lösung für das MySQL IFNULL-Beurteilungsproblem

Problem: Die von mybatis zurückgegebenen Daten vo...

Sie müssen wirklich die Verwendung von CSS-Variablen var() verstehen

Wenn ein Webprojekt immer größer wird, werden sei...

So fragen Sie Datum und Uhrzeit in MySQL ab

Vorwort: Bei der Projektentwicklung werden in ein...

So installieren Sie Jenkins mit Docker

Inhaltsverzeichnis 1. Ziehen Sie das Bild 2. Erst...

Analyse der Informationsarchitektur von Facebook

<br />Original: http://uicom.net/blog/?p=762...

Implementierung der Bereitstellung des Nginx+ModSecurity-Sicherheitsmoduls

Inhaltsverzeichnis 1. Herunterladen 2. Bereitstel...

Vue implementiert das Senden von Emoticons im Chatfenster

Der spezifische Code zum Senden von Emoticons im ...

Windows-Plattformkonfiguration Version 5.7 + MySQL-Datenbankdienst

Beinhaltet den Prozess der Initialisierung des Ro...

So erstellen Sie einen MySQL-Cluster mit hoher Verfügbarkeit und Leistung

Inhaltsverzeichnis Was ist MySQL NDB Cluster? Vor...