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

JS-Funktionsaufruf, Anwenden und Binden einer superdetaillierten Methode

Inhaltsverzeichnis JS-Funktionsaufruf, Apply- und...

So sichern Sie MySQL unter Linux automatisch remote

Vorwort: Ganz gleich, ob wir es für den Eigengebr...

Beispielcode eines CSS-responsiven Layoutsystems

Responsive Layoutsysteme sind in den heute gängig...

MySQL-Beispielcode für die Addition und Subtraktion von Datum und Uhrzeit

Inhaltsverzeichnis 1.MySQL addiert oder subtrahie...

Detaillierte Erklärung der Gründe, warum MySQL-Verbindungen hängen bleiben

Inhaltsverzeichnis 1. Hintergrund Architektur Pro...

So zeigen Sie in CocosCreator eine Textur an der Wischposition an

Inhaltsverzeichnis 1. Projektanforderungen 2. Dok...

Eine kurze Einführung in die Kernkenntnisse der VUE uni-app

Inhaltsverzeichnis Spezifikation a. Die Auslageru...