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

Unterschiede zwischen MySQL MyISAM und InnoDB

Der Unterschied: 1. InnoDB unterstützt Transaktio...

Zusammenfassung und Beispiele der Kommunikationsmethoden für Vue3-Komponenten

Die Kommunikationsmodi der Vue3-Komponenten sind ...

Implementierungscode zur Installation von vsftpd in Ubuntu 18.04

Installieren Sie vsftpd $ sudo apt-get installier...

So implementieren Sie Property Hijacking mit JavaScript defineProperty

Inhaltsverzeichnis Vorwort Deskriptoren Detaillie...

Nicht standardmäßiger Implementierungscode für die MySQL UPDATE-Anweisung

Heute werde ich Ihnen einen Unterschied zwischen ...

Verwendung des MySQL Query Rewrite-Plugins

Plugin zum Umschreiben von Abfragen Ab MySQL 5.7....

Befehl zum Entfernen (Löschen) eines symbolischen Links in Linux

Möglicherweise müssen Sie in Linux manchmal symbo...

MySQL verwendet ein Limit, um die Beispielmethode für Paging zu implementieren

1. Grundlegende Implementierung des Limits Im All...

So verwenden Sie Nginx, um domänenübergreifende Front-End-Probleme zu lösen

Vorwort Bei der Entwicklung statischer Seiten, wi...

Centos7-Startvorgang und Nginx-Startkonfiguration in Systemd

Centos7-Startvorgang: 1.post (Selbsttest beim Ein...