In diesem Artikelbeispiel wird der spezifische Code der Vue Canvas-Zeichnungszeitleiste als Referenz bereitgestellt. Der spezifische Inhalt ist wie folgt Ich studiere derzeit die Zeitleiste für das Zeichnen auf Leinwand. Hier ist der Code direkt. Ich hoffe, dass es Ihnen helfen kann, ihn weiterzugeben. Der Effekt ist wie folgt: Der Code lautet wie folgt. Sie können ihn in das Vue-Projekt kopieren und direkt in der Vorschau anzeigen. <Vorlage> <div> <canvas id="Zeitleiste" width="1200" height="27"></canvas> </div> </Vorlage> <Skript> Standard exportieren { Name: 'pathwaytrack', Daten() { zurückkehren { Bildschirmbreite: Dokument.Textkörper.Clientbreite } }, montiert() { lass das = dies das.carveTimeScale(1200, 1, 10, 0, 10) Leinwandfarbe = "#999999" lass initTime = 12000 setzeIntervall(() => { initTime += 1000 that.carveTimeScale(1200, 1, 10, initTime, 10) }, 1000); }, Methoden: { /** * Pixelskala teilen* width: Breite in ms: Anzahl der Millisekunden für eine kleine Skala pxMs: 10 Pixel für eine kleine Skala pageShowStartTime: Anfangszeit (Millisekunden) eine große Intervalldauer (Sekunden) */ carveTimeScale(Breite, ms, pxMs, SeitenanzeigeStartzeit, Intervallzeit) { let canvasId = document.getElementById('Zeitleiste') lass ctx = canvasId.getContext('2d') ctx.clearRect(0, 0, 1200, 60) ctx.fillStyle = "#999999" // Um eine anormale Anzeige auf Apple 2X-Bildschirmen zu verhindern // Um eine anormale Anzeige auf Apple 2X-Bildschirmen zu verhindern var getPixelRatio = function (context) { var backingStore = Kontext.backingStorePixelRatio || Kontext.webkitBackingStorePixelRatio || Kontext.mozBackingStorePixelRatio || Kontext.msBackingStorePixelRatio || Kontext.oBackingStorePixelRatio || Kontext.backingStorePixelRatio || 1 Rückgabewert (window.devicePixelRatio || 1) / backingStore } let-Verhältnis = getPixelRatio(ctx) let msOffset = this.startOffsetTime(pageShowStartTime, ms) // Start-Offset-Zeit ms let pxOffset = msOffset / 1000 * pxMs // Start-Offset-Distanz px let leftDistance = 0 // Abstand nach links let leftDistanceTime = 0 // Zeit nach links let beginX = 0 lass beginY = 0 für (sei i = 0; i < Breite / (ms * pxMs); i++) { leftDistance = pxOffset + i * (ms * pxMs) // Distanz = Start-Offset-Distanz + Anzahl der Raster * px/Raster leftDistanceTime = pageShowStartTime + msOffset + i * ms // Zeit = linke Startzeit + Offset-Zeit + Anzahl der Raster * ms beginX = pxOffset + i * (ms * pxMs) Leinwandfarbe lassen let showTime = pageShowStartTime + beginX / pxMs * 1000 wenn (showTime % (Intervallzeit * 1000) === 0) { beginY = 0 ctx.font = "12px Arial" ctx.fillText(diese.changeTime(showTime, 1), beginX + 10, 22) Leinwandfarbe = "#999999" ctx.fillStyle = "#B1B1B1" this.drawLine(linkerAbstand, beginY, linkerAbstand, 20, Leinwandfarbe, 1) } sonst wenn (showTime % Intervallzeit == 0) { beginY = 0 Leinwandfarbe = "#999999" this.drawLine(linkerAbstand, beginY, linkerAbstand, 10, Leinwandfarbe, 1) } } }, /** * Linien entsprechend den übergebenen Parametern zeichnen */ drawLine(beginX, beginY, endX, endY, Farbe, Breite) { let canvasId = document.getElementById('time_line'); Lassen Sie ctx = canvasId.getContext('2d'); ctx.beginPath(); ctx.moveTo(beginnX, beginY); ctx.lineTo(endeX, endY); ctx.strokeStyle = Farbe; ctx.lineWidth = Breite; ctx.stroke(); }, /** * Der Offset der linken Startzeit, zurückgegeben in ms */ startOffsetTime(Zeitstempel, Schritt) { let remainder = Zeitstempel % Schritt Rest zurückgeben? Schritt - Rest: 0 }, /** *Rückkehrzeit */ changeTime(Zeit, Zahl) { lass Stunde = 0 let minute = 0 sei Sekunde = 0 Sekunde = Zeit / 1000 wenn (Sekunde >= 3600) { Minute = (Sekunde - (Sekunde % 60)) / 60 Stunde = parseInt((Minute / 60).toString()) Minute = Minute % 60 /* eslint-deaktivieren */ Stunde >= 10 ? Stunde : Stunde = '0' + Stunde Minute >= 10? Minute : Minute = '0' + Minute Sekunde = Sekunde % 60 Sekunde >= 10? Sekunde : Sekunde = '0' + Sekunde /* eslint-aktivieren */ returniere Stunde + ':' + Minute + ':' + Sekunde } if (Sekunde < 3600 && Sekunde >= 60) { Stunde = '00' Minute = parseInt((Sekunde / 60).toString()) /* eslint-deaktivieren */ Minute >= 10? Minute : Minute = '0' + Minute Sekunde = Sekunde % 60 Sekunde >= 10? Sekunde : Sekunde = '0' + Sekunde /* eslint-aktivieren */ returniere Stunde + ':' + Minute + ':' + Sekunde } wenn (Sekunde < 60) { Stunde = '00' Minute = '00' Sekunde = parseInt(Sekunde) /* eslint-deaktivieren */ Sekunde >= 10? Sekunde : Sekunde = '0' + Sekunde /* eslint-aktivieren */ returniere Stunde + ':' + Minute + ':' + Sekunde } } } } </Skript> <style lang="less" scoped> Leinwand { Hintergrund: schwarz; } </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:
|
<<: SQL-Interviewfrage: Ermitteln Sie die Summe der Zeitunterschiede (ignorieren Sie Duplikate)
>>: So ändern Sie schnell das Root-Passwort unter CentOS8
Es gibt zwei Situationen 1. Startzeit und Endzeit...
Dieser Artikel basiert auf dem Free Code Camp Bas...
Projektszenario: Dark Horse Vue Projektmanagement...
Nehmen Sie für eine neu erstellte Website ASP.NET...
Inhaltsverzeichnis Vorwort sql_mode erklärt Die w...
Griechische Buchstaben sind eine sehr häufig verw...
Damit die Tabelle nicht zu kompakt wirkt, kann zw...
Leistung Zum Beispiel: HTML: <div Klasse="...
Im Bereich Design gibt es jedes Jahr unterschiedl...
1: Definieren Sie eine gespeicherte Prozedur zum ...
Denken Sie unbedingt daran, Ihre Daten zu sichern...
Inhaltsverzeichnis Szeneneinstellung Spielressour...
(1) Reduzieren Sie HTTP-Anfragen. (Ressourcendate...
1. Einleitung Ich habe zuvor einen Artikel geschr...
Dieses Mal verwenden wir HTML+CSS-Layout, um eine...