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

Installations-Tutorial für die komprimierte Version von MySQL 5.7.18 Archiv

In diesem Artikel wird die spezifische Methode zu...

Beispielüberprüfung MySQL | Update-Feld mit demselben Wert zeichnet Binlog auf

1. Einleitung Vor ein paar Tagen fragte mich ein ...

Ausführliches Tutorial zur Installation von MySQL 5.6-ZIP-Paketen

Bisher haben wir alle Dateien mit der Endung .msi...

Ubuntu 15.04 öffnet den MySQL-Remote-Port 3306

Ubuntu 15.04 öffnet den MySQL-Remote-Port 3306. A...

Entwicklung einer Vue Element-Frontend-Anwendung zum Abrufen von Backend-Daten

Inhaltsverzeichnis Überblick 1. Erfassung und Ver...

So installieren Sie Jenkins mit Docker

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

So erstellen Sie mit Squid einen Proxyserver für http und https

Als wir nginx eingeführt haben, haben wir nginx a...

Detaillierte Erläuterung der MySQL-Benutzerrechteverwaltung

Inhaltsverzeichnis Vorwort: 1. Einführung in die ...

JavaScript Dom implementiert das Prinzip und Beispiel eines Karussells

Wenn wir ein Karussell bauen wollen, müssen wir z...

Detailliertes Tutorial zur Installation und Bereitstellung von Nginx Linux

1. Einführung in Nginx Nginx ist ein Webserver, d...

Lösen Sie das Problem, dass Docker das MySQL-Image zu langsam zieht

Nachdem wir eine halbe Stunde lang versucht hatte...

React DVA-Implementierungscode

Inhaltsverzeichnis dva Verwendung von dva Impleme...