suchen
HeimWeb-FrontendCSS-TutorialEin unschuldiger Spaß mit HTML -Video und Fortschritt

Ein unschuldiger Spaß mit HTML -Video und Fortschritt

Dieses Projekt begann mit einem Workplace -Trainingsvideo zum Mobbing - einer wirklich inspirierenden Quelle kreativer Energie! Die elegante Benutzeroberfläche des Videos, insbesondere die Gradienten -Fortschrittsbalken, löste eine Idee aus. Ich wusste<progress></progress> Element war möglich (dank Pankaj Parashars CSS-Tricks-Post 2016), hatte aber nicht ausgiebig in Video-Manipulation oder JavaScript eingeteilt. Die Herausforderung war an!

Das Ziel war einfach: Synchronisieren Sie den Wert einer Fortschrittsleiste mit dem Wiedergabebestand eines Videos. Es war mehr Spaß als erwartet.

Die HTML

Reines HTML5:

<video src="http://html5videoformatconverter.com/data/images/happyfit2.mp4"></video>
<figcaption>
  ► <button id="play">►</button>
  <progress id="progress" max="100" value="0">Fortschritt</progress>
  <label for="progress" id="timer" role="timer"></label>
</figcaption>

Der<progress></progress> Das Element ist der Schlüssel: max="100" legt den Maximalwert fest, und value="0" initialisiert ihn auf Null und repräsentiert 0% Fortschritt.

CSS -Styling

Ich werde Pankajs ausgezeichnete CSS nicht wieder aufbauen, aber hier ist der Code für die Gradienten-Fortschrittsbalken, um die Kompatibilität des Cross-Browsers sicherzustellen:

 Fortschritt [Wert] {
  Aussehen: Keine; / * Safari */
  Grenze: Keine; / * Firefox */
  Farbe: #e52e71; /* Zurückgreifen */
}

Fortschritt [Wert] ::-Webkit-Programm-Wert {
  Hintergrund-Image: Linear-Gradient (rechts, #ff8a00, #e52e71);
  Übergang: Breite 1s linear;
}

Fortschritt [Wert] ::-Moz-Progress-Bar {
  Hintergrund-Image: -moz-linear-Gradient (rechts, #ff8a00, #e52e71);
}

JavaScript: Verbinden der Punkte

Das JavaScript umfasst folgende Schritte:

  1. Aktuelle Videozeit und Dauer erhalten: video.currentTime und video.duration .
  2. Berechnen Sie den Fortschrittsprozentsatz: (currentTime / duration) * 100 .
  3. Aktualisieren Sie den Fortschrittsbalkenwert: progress.value = roundedPercentage .
  4. Zeigen Sie verstrichene Zeit an: Aktualisieren Sie ein Timer -Element.

Hier ist der raffinierte Code, der das staatliche Management und requestAnimationFrame für eine bessere Leistung enthält (dank der wertvollen Eingaben von Neal Fennimore):

 const Video = document.querySelector ('Video');
const progress = document.getElementById ('progreshing');
const timer = document.getElementById ('Timer');
const button = document.getElementById ('Play');

const pausiert = 'pausiert';
const spiele = 'spiele';
lass state = pausiert;

Funktion progresorloop () {
  if (state === spielt) {
    progress.Value = math.round ((Video.CurrentTime / Video.Duration) * 100);
    timer.innerhtml = math.round (Video.CurrentTime) 'Sekunden';
    RequestAnimationFrame (ProgressLoop);
  }
}

Funktion onplay () {
  Zustand = Spielen;
  ProgressLoop ();
  button.innerhtml = "❙❙";
}

Funktion onPause () {
  state = pausiert;
  button.innerhtml = "►";
}

Funktion onclick () {
  if (state === pausiert) {
    Video.play ();
  } anders {
    Video.pause ();
  }
}

Video.AdDeVentListener ('Play', Onplay);
Video.AdDeVentListener ('Pause', Onpause);
Button.AdDeVentListener ('Click', Onclick);

Dieser Code aktualisiert effizient die Fortschrittsleiste und den Timer und bietet eine reibungslose, reaktionsschnelle Benutzererfahrung. Die Hinzufügung einer Play/Pause -Taste verbessert die Benutzerfreundlichkeit, während die staatliche Verwaltung und Verwendung von requestAnimationFrame eine saubere und leistungsfähige Implementierung gewährleistet. Und ja, ich habe das Trainingsvideo -Quiz gegründet!

Das obige ist der detaillierte Inhalt vonEin unschuldiger Spaß mit HTML -Video und Fortschritt. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Eine kleine Erinnerung daran, dass Pseudoelemente Kinder sind.Eine kleine Erinnerung daran, dass Pseudoelemente Kinder sind.Apr 19, 2025 am 11:39 AM

Hier ist ein Container mit einigen Kinderelementen:

Menüs mit 'dynamischen Trefferbereichen'Menüs mit 'dynamischen Trefferbereichen'Apr 19, 2025 am 11:37 AM

Flyout -Menüs! Das zweite, das Sie für ein Menü implementieren müssen, das ein Hover -Ereignis verwendet, um mehr Menüelemente anzuzeigen. Zum einen sollten sie

Verbesserung der Video -Zugänglichkeit mit WebVTTVerbesserung der Video -Zugänglichkeit mit WebVTTApr 19, 2025 am 11:27 AM

"Die Kraft des Web liegt in seiner Universalität. Zugang von allen unabhängig von Behinderung ist ein wesentlicher Aspekt."- Tim Berners-Lee

Wöchentliche Plattform News: CSS :: Marker Pseudo-Element, Vorrendern von Webkomponenten, Hinzufügen von Webmenting zu Ihrer WebsiteWöchentliche Plattform News: CSS :: Marker Pseudo-Element, Vorrendern von Webkomponenten, Hinzufügen von Webmenting zu Ihrer WebsiteApr 19, 2025 am 11:25 AM

In der Roundup:#039: DatePickers geben Tastaturbenutzer Kopfschmerzen, einen neuen Webkomponenten -Compiler, der bei der Bekämpfung von Fouc hilft.

Breite und flexible Gegenstände gut zusammen spielenBreite und flexible Gegenstände gut zusammen spielenApr 19, 2025 am 11:23 AM

Die kurze Antwort: Flex-Shrink und Flex-Basis sind wahrscheinlich das, worauf Sie suchen.

Positionieren Sie klebrige und TischkopfzeilePositionieren Sie klebrige und TischkopfzeileApr 19, 2025 am 11:21 AM

Sie können nicht positioniert werden: klebrig; A

Wöchentliche Plattformnachrichten: HTML -Inspektion in der Suchkonsole, globaler Umfang von Skripten, Babel Env fügt Standardabfrage hinzuWöchentliche Plattformnachrichten: HTML -Inspektion in der Suchkonsole, globaler Umfang von Skripten, Babel Env fügt Standardabfrage hinzuApr 19, 2025 am 11:18 AM

In der Welt der Web -Plattform -Nachrichten, in der die Google Search Console in der Welt der Web -Plattform -News -Such -Markup umgeht, lernen wir, dass benutzerdefinierte Eigenschaften einfacher werden können

IndieWeb und WebmentionsIndieWeb und WebmentionsApr 19, 2025 am 11:16 AM

Das IndieWeb ist eine Sache! Sie haben eine Konferenz und alles bekommen. Der New Yorker schreibt sogar darüber:

See all articles

Heiße KI -Werkzeuge

Undresser.AI Undress

Undresser.AI Undress

KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover

AI Clothes Remover

Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool

Undress AI Tool

Ausziehbilder kostenlos

Clothoff.io

Clothoff.io

KI-Kleiderentferner

AI Hentai Generator

AI Hentai Generator

Erstellen Sie kostenlos Ai Hentai.

Heiße Werkzeuge

Notepad++7.3.1

Notepad++7.3.1

Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 Mac-Version

SublimeText3 Mac-Version

Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Dreamweaver Mac

Dreamweaver Mac

Visuelle Webentwicklungstools

WebStorm-Mac-Version

WebStorm-Mac-Version

Nützliche JavaScript-Entwicklungstools

Senden Sie Studio 13.0.1

Senden Sie Studio 13.0.1

Leistungsstarke integrierte PHP-Entwicklungsumgebung