Vue implementiert scrollbaren Popup-Fenstereffekt

Vue implementiert scrollbaren Popup-Fenstereffekt

In diesem Artikel wird der spezifische Code von Vue zur Erzielung des scrollbaren Popup-Fenstereffekts als Referenz bereitgestellt. Der spezifische Inhalt ist wie folgt

Dies ist die erste Implementierung

Effektbild:

Code des Popup-Fensters:

Popup.vue

<template lang="html">
    <div v-if="anzeigen" Klasse="modal-bg" @click="closeModal">
      <div Klasse="modal_con">
        <div Klasse="modaler_Inhalt">
          <div Klasse="modal-container">
            <div Klasse="modal_main">
              <p class="modal-header">{{dataList.title}}</p>
              <div Klasse="Regeln_Text">
                <p
                  v-for="(Element, Index) in Datenliste.Regeln"
                  Klasse="Regeln_txt"
                  :Schlüssel="Index"
                >
                  {{ Artikel }}
                </p>
              </div>
          </div>
        </div>
          <div Klasse="Fußzeilenregeln">
            <div class="Tipps"></div>
              <div Klasse="Regeln_Schaltfläche">
                <div Klasse="Schaltfläche" @click="Modalschließen">
                  <p class="button_text">Ich verstehe</p>
                </div>
              </div>
            </div>
        </div>
      </div>

    </div>
</Vorlage>

<Skript>
Standard exportieren {
  Name: 'Popup',
  Requisiten: {
    zeigen: {
      Typ: Boolean,
      Standard: false
    },
  },
  Daten () {
    zurückkehren {
      Datenliste: {
        Regeln:
          ‚1. Dies sind die ersten Daten, ahh ...
          ‚2. Dies ist das zweite Datenstück, ahh ...
          ‚3. Dies ist das dritte Datenstück, ahh ...
          ‚4. Dies ist das vierte Datenelement aa ...
        ],
        belohnen: [
          „1. Tätigkeitsregeln Artikel 1 Daten Daten Daten Daten“,
          „2. Tätigkeitsregeln Artikel 2 Daten Daten Daten“,
          „2. Tätigkeitsregeln Artikel 3 Daten Daten Daten“
        ]

      }
    }
  },
  Methoden: {
    schließeModal() {
      dies.$emit('closeModal')
    },
  }
}
</Skript>

<style lang="css" scoped>
.modal_con {
  Breite: 80%;
  Höhe: 287px;
  Hintergrund: #ffffff;
  Überlauf: versteckt;
  Rand: 0 automatisch;

  Position: fest;
  oben: 50 %;
  links: 50%;
  transformieren: übersetzen(-50 %, -50 %);
  Rahmenradius: 8px;
}
.modal_content {
  Höhe: 100%;
  Hintergrundfarbe: #fff;
}
.modal-bg {
  Breite: 100 %;
  Höhe: 100%;
  Hintergrundfarbe: rgba(0, 0, 0, 0,6);
  Position: fest;
  oben: 0;
  links: 0;
  Z-Index: 999;
}
.modal-container {
  Höhe: 78%;
  Textausrichtung: zentriert;
  Anzeige: Flex;
  Flex-Richtung: Spalte;
  Überlauf-y: scrollen;
  /* ios erfordert das folgende Attribut*/
  -webkit-overflow-scrolling: berühren;
}

.rules_txt {
  Schriftgröße: 15px;
  Schriftfamilie: PingFangSC, PingFangSC-Regular;
  Schriftstärke: 400;
  Textausrichtung: Blocksatz;
  Farbe: #666666;
  Polsterung: 0 20px;
  Rand oben: 8px;
  Rand unten: 0;
}

.rules_txt:letztes-Kind {
  Polsterung unten: 40px;
}
.modal-header {
  Schriftgröße: 17px;
  Schriftfamilie: PingFang, PingFang-SC;
  Schriftstärke: fett;
  Textausrichtung: zentriert;
  Farbe: #333333;
  Rand: 0;
  Polsterung oben: 20px;
}
.Belohnungstitel {
  Schriftgröße: 17px;
  Schriftfamilie: PingFang, PingFang-SC;
  Schriftstärke: fett;
  Textausrichtung: zentriert;
  Farbe: #333333;
  Polsterung: 0;
  Rand oben: 14px;
  Rand unten: 6px;
}
.footer_rules {
  Breite: 100 %;
  Höhe: 22%;
  Position: absolut;
  unten: 0;
}
.Tipps {
  /* Breite: 100 %;
  Deckkraft: 0,6;
  Höhe: 49px;
  Hintergrund: linearer Farbverlauf (180 Grad, RGBA (255, 255, 255, 0,5), #ffffff);
  Textausrichtung: zentriert;
  Zeilenhöhe: 49px;
  Schriftgröße: 18px; */
}
.Regeln_Button {
  Breite: 100 %;
  Hintergrund: #ffffff;
  Polsterung unten: 20px;
  Rahmen unten rechts – Radius: 8px;
  Rahmen unten links – Radius: 8px;
}
.Taste {
  Breite: 90%;
  Anzeige: Flex;
  Inhalt ausrichten: zentriert;
  Inhalt ausrichten: zentriert;
  Hintergrund: linearer Farbverlauf (270 Grad, #1283ff, #50a3ff);
  Rahmenradius: 4px;
  Textausrichtung: zentriert;
  Rand: 0 automatisch;
}
.Schaltflächentext {
  Schriftgröße: 15px;
  Schriftfamilie: PingFang, PingFang-SC;
  Schriftstärke: SC;
  Farbe: #ffffff;
  Anzeige: Flex;
  Inhalt ausrichten: zentriert;
  Inhalt ausrichten: zentriert;
  Rand: 0;
  Polsterung: 12px 0;
}
.rules_con {
  Polsterung unten: 80px;
}
</Stil>

Verwenden Sie Popup-Fenster auf der Home.vue-Seite:

<!-- Popup-Fenster mit Ereignisregeln-->
 <Vorlage>
<div>
 <div @click="clickPopup">
            <span>Klicken Sie, um das Popup-Fenster zu öffnen</span>
          </div>
 <Popup
      v-show="istRegelnAnzeigen"
      @closeModal="isRulesShow = falsch"
      :show="istRegelnAnzeigen"
    >
    </Popup>
</div>
</Vorlage>
<Skript>
Popup aus „./Popup“ importieren
Standard exportieren {
Name:"Home",
Komponenten:
 Popup
},
Daten () {
    zurückkehren {
      isRulesShow:flase
      }
    },
    betrachten:
    isRulesShow (v) {
      wenn (v) {
        //Deaktiviere die Schiebemethode der Hauptseite in main.js
        dies.noScroll()
      } anders {
        //Die Hauptseite kann verschoben werden. this.canScroll()
      }
    },
  },
   Methoden:{
 //Popup-Fenster mit Aktivitätsregeln clickPopup () {
      this.isRulesShow = true
    },
 }
}
</Skript>
   <style lang="scss" scoped>
* {
  Touch-Aktion: Schwenk-Y;
}
</Stil>

Lösen Sie das Problem, dass der Textkörper im Popup-Fenster mitrollt

In main.js

//Das Verschieben des Popup-Fensters ist verboten Vue.prototype.noScroll = function () {
  var mo = Funktion (e) { e.preventDefault() }
  document.body.style.overflow = "versteckt"
  document.addEventListener('touchmove', mo, false,{ passive: false })// Seitenverschiebung deaktivieren}
 
//Das Popup-Fenster kann verschoben werden Vue.prototype.canScroll = function () {
  var mo = Funktion (e) {
    e.preventDefault()
  }
  document.body.style.overflow = ''// Bildlaufleiste wird angezeigt document.removeEventListener('touchmove', mo, false,{ passive: false })
}

Bei der Nutzung der Seite:

//Deaktiviere das Verschieben der Hauptseite this.noScroll()
//Die Hauptseite kann verschoben werden. this.canScroll()

//Fügen Sie auch Stile hinzu:
* {
  Touch-Aktion: Schwenk-Y;
}

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:
  • Verwenden Sie Vue-Komponenten, um einen einfachen Popup-Effekt zu implementieren
  • Zusammenfassung der Wissenspunkte zu Popup-Komponenten von vue.js
  • Tolle Vue-Popup-Komponente
  • So verwenden Sie die Vue-Popup-Nachrichtenkomponente
  • VUE implementiert eine Popup-Komponente, die nach Belieben gezogen werden kann
  • Vue implementiert den Vorgang, durch Klicken auf die Schaltfläche "Details anzeigen" die Detailliste in einem Popup-Fenster anzuzeigen
  • Detailliertes Beispiel der Toast-Popup-Komponente von Vue
  • Zerstören- und Ausblenden-Vorgänge beim Schließen von Popup-Komponenten in Vue
  • Wenn Vue erscheint, hören Sie auf die Eingabetaste des Telefons, um die Popup-Funktion zu schließen (die Seite springt nicht).
  • Verwenden Sie VUE, um Textinformationen in der Tabelle auszublenden, wenn diese mehr als 5 Zeichen enthält, und alle Zeichen anzuzeigen, wenn die Maus bewegt wird

<<:  MySQL erklärt das Prinzip und Beispiel zum Abrufen von Abfrageanweisungen

>>:  So verwenden Sie xshell zum Herstellen einer Verbindung zu Linux in VMware (2 Methoden)

Artikel empfehlen

Detaillierte Schritte zum Herunterladen und Installieren von Tomcat unter Linux

Wenn Sie gerade erst mit Linux in Berührung gekom...

So fügen Sie einem Feld in MySQL eine Standardzeit hinzu

Unterschiede und Verwendungen von Datumstypen MyS...

Javascript-Bereich und Abschlussdetails

Inhaltsverzeichnis 1. Geltungsbereich 2. Geltungs...

So konfigurieren Sie Linux CentOS für die regelmäßige Ausführung von Skripten

Oft möchten wir, dass der Server regelmäßig ein S...

Eine einfache Erklärung der parallelen MySQL-Replikation

1. Hintergrund der parallelen Replikation Zunächs...

HTML-Zeichnungsbenutzer-Registrierungsseite

In diesem Artikel wird der spezifische Implementi...

Durchführung der lokalen Migration von Docker-Images

Ich habe vor Kurzem Docker gelernt und stoße dabe...

Ein Beispiel für die Implementierung eines adaptiven Quadrats mit CSS

Die traditionelle Methode besteht darin, ein Quad...

Eine kurze Diskussion über den gesamten Prozess des ersten Renderings von Vue

Inhaltsverzeichnis 1. Vue-Initialisierung Vue-Ein...

Analyse des Sperrmechanismus der MySQL-Datenbank

Bei gleichzeitigen Zugriffen kann es zu nicht wie...

Referenz zum Detaildesign des Benutzererlebnisses auf B2C-Websites

Als ich kürzlich Apple.com/Ebay.com/Amazon.com/sh...