Implementierungsmethode für die Kapselung von Vue3-Navigationsleistenkomponenten

Implementierungsmethode für die Kapselung von Vue3-Navigationsleistenkomponenten

Kapseln Sie eine Navigationsleistenkomponente in Vue3 ein und erzielen Sie einen Deckeneffekt beim Scrollen der Bildlaufleiste.

Das Wirkungsdiagramm der Navigationsleistenkomponente:

Schematische Darstellung des Deckeneffekts nach dem Scrollen der Bildlaufleiste:

Spezifische Codeanzeige:

<Vorlage>
  <header class="app-header">
    <div Klasse="Container">
      <!-- Kopfzeilennavigationsbereich -->
      <HeaderNavCommon />
      <div Klasse="Suche">
        <i class="iconfont icon-search"></i>
        <input type="text" placeholder="Suche" />
      </div>
      <div Klasse="Warenkorb">
        <a href="#" Klasse="aktuell">
          <i class="iconfont icon-cart"></i>
          <em>2</em>
        </a>
      </div>
    </div>
  </header>
</Vorlage>
 
<Skript>
HeaderNavCommon aus '@/components/header-nav-common.vue' importieren
Standard exportieren {
  Name: "AppHeader",
  Komponenten:
    HeaderNavCommon
  }
}
</Skript>
 
<style scoped lang="weniger">
.app-header {
  Hintergrund: #fff;
  .container {
    Anzeige: Flex;
    Elemente ausrichten: zentrieren;
  }
  .navs {
    Breite: 820px;
    Anzeige: Flex;
    Inhalt ausrichten: Abstand herum;
    Polsterung links: 40px;
    li {
      Rand rechts: 40px;
      Breite: 38px;
      Textausrichtung: zentriert;
      A {
        Anzeige: Inline-Block;
        Schriftgröße: 16px;
        Zeilenhöhe: 32px;
        Höhe: 32px;
      }
      &:schweben {
        A {
          Farbe: @xtxColor;
          Rahmen unten: 1px durchgezogen @xtxColor;
        }
      }
    }
  }
  .suchen {
    Breite: 170px;
    Höhe: 32px;
    Position: relativ;
    Rahmen unten: 1px durchgezogen #e7e7e7;
    Zeilenhöhe: 32px;
    .icon-suche {
      Schriftgröße: 18px;
      Rand links: 5px;
    }
    Eingabe {
      Breite: 140px;
      Polsterung links: 5px;
      Farbe: #666;
    }
  }
  .Warenkorb {
    Breite: 50px;
    .aktuell {
      Höhe: 32px;
      Zeilenhöhe: 32px;
      Textausrichtung: zentriert;
      Position: relativ;
      Anzeige: Block;
      .icon-wagen {
        Schriftgröße: 22px;
      }
      em {
        Schriftstil: normal;
        Position: absolut;
        rechts: 0;
        oben: 0;
        Polsterung: 1px 6px;
        Zeilenhöhe: 1;
        Hintergrund: @helpColor;
        Farbe: #fff;
        Schriftgröße: 12px;
        Rahmenradius: 10px;
        Schriftfamilie: Arial;
      }
    }
  }
}
</Stil>

Der mittlere Menübereich ist in einer separaten Komponente gekapselt, um die Wiederverwendung von zwei Komponenten zu erreichen (HeaderNavCommon-Komponente).

<Vorlage>
  <ul Klasse="App-Header-Navigation">
    <li class="home"><RouterLink zu="/">Zuhause</RouterLink></li>
    <li><a href="#" >Köstliches Essen</a></li>
    <li><a href="#" >Küche</a></li>
    <li><a href="#" >Kunst</a></li>
    <li><a href="#" >Elektrogeräte</a></li>
    <li><a href="#" >Startseite</a></li>
    <li><a href="#" >Pflege</a></li>
    <li><a href="#" >Schwangerschaft und Säugling</a></li>
    <li><a href="#" >Kleidung</a></li>
    <li><a href="#" >Lebensmittel</a></li>
  </ul>
</Vorlage>
 
<Skript>
 Standard exportieren {
    Name: "AppHeaderNav"
   }
</Skript>
 
<Stil scoped lang='less'>
.app-header-nav {
    Breite: 820px;
    Anzeige: Flex;
    Polsterung links: 40px;
    Position: relativ;
    Z-Index: 998;
  li {
    Rand rechts: 40px;
    Breite: 38px;
    Textausrichtung: zentriert;
  A {
    Schriftgröße: 16px;
    Zeilenhöhe: 32px;
    Höhe: 32px;
    Anzeige: Inline-Block;
   }
  &:schweben {
    A {
    Farbe: @xtxColor;
    Rahmen unten: 1px durchgezogen @xtxColor;
        }
      }
  }
}
</Stil>

Komponenten zur Kapselung von Deckeneffekten

<Vorlage>
  <div class="app-header-sticky" :class="{ anzeigen: oben >= 78 }">
    <div Klasse="Container" v-if="oben >= 78">
      <!-- Mitte -->
      <HeaderNavCommon />
      <!-- Rechte Taste -->
      <div Klasse="rechts">
        <RouterLink to="/">Marke</RouterLink>
        <RouterLink to="/">Thema</RouterLink>
      </div>
    </div>
  </div>
</Vorlage>
 
<Skript>
HeaderNavCommon aus '@/components/header-nav-common.vue' importieren
// importiere { ref } von 'vue'
importiere { useWindowScroll } von '@vueuse/core'
Standard exportieren {
  Name: "AppHeaderSticky",
  Komponenten: { HeaderNavCommon },
  aufstellen() {
    // Seiten-Scrolldistanz // const top = ref(0)
    // fenster.onscroll = () => {
    // top.Wert = Dokument.documentElement.scrollTop
    // }
    // Seiten-Scrollen mit Drittanbieter-Paketen const { y: top } = useWindowScroll()
    zurück { nach oben }
  }
}
</Skript>
 
<style scoped lang="weniger">
.app-header-sticky {
  Breite: 100 %;
  Höhe: 80px;
  Position: fest;
  links: 0;
  oben: 0;
  Z-Index: 999;
  Hintergrundfarbe: #fff;
  Rahmen unten: 1px durchgezogen #e4e4e4;
  // Das ist der Schlüsselstil!!!
  // Bewegen Sie sich standardmäßig ganz nach oben transform: translateY(-100%);
  // Vollständig transparent Opazität: 0;
  //Angezeigter Klassenname&.show {
    Übergang: alle 0,3 s linear;
    transformieren: keine;
    Deckkraft: 1;
  }
  .container {
    Anzeige: Flex;
    Elemente ausrichten: zentrieren;
  }
  .Rechts {
    Breite: 220px;
    Anzeige: Flex;
    Textausrichtung: zentriert;
    Polsterung links: 40px;
    Rahmen links: 2px durchgezogen @xtxColor;
    A {
      Breite: 38px;
      Rand rechts: 40px;
      Schriftgröße: 16px;
      Zeilenhöhe: 1;
      &:schweben {
        Farbe: @xtxColor;
      }
    }
  }
}
</Stil>

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:
  • Vue3.x verwendet mitt.js für die Komponentenkommunikation
  • Schritte für Vue3 zur Verwendung von Mitt für die Komponentenkommunikation
  • Detaillierte Erläuterung der Vue3-Kapselungsfunktion für Nachrichtenaufforderungsinstanzen
  • Detaillierte Erläuterung der Verwendung des Synchronisierungsmodifikators bei der Parameterübertragung von übergeordneten und untergeordneten Komponenten in Vue3
  • Einführung in die reaktive Funktion toRef-Funktion ref-Funktion in Vue3
  • Vergleich der Vorteile von vue3 und vue2
  • Praktischer Bericht über die Entwicklung von Vue3- und TypeScript-Projekten
  • Zusammenfassung der Projektentwicklungspraxis in Kombination mit Vue3 von TypeScript
  • Schnellstart der Vue3-Dokumentation
  • Details zu 7 Arten der Komponentenkommunikation in Vue3

<<:  Implementierung von LNMP für die separate Bereitstellung von Docker-Containern

>>:  Lösung für den MySQL-Root-Passwortfehler Nummer 1045

Artikel empfehlen

vue-cli4.5.x erstellt schnell ein Projekt

1. Installieren Sie vue-cli npm ich @vue/cli -g 2...

Navicat Premium betreibt MySQL-Datenbank (führt SQL-Anweisungen aus)

1. Einführung in Navicat 1. Was ist Navicat? Navi...

Beispiel für einen reinen CSS3-Mindmap-Stil

Mindmap Er sieht wahrscheinlich so aus: Die meist...

jQuery implementiert die Anzeige und Ausblendung von Anzeigenanimationen

Wir sehen oft, dass Anzeigen nach ein paar Sekund...

Zehn nützliche und einfache MySQL-Funktionen

Funktion 0. Aktuelle Uhrzeit anzeigen Befehl: sel...

Native JS-Canvas zum Erzielen einer einfachen Schlange

In diesem Artikel wird der spezifische Code von J...

Grundlegende Schritte zur Verwendung einer Mysql-SSH-Tunnelverbindung

Vorwort Aus Sicherheitsgründen kann sich der Root...

Allgemeine MySQL-Anweisungen zum Anzeigen von Transaktionen und Sperren

Einige allgemeine Anweisungen zum Anzeigen von Tr...

Zusammenfassung der Nginx-Konfigurationsstandortmethode

Standortabgleichsreihenfolge 1. Übereinstimmung m...

JavaScript implementiert einen langen Bild-Scroll-Effekt

In diesem Artikel wird der spezifische Code für d...

Eine kurze Diskussion über den Unterschied zwischen src und href in HTML

Einfach ausgedrückt bedeutet src „Ich möchte dies...

So überwachen Sie die Linux-Speichernutzung mit einem Bash-Skript

Vorwort Auf dem Markt sind zahlreiche Open-Source...

So erhalten und verwenden Sie die Zeit im Linux-System

Es gibt zwei Arten von Linux-Systemzeiten. (1) Ka...

So stellen Sie eine Verbindung zum MySQL-Visualisierungstool Navicat her

Nach der Installation von Navicat Der folgende Fe...