Vue + Element UI realisiert Ankerpositionierung

Vue + Element UI realisiert Ankerpositionierung

In diesem Artikelbeispiel wird der spezifische Code von Vue + Element UI zur Erreichung der Ankerpositionierung zu Ihrer Information geteilt. Der spezifische Inhalt ist wie folgt

Ansicht

<el-row :gutter="20">
   <el-col :span="3">
    <!--Navigationsauswahlereignis-->
    <el-menu :default-active="aktiverSchritt" @select="springen">
     <el-menu-item v-for="(item,index) in menuData" :index="`${index}`" :key="item.subjectId">
      <i class="el-icon-menu"></i>
      <span slot="title">{{item.subjectName}}</span>
     </el-Menüelement>
    </el-Menü>
   </el-col>
   <!--Das Binden von Scroll-Ereignissen erfordert Zuhören-->
   <el-col :span="21" class="scroll_cls" @scroll="onScroll">
    <div v-for="(Element, Index) in Tabellenobjekt" :Schlüssel="Index" Stil="Höhe:500px">
     <div Klasse = "Titel Scroll-Element": id = "Element.name">{{Element.name}}</div>
     <el-table :data="item.rows" :key="index">
      <el-table-column label="Seriennummer" type="index" width="50"></el-table-column>
      <el-table-column prop="channelId" label="Kanal-/Team-ID"></el-table-column>
      <el-table-column prop="channelName" label="Kanal/Team"></el-table-column>
      <el-table-column prop="ruleCode" label="Zuteilungsplan-ID"></el-table-column>
      <el-table-column prop="ruleName" label="Name des Zuteilungsplans"></el-table-column>
      <el-table-column prop="ruleVersion" label="Versionsnummer"></el-table-column>
      <el-table-column prop="Hierarchie" label="Ebene">
       <template slot-scope="Umfang">
        <span>{{scope.row.hierarchy == 1 ? 'Projekt' : 'Channel-Team'}}</span>
       </Vorlage>
      </el-Tabellenspalte>
      <el-table-column label="Gültigkeitsdauer">
       <template slot-scope="Umfang">
        <span>{{scope.row.beginTime + '-' + scope.row.endTime}}</span>
       </Vorlage>
      </el-Tabellenspalte>
      <el-table-column prop="Erstellername" label="Betreiber"></el-table-column>
      <el-table-column prop="createTime" label="Betriebszeit"></el-table-column>
      <el-table-column prop="orderCnt" label="Verwandte Reihenfolge">
       <template slot-scope="Umfang">
        <el-Schaltfläche
         @click="orderHandleClick(Umfang.Zeile.orderCnt)"
         Typ="Text"
         Größe="klein"
        >{{scope.row.orderCnt}}</el-button>
       </Vorlage>
      </el-Tabellenspalte>
      <el-table-column label="Vorgang">
       <template slot-scope="Umfang">
        <el-button @click="settingHandleClick(scope.row)" type="text" size="small">Zuteilungsplan festlegen</el-button>
       </Vorlage>
      </el-Tabellenspalte>
     </el-Tabelle>
     <el-pagination
      v-wenn="Artikel.total > 5"
      Stil="Rand oben: 15px"
      Größe="klein"
      @size-change="Größenänderungshandle($Ereignis,Index)"
      @current-change="handleCurrentChange($Ereignis,Index)"
      :current-page="regelForm.Altersnummer"
      :Seitengrößen="[10, 30, 50, 100]"
      :Seitengröße="Regelform.Seitengröße"
      Layout = "Gesamt, Größen, Zurück, Pager, Weiter"
      :total="Artikel.total"
     ></el-pagination>
    </div>
   </el-col>
</el-row>

js

//Methoden zum Hervorheben der Scroll-Trigger-Schaltfläche: {
  beimScrollen(e) {
            let scrollItems = document.querySelectorAll(".scroll-item");
            console.log(scrollItems)
            console.log(e)
   für (let i = scrollItems.length - 1; i >= 0; i--) {
    // Beurteilen Sie, ob die Bildlaufdistanz der Bildlaufleiste größer ist als die Bildlaufdistanz des aktuellen Bildlaufelements. let judge =
     e.target.scrollTop >=
     scrollItems[i].offsetTop - scrollItems[0].offsetTop;
    wenn (Richter) {
                    Konsole.log(i)
     this.activeStep = i.toString();
     brechen;
    }
   }
  },
  Sprung(Index) {
            konsole.log(index)
   : Lassen Sie das Ziel = document.querySelector(".scroll_cls");
   let scrollItems = document.querySelectorAll(".scroll-item");
   // Bestimmen Sie, ob die Bildlaufleiste nach unten gescrollt ist, wenn (target.scrollHeight <= target.scrollTop + target.clientHeight) {
                konsole.log(index)
                console.log(Indextyp)
    dieser.aktiverSchritt = Index;
   }
            let total = scrollItems[index].offsetTop - scrollItems[0].offsetTop; // Der Abstand zwischen dem Ankerelement und der Oberseite seines offsetParent (hier ist der Hauptteil) (die zu scrollende Distanz)
            console.log(gesamt)
            let distance = document.querySelector(".scroll_cls").scrollTop; // Der Abstand zwischen der Bildlaufleiste und der Oberseite des Bildlaufbereichs console.log(distance)
   // let distance = document.body.scrollTop || document.documentElement.scrollTop || window.pageYOffset // Der Abstand zwischen der Bildlaufleiste und der Oberseite des Bildlaufbereichs (der Bildlaufbereich ist das Fenster)
   // Implementierung der Bildlaufanimation. Verwenden Sie die setTimeout-Rekursion, um einen reibungslosen Bildlauf zu erzielen. Teilen Sie die Distanz in 50 kleine Segmente auf und scrollen Sie alle 10 ms einmal. // Berechnen Sie die Distanz jedes kleinen Segments. let step = total / 50;
   if (Gesamt > Entfernung) {
    smoothDown(document.querySelector(".scroll_cls"));
   } anders {
    let newTotal = Entfernung - Gesamt;
    Schritt = neuesGesamt / 50;
    smoothUp(document.querySelector(".scroll_cls"));
   }

   // Parameter Element ist der Scrollbereich Funktion smoothDown(element) {
    wenn (Entfernung < Gesamt) {
     Entfernung += Schritt;
                    element.scrollTop = Abstand;
     setTimeout(smoothDown.bind(dieses, Element), 10);
    } anders {
     element.scrollTop = insgesamt;
    }
   }

   // Parameter Element ist der Scrollbereich Funktion smoothUp(element) {
    if (Entfernung > Gesamt) {
     Entfernung -= Schritt;
     element.scrollTop = Abstand;
     setTimeout(smoothUp.bind(dieses, Element), 10);
    } anders {
     element.scrollTop = insgesamt;
    }
   }

   document.querySelectorAll('.scroll-item').forEach((item, index1) => {
     wenn (Index === Index1) {
       Element.scrollIntoView({
         Block: "Start",
         Verhalten: ‚glatt‘
       })
     }
   })
  },
  },
 montiert() {
       dies.$nextTick(() => {
           console.log(1)
           window.addEventListener('scrollen', this.onScroll,true)
       })
    },

CSS

.scroll_cls {
    Höhe: 500px;
 Überlauf: automatisch;
}

Nachdruck von: Klicken Sie hier für den Originallink

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 implementiert Ankerpositionierungsfunktion
  • Beispielcode für Vue-Schiebedecke und Ankerpositionierung
  • Vue hört auf das Scrollen, um eine Ankerpositionierung zu erreichen (bidirektional) Beispiel
  • Alternative Methode zur Ankerpositionierung im Vue-Projekt
  • Detaillierte Erklärung der Ankerpositionierung im Vue-Projekt

<<:  Linux-Befehl „exa“ (bessere Dateianzeige als „ls“)

>>:  Ein kurzer Vortrag über den MySQL-Index und die Redis-Sprungtabelle

Artikel empfehlen

JS praktisches objektorientiertes Schlangenspielbeispiel

Inhaltsverzeichnis denken 1. Bild mit dem gierige...

Detaillierte Erklärung zu sinnvollen Einstellungen des MySQL sql_mode

Sinnvolle Einstellung des MySQL sql_mode sql_mode...

Optimierte Aufzeichnung der Verwendung von IN-Datenvolumen in Mysql

Die MySQL-Versionsnummer ist 5.7.28. Tabelle A ha...

Einführung in die Cloud-native-Technologie Kubernetes (K8S)

Inhaltsverzeichnis 01 Was ist Kubernetes? 02 Der ...

Einfache Anwendungsbeispiele für benutzerdefinierte MySQL-Funktionen

Dieser Artikel veranschaulicht anhand von Beispie...

Der Fallstrickrekord des Gummi-Rebound-Effekts der iOS WeChat H5-Seite

Geschäftliche Anforderungen Eines der Projekte, d...

10 tödliche semantische Fehler in der Webtypografie

<br />Dies stammt aus dem Inhalt von „Web Fr...