Vue-Beispielcode zur Implementierung einer horizontalen Zeitleiste mit zwei Spalten

Vue-Beispielcode zur Implementierung einer horizontalen Zeitleiste mit zwei Spalten

In diesem Artikel wird hauptsächlich der Beispielcode von Vue zur Realisierung einer horizontalen Zeitleiste mit zwei Spalten vorgestellt. Er wird wie folgt mit Ihnen geteilt:

Schauen wir uns zunächst das Bild an. Es implementiert hauptsächlich eine horizontale Zeitleiste mit zwei Spalten. Ich habe mir angesehen, was viele Leute implementiert haben, und es gibt nur eine horizontale Spalte. Außerdem ist die Zeitleiste von elementUI nur vertikal und unterstützt keine horizontale. Am Ende konnte ich es nur unter Tränen selbst implementieren. Ich hätte nicht erwartet, dass es in Ordnung ist. Wenn jedoch viele Daten vorhanden sind, wurde das Umblättern noch nicht implementiert. Freunde, die dies implementiert haben, können mich markieren.

1. Implementieren Sie die Komponente timelineH.vue

Das H in timelineH.vue steht für horizontal. Es ist schwer, es zu benennen, haha.

<Vorlage>
    <ul Klasse="timelineHengBox">
        <li Klasse = "timelineHengItem" v-for = "(Item, Index) in TimelineList" :Schlüssel = "Index" 
            :style="{left: index % 2 != 0 ? (liHalf*index)+52+'px':0,'border-right': index == timelineList.length - 2 ?'1px solid #FEFEFE' : 'none'}">
            <div class="timeline_dot" :style="{top: index % 2 != 0 ? '-5px' : '93px'}"></div>
            <div Klasse = "timeline_dot" v-show = "index == timelineList.length - 2" Stil = "rechts: -6px;oben:93px;links: nicht festgelegt;"></div>
            <div class="timeline_wapper flex" :class="{'mt20': ​​​​index % 2 != 0}">
                <img src="../../static/img/excelIcon.png" class="bjIcon" :style="{'margin': index % 2 != 0 ? '11px 44px 0 42px' :''}">
                <div>{{item.content}}</div>
            </div>
            <div class="timelineDate_bottom" :style="{'top': index % 2 != 0 ? '-20px' : '103px'}">{{item.dateTime}}</div>
        </li>
    </ul>
</Vorlage>

<Skript>
    Standard exportieren {
        Name: "timelineH",
        Requisiten: {
            Zeitleistenliste: {
                Typ: Array,
                Standard: []
            }
        },
        Daten () {
            zurückkehren {
                liWidth: 496, //Die Breite des gesamten li, um mit dem Stil des li darunter übereinzustimmen liHalf: 248, //Dies ist die halbe Breite des li, damit der Punkt auf der mittleren horizontalen Linie die richtige Position finden kann}
        }
    }
</Skript>
<Stilbereich>
    .timelineHengBox {
        Farbe: #fff;
        Rand: 0;
        Polsterung: 0 26px;
        Breite: 92 %;
        Polsterung oben: 18px;
        Polsterung unten: 10px;
        Rand links: 26px;
        Höhe: 87px;
        Rahmen unten: 3px durchgezogen #FEFEFE;
    }
    .timelineHengItem {
        Listenstil: keiner;
        Höhe: 97px;
        Breite: 496px;
        Rahmen links: 1px durchgezogen #FEFEFE;
        schweben: links;
        Rahmen unten: 3px durchgezogen #FEFEFE;
        Position: relativ;
    }
    .timelineHengItem:n-tes-Kind(2n) {
        Position: absolut;
        links: 248px;
        Rahmen unten: 0;
        oben: 115px;
    }
    .timeline_dot {
        Breite: 10px;
        Höhe: 11px;
        Hintergrund: #FEFEFE;
        Position: absolut;
        links: -5px;
        oben: 93px;
    }
    .timeline_dot:n-tes-Kind(2n) {
        oben: -7px;
    }
    .timeline_wapper {
        Breite: 400px;
        Textausrichtung: links;
        Schriftgröße: 12px;
        Farbe: #FFFFFF;
        Zeilenhöhe: 20px;
    }
    .mt20 {
        Rand oben: 20px;
    }
    .bjIcon {
        Breite: 32px;
        Höhe: 32px;
        Rand: 31px 44px 0 42px;
    }
    .timelineDate_bottom {
        Breite: 80px;
        Höhe: 20px;
        Position: absolut;
        oben: 103px;
        links: -60px;
        Textausrichtung: links;
        Schriftgröße: 14px;
        Schriftstärke: fett;
        Farbe: #FFBA00;
        Rand links: 77px;
    }
</Stil>

Umsetzungsideen:

  • Die vertikale Linie wird durch Festlegen der linken Grenze von li realisiert. Wichtig dabei ist, jedes zweite li in die Mitte des vorherigen li zu setzen, also sollte die Hälfte der Gesamtbreite des li mit absoluter Positionierung links gesetzt werden und auch der Abstand von oben berechnet werden.
  • Die Blöcke zu jedem Zeitpunkt werden durch absolute Positionierung realisiert. Es ist zu beachten, dass die Knoten in der oberen Spalte und die Knoten in der unteren Spalte unterschiedliche Abstände von oben haben, daher habe ich CSS: nth-child (2n) verwendet, um den oberen Abstand jedes zweiten li zu erreichen.
  • Schließlich wird der Datumsknotentext verwendet, um die ungeraden und geraden Zahlen von li zu bestimmen und unterschiedliche Spitzenwerte festzulegen.
  • Da keine Funktion zum Umblättern vorhanden ist, muss bei großen Datenmengen die Länge von li angepasst oder die Breite von li reduziert werden, da es sonst bei großen Datenmengen unschön aussieht. Derzeit gibt es keine Optimierung, aber wenn es an Laptops angepasst werden soll, kann es immer noch erreicht werden, indem die Breite von li und li halbiert wird.

2. Komponenten aufrufen

<div Klasse="timelineHengContainer">
     <timelineH :timelineList='Zeitlinienliste' />
</div>

javascript - Argumente:

importiere timelineH aus "@/components/timelineH.vue";
Komponenten:
        ZeitleisteH
},

Daten() {
    zurückkehren {
          Zeitleistenliste: [

                {
                    Datum/Uhrzeit: '2021-09',
                    Inhalt: ,,Willkommen beim Bergbau, bau jeden Tag ab und gewinne Erz, hahahaha, Willkommen beim Bergbau, bau jeden Tag ab und gewinne Erz, hahahaha, Willkommen beim Bergbau, bau jeden Tag ab und gewinne Erz, hahahaha, Willkommen beim Bergbau, bau jeden Tag ab und gewinne Erz, hahahaha. '
                },{
                    Datum/Uhrzeit: '2021-10',
                    Inhalt: ,,Bitte halten Sie sich im Winter warm, es ist zu kalt.Bitte halten Sie sich im Winter warm, es ist zu kalt.Bitte halten Sie sich im Winter warm, es ist zu kalt.Bitte halten Sie sich im Winter warm, es ist zu kalt. '
                },{
                    Datum/Uhrzeit: '2021-11',
                    Inhalt: „Die 30-Tage-Post-Challenge hat offiziell begonnen. Ich will einen Projektor. Ich wollte schon immer einen kaufen.“ '
                },{
                    Datum/Uhrzeit: '2021-12',
                    Inhalt: ,,Der Monat ist fast zu Ende, ein neues Jahr beginnt, ein frohes neues Jahr, ein neues Jahr beginnt, ein frohes neues Jahr, ein neues Jahr beginnt, ein frohes neues Jahr. '
                }
            ]
    }
}

CSS:

.timelineHengContainer {
        Breite: 100 %;
        Höhe: 227px;
        Hintergrundbild: URL('../../static/img/timelineBg.png');
        Hintergrundgröße: 100 % 100 %;
        Hintergrundwiederholung: keine Wiederholung;
}

OK, damit ist die Zeitleiste mit zwei horizontalen Spalten realisiert. Sie können den Code kopieren und direkt verwenden (mit der CV-Methode~). Ich habe zwei Tage daran gearbeitet. Ich habe mich auf die Methode zum Zeichnen der vertikalen Zeitleiste von Elementui bezogen, aber es hat nicht geklappt. Ich habe es auch nicht mit reinem Div und CSS implementiert. Der Hauptgrund war, dass ich nicht wusste, wie ich die vertikalen Linien der beiden Spalten und der Knoten zeichnen sollte. Schließlich dachte ich daran, li zu verwenden, um direkt einen Rahmen hinzuzufügen und dies zu erreichen.

Dies ist das Ende dieses Artikels über den Beispielcode zur Implementierung einer horizontalen Zeitleiste mit zwei Spalten in Vue. Weitere relevante Inhalte zur horizontalen Zeitleiste mit zwei Spalten in Vue finden Sie in früheren Artikeln auf 123WORDPRESS.COM oder in den folgenden verwandten Artikeln. Ich hoffe, dass jeder 123WORDPRESS.COM in Zukunft unterstützen wird!

Das könnte Sie auch interessieren:
  • Vue implementiert eine horizontale Zeitleiste
  • Vue implementiert eine Zeitleistenfunktion
  • VUE implementiert eine Timeline-Wiedergabekomponente
  • So zeichnen Sie die Zeitleiste mit Vue+Canvas
  • Vue.js implementiert eine Timeline-Funktion
  • Vue+Swiper realisiert Timeline-Effekt
  • Vue realisiert den Logistik-Timeline-Effekt
  • Vue-Zeitleiste Vue-Light-Timeline - Nutzungsanweisungen
  • Vue implementiert eine verschiebbare horizontale Zeitleiste
  • Vue implementiert den Zeitleisteneffekt

<<:  Der IE8-Browser wird vollständig mit Webseitenstandards kompatibel sein

>>:  So implementieren Sie die King of Glory-Personal-Ladeseite mit CSS3

Artikel empfehlen

Detaillierte Erklärung zur Verwendung der JavaScript-Paging-Komponente

Die Paginierungskomponente ist eine häufige Kompo...

Installieren Sie mysql5.7.17 mit RPM unter Linux

Die Installationsmethode von MySQL5.7 rpm unter L...

Einführung in die Apache-Bereitstellung von https in der Kryptografie

Inhaltsverzeichnis Zweck Experimentelle Umgebung ...

Auswahl der Groß-/Kleinschreibung von MySQL-Tabellennamen

Inhaltsverzeichnis 1. Parameter, die die Groß-/Kl...

Flex-Layout erreicht feste Anzahl von Zeilen pro Zeile + adaptives Layout

Dieser Artikel stellt das Flex-Layout vor, um ein...

Verwenden Sie reines CSS, um das A-Tag in HTML ohne JavaScript zu deaktivieren

Tatsächlich ist dieses Problem bereits aufgetreten...

MySQL 8.0.12 Installations- und Nutzungs-Tutorial

Das Installations- und Verwendungstutorial für My...

JavaScript imitiert den Taobao-Lupeneffekt

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

MySQL 8.0.15 Installations- und Konfigurations-Tutorial unter Win10

Was ich kürzlich gelernt habe, beinhaltet Kenntni...

JavaScript-Implementierung des klassischen Schlangenspiels

In diesem Artikel wird der spezifische JavaScript...

Implementierungsmethode des Nginx+Tomcat-Lastausgleichsclusters

Die experimentelle Umgebung ist wie folgt Hier mü...

Mysql kann keine nicht aggregierten Spalten auswählen

1. Einleitung Ich habe mein Blog kürzlich aktuali...

Erläuterung verschiedener Möglichkeiten zum Ausführen von Tomcat unter Linux

Tomcat unter Linux starten und herunterfahren Sta...

Richtige Methode zum Laden von Schriftarten in Vue.js

Inhaltsverzeichnis Schriftarten mit font-face ric...