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

Beispiel für die Bereitstellung von MySQL auf Docker

Inhaltsverzeichnis 1 Was ist eine Container-Cloud...

WeChat-Applet implementiert ein einfaches Würfelspiel

In diesem Artikel wird der spezifische Code des W...

Detaillierte Schritte zum Erstellen eines Vue-Scaffolding-Projekts

Vue-Gerüst -> vue.cli Erstellen Sie schnell ei...

MySQL-Abfrage-Cache und Pufferpool

1. Caches - Abfrage-Cache Die folgende Abbildung ...

Einführung in Container-Datenvolumes in Docker

Inhaltsverzeichnis Datenvolumen des Docker-Contai...

Sorgen Sie für eine schnelle Website

Ist Leistung wirklich wichtig? Leistung ist wicht...

Installieren Sie JDK1.8 in einer Linux-Umgebung

Inhaltsverzeichnis 1. Installationsumgebung 2. In...

So nutzen Sie die Multi-Core-CPU in node.js voll aus

Inhaltsverzeichnis Überblick So nutzen Sie die Mu...

So verwenden Sie das JavaScript-Strategiemuster zum Validieren von Formularen

Inhaltsverzeichnis Überblick Formularvalidierung ...

So erstellen Sie ein php-nginx-alpine-Image von Grund auf in Docker

Obwohl ich bereits einige Projekte in einer Docke...

Anwendungsbeispiele für den Mysql Inner Join (unbedingt lesen)

Grammatikregeln SELECT Spaltenname(n) FROM Tabell...

Vue realisiert den gesamten Prozess der Slider-Drag-Verifizierungsfunktion

Rendern Definieren Sie das Skelett, schreiben Sie...