Vue+Element UI realisiert die Kapselung von Dropdown-Menüs

Vue+Element UI realisiert die Kapselung von Dropdown-Menüs

In diesem Artikelbeispiel wird der spezifische Code von Vue+Element UI zur Implementierung der Dropdown-Menükapselung zu Ihrer Information geteilt. Der spezifische Inhalt ist wie folgt

1. Rendern

Ich werde zuerst ein Rendering posten. Die Menüelemente sind nicht gestaltet und im Bild ist kein Rahmen zu sehen (der Rahmen ist der Rahmen des äußeren Containers). Sie können die Stile der anderen nach Bedarf ändern.

2. Komponentenverpackung

Die Komponentenkapselung verwendet CSS-Animation, Positionierung und die von Element UI bereitgestellte Dropdown-Menükomponente el-dropdown. Der Code lautet wie folgt

<Vorlage>
  <div Klasse="alle" @click="clickFire">
    <span class="item-border">
      <el-Bild
        Klasse="Artikel"
        Stil="Breite: 24px; Höhe: 24px"
        fit="Abdeckung"
        :lazy="istfaul"
        :src="itemProperty.url"
        :title="Artikeleigenschaft.name"
        :Platzhalter="Artikeleigenschaft.name"
      ></el-image>
    </span>
    <div Klasse="wrap-item"></div>
    <!-- Dropdown-Menü -->
    <el-dropdown class="dropMenu" @command="handleCommand">
      <span class="el-dropdown-link" v-text="itemProperty.name"></span>
      <el-dropdown-menu slot="dropdown" class="dropMenuitems">
        <!-- <el-dropdown-item>Goldener Kuchen</el-dropdown-item>
        <el-dropdown-item>Löwenkopf</el-dropdown-item>
        <el-dropdown-item>Reisnudeln mit Schneckengeschmack</el-dropdown-item> -->
        <el-Dropdown-Element
          Klasse="dropMenu-item"
          v-for="(Element, Index) in ElementEigenschaft.menus"
          :Schlüssel="Index"
          :Befehl="Artikel"
          >{{ Artikel }}</el-Dropdown-Artikel
        >
      </el-Dropdown-Menü>
    </el-dropdown>
  </div>
</Vorlage>
<Skript>
Standard exportieren {
  Requisiten: {
    itemProperty: Objekt,
    erfordern: wahr,
  },
  Daten() {
    zurückkehren {
      isLazy: wahr,
      Artikel:
        Name: "Artikel",
        URL: erforderlich('../../../static/imgs/menus/warning.png'),
        Menüs: [
          'Untermenü-1',
          'Untermenü-2',
          'Untermenü-3',
          'Untermenü-4',
          'Untermenü-5',
        ],
      },
    }
  },
  montiert() {
    dies.$data.item = diese.$props.itemEigenschaft
    // Konsole.log(diese.$props.itemProperty)
  },
  Methoden: {
    //Klickereignis für übergeordnetes Symbol clickFire() {
      //Parameter 1: benutzerdefiniertes Komponentenereignis, das in der übergeordneten Komponente aufgerufen werden kann, um die Wertübertragung von übergeordneten zu untergeordneten Komponenten auszulösen; Parameter 2: an die übergeordnete Komponente übergebene Daten [können in Array-Form vorliegen]
      dies.$emit('clickItem', dies.$data.item)
    },
    //Dropdown-Menü-Klickereignis handleCommand(command) {
      // konsole.log(Befehl)
      dies.$emit('handleCommand', Befehl)
    },
  },
}
</Skript>
<style lang="less" scoped>
.alle {
  // Rand: 1px durchgehend himmelblau;
  Anzeige: Inline-Block;
  Position: relativ;
  Breite: 65px;
  Höhe: 65px;
  // Überlauf: versteckt;
}
// Innerste Ebene.item-border {
  Anzeige: Inline-Block;
  Rand: 0 automatisch;
  Rand links: 0px;
  Rand oben: 10px;
  Breite: 44px;
  Höhe: 44px;
  Randradius: 50 %;
  Rand: 3px durchgehend himmelblau;
  // Hintergrundfarbe: schieferblau;
  .Artikel {
    Position: absolut;
    oben: 50 %;
    links: 50%;
    transformieren: übersetzen(-50 %, -50 %);
  }
}

// Äußerste Schicht.wrap-item {
  Position: absolut;
  oben: 0;
  links: 0;
  Anzeige: Inline-Block;
  Breite: 56px;
  Höhe: 56px;
  Rand: 5px gepunktet transparent;
  Rahmen links: 5px gepunktet #73ffff;
  Rahmenbreite links: 3px;
  Rahmenfarbe rechts: #73ffff;
  Farbe des oberen Rahmens: transparent;
  Randradius: 50 %;
  // Hintergrundfarbe: Burlywood;
  Animation: Kreis 3s unendlich linear;
}
@keyframes Kreis {
  0% {
    transformieren: drehen (0 Grad);
  }

  100 % {
    transformieren: drehen (-360 Grad);
  }
}
//Dropdown-Menü.dropMenu {
  Rand oben: 5px;
  // Hintergrundfarbe: gelbgrün;
  Farbe: #fff;
  //Titel item.el-dropdown-link {
    Cursor: Zeiger;
  }
  //Menü-Unterelement.el-dropdown-menu__item {
    Farbe: rot !wichtig;
  }
  .dropMenu-item {
    Hintergrundfarbe: rosabraun;
  }
}
</Stil>

3. Anwendungsbeispiel in übergeordneter Komponente

<Vorlage>
    <!-- Funktionsmodul: Verwenden Sie Unterkomponenten - achten Sie auf die benutzerdefinierten Ereignisse clickItem und handleCommand -->
    <div Klasse="funcModules">
      <RingArtikel
        Klasse = "Ringitem-Stil"
        v-for="(Element, Index) in FunktionElemente"
        :Schlüssel="Index"
        :itemProperty="Artikel"
        @clickItem="KlickRingItem"
        @handleCommand="handleCommandDropMenü"
      />
    </div>
</Vorlage>
<Skript>
//1-Unterkomponente „RingItem“ aus „../Controls/RingItem“ importieren
Standard exportieren {
  Komponenten:
  //2-Komponente RingItem registrieren,
  },
  Daten() {
    zurückkehren {
      //Funktionsmodul-Symbolressourcen funcItems: [
        {
          Name: 'Systemverwaltung',
          URL: erforderlich('../../../static/imgs/menus/management.png'),
          Menüs: ['Details verwalten', 'Über uns'],
        },
      ],
    }
  },
  Methoden: {
    /**
     * Klickereignis der RingItem-Unterkomponente: Wert ist der von „Emit“ in der Unterkomponente übergebene Wert*/
    clickRingItem(Wert) {
      // Beurteilen Sie den Wert des Namensattributs der Unterkomponente und implementieren Sie den entsprechenden Geschäftslogikschalter (value.name) {
        Fall 'Systemverwaltung': {
          console.log('Systemverwaltung')
          // Seitensprung-Management-Center ausführen (je nach Bedarf Geschäftslogik hinzufügen)
          //this.$router.push({ Pfad: '/admincenter' })
          brechen
        }
      }
    },
    /**
     * RingItem-Unterkomponente: Klickereignis für Dropdown-Menü (Wert ist der von „Emit“ in der Unterkomponente übergebene Wert)
     */
    handleCommandDropMenu(Wert) {
      console.log(Wert)
       Schalter (Wert.Name) {
        Fall 'Details verwalten': {
          console.log('Systemverwaltung')
          // Seitensprung-Management-Center ausführen (je nach Bedarf Geschäftslogik hinzufügen)
          //this.$router.push({ Pfad: '/admincenter' })
          brechen
        }
         case 'Über uns': {
          console.log('Systemverwaltung')
          // Seitensprung-Management-Center ausführen (je nach Bedarf Geschäftslogik hinzufügen)
          //this.$router.push({ Pfad: '/admincenter' })
          brechen
        }
      }
    },
  },
}
</Skript>
<style lang="less" scoped>
//Stilanpassung</style>

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:
  • Beispielcode zur Implementierung des Verlaufs-Tag-Menüs mit vue+elementui+vuex+sessionStorage
  • Vue.js verwendet Element-ui, um das Navigationsmenü zu implementieren
  • Vue verwendet Element-UI, um die Menünavigation zu implementieren
  • Vue+element-ui fügt ein Beispiel für eine benutzerdefinierte Rechtsklick-Menümethode hinzu
  • Vue + Element UI implementiert den Menüfunktionsimplementierungscode des Berechtigungsverwaltungssystems

<<:  Schritte für Django zum Herstellen einer Verbindung zur lokalen MySQL-Datenbank (Pycharm)

>>:  Häufig gestellte Fragen zu Docker

Artikel empfehlen

Benutzerzentriertes Design

Ich wurde in letzter Zeit häufig zu einer offensi...

Lernprogramm zur Verwendung des WeChat-Applets WXS

Was ist wxs? wxs (WeiXin Script) ist eine Skripts...

JSON (JavaScript Object Notation) in einem Artikel verstehen

Inhaltsverzeichnis JSON wird angezeigt JSON-Struk...

Easyswoole Ein-Klick-Installationsskript und Pagoden-Installationsfehler

Häufig gestellte Fragen Wenn Sie easyswoole zum e...

Fassen Sie die häufigsten Anwendungsprobleme von XHTML-Code zusammen

<br />Ich habe festgestellt, dass viele Leut...

Implementierung der Validierungsregel für Vue Element-ui-Formulare

Inhaltsverzeichnis 1. Einleitung 2. Eingabemodus ...

So verbinden Sie Navicat mit der Docker-Datenbank auf dem Server

Starten Sie den MySQL-Container in Docekr Verwend...

Implementierung von Check Constraints in MySQL 8.0

Hallo zusammen, ich bin Tony, ein Lehrer, der nur...

Spezifische Verwendung des Linux-gcc-Befehls

01. Befehlsübersicht Der Befehl gcc verwendet den...

So verwenden Sie den Skeleton-Bildschirm im Vue-Projekt

Heutzutage ist die Anwendungsentwicklung grundsät...

Detaillierte Erklärung zur Verwendung von $props, $attrs und $listeners in Vue

Inhaltsverzeichnis Hintergrund 1. Dokumentbeschre...

Details zu MySQL-Zeittypen und -Modi

Inhaltsverzeichnis 1. MySQL-Zeittyp 2. Überprüfen...

Detailliertes Beispiel einer MySQL-Unterabfrage

Unterabfrageklassifizierung Klassifizierung nach ...