首页 > 编程语言 >如何使用TailwindCSS和JavaScript构建自定义的HTML5视频播放器

如何使用TailwindCSS和JavaScript构建自定义的HTML5视频播放器

时间:2024-02-15 18:55:06浏览次数:21  
标签:播放器 视频 自定义 JavaScript video HTML5 按钮 播放 我们

HTML5自带了一个原生视频播放器。它在浏览器中配备了简单的用户界面、功能和一些基本的控件。尽管通过浏览器的默认视频播放器的功能完美运行,但用户界面并不那么美观和时尚,总体上并不令人满意。

因此,大多数现代Web应用程序和平台,如Udemy、Netflix、YouTube和Amazon Prime,不会将默认内置的HTML5视频播放器提供给他们的用户。相反,他们会构建自己定制的版本,具有时尚的用户界面,使其平台更具吸引力和用户友好性。

如果你曾经好奇这些公司和Web平台是如何完成这样的壮举的,那么本文就是为你而写的。

在按照逐步指南进行操作时,您将获得一些实践经验,该指南将教您如何构建和自定义自己的HTML5视频播放器。您将学习如何自定义用户界面、扩展功能,并构建自己的出色的自定义控件和功能。

您还将学习如何仅使用浏览器中提供的原生Video API来构建所有这些功能——无需外部库或工具。

(本文内容参考:java567.com)

先决条件

  • HTML5和CSS的基本知识
  • Tailwind CSS的基本知识
  • JavaScript的基本知识(ES6)
  • 您选择的代码编辑器
  • 支持JavaScript现代功能的浏览器(例如Chrome或Mozilla Firefox)

入门

在本文中,我们将使用Tailwind CSS作为样式工具来构建自定义视频播放器UI。我们还将使用JavaScript来构建控件的功能。

请注意,使用Tailwind CSS是可选的,因为任何样式工具都可以在这里使用,如SCSS、CSS、styled-components等——完全取决于您。

我将本教程分为不同的部分,每个部分都涉及自定义视频播放器功能的特定方面。每个新部分都将在前面的基础上构建,以完成播放器。在本文结束时,您将拥有一个完全功能的HTML5自定义视频播放器。

在本教程中,我们将集中讨论视频播放器的特定功能。这些功能将为您提供构建其他功能的机会和思路。我们将涵盖的功能有:

  • 播放和暂停
  • 快退和快进
  • 静音和取消静音
  • 视频搜索
  • 键盘导航(利用空格键进行播放和暂停,箭头键进行快退和快进)。

我们不会在此处讨论响应式设计,因为我们不会专注于制作视频播放器移动响应式。这种省略应该为您提供挑战和学习机会。

现在,让我们深入了解如何设置开发环境,以便我们可以开始构建。

如何设置开发环境

最初的步骤是设置一个高效的开发环境,以确保平稳的工作流程。我们将使用Vite来实现这一目的。

在继续本节的下一部分之前,请确保您的计算机上已安装了NodeJS和NPM或Yarn,因为它们对于无缝安装工具和设置开发环境是必需的。

如何使用Vite设置项目

要在Vite中创建一个项目,打开您的终端并键入以下命令:

yarn create vite

Vite将指导您配置和选择适合您开发环境的工具。

第一步是选择项目名称——您可以自由选择任何喜欢的名称。在本文中,我将使用"html5-video-player"作为项目名称。

终端运行'yarn create vite'命令后的输出

接下来,选择项目框架。本项目将使用纯JavaScript编写,因此选择"Vanilla",然后在下一个提示中选择"JavaScript"。

输入项目名称后的终端输出

选择'Vanilla'框架后的终端输出

现在,Vite已成功使用所选工具设置了您的环境。现在是时候安装Vite正常运行所需的依赖项了。按照Vite在CLI中提供的说明操作。

在运行下面的命令之前,如果您的项目名称与我的相同,请确保完全按照以下命令。如果您选择了其他名称,只需将我的项目名称替换为您的名称,然后以相同的方式继续。

cd html5-video-player

此命令将导航到项目目录,您的开发环境将驻留在那里。然后,您可以继续安装依赖项。

yarn

安装完成依赖项后,我们继续下一步,即设置Tailwind CSS作为我们的样式工具。此过程与设置Vite类似,非常简单。

打开您的终端,并执行

以下命令:

yarn add -D tailwindcss postcss autoprefixer

这将安装Tailwind CSS,我们的样式工具,以及PostCSS和Autoprefixer。这些工具将帮助Tailwind CSS在您的项目中有效地运行。

接下来的命令涉及设置Tailwind CSS和PostCSS的配置文件。

再次打开您的本地终端,并键入以下命令:

npx tailwindcss init

创建Tailwind CSS配置文件。

如命令消息中所述,将在项目文件夹的根目录生成一个名为tailwind.config.js的文件。该文件将包含用于样式的配置,包括字体、颜色、插件等设置。有关详细信息,请参阅TailwindCSS文档。

打开您的代码编辑器中生成的Tailwind CSS配置文件,并对其进行以下编辑:

/** @type {import('tailwindcss').Config} */
export default {
  content: ['./index.html'],
  theme: {
    extend: {},
  },
  plugins: [],
}

在这里,我们简单地编辑了content键,以指定TailwindCSS应读取Tailwind CSS类的文件。这个文件恰好是index.html文件,我们将在其中进行主要工作。

接下来,您需要配置PostCSS,它没有像TailwindCSS那样的自动化设置命令。因此,您需要手动创建配置文件。导航到项目的根目录,创建一个名为postcss.config.js的文件。

创建postcss.config.js文件后,只需将提供的代码片段复制并粘贴到文件中。

export default {
  plugins: {
    tailwindcss: {},
    autoprefixer: {},
  },
};

接下来,配置您的style.css文件以使用Tailwind CSS默认值。这样可以避免手动设置CSS默认值的繁琐任务。

打开您的代码编辑器中的style.css文件,删除其内容,然后将以下代码片段粘贴到文件中:

@tailwind base;
@tailwind components;
@tailwind utilities;

删除不必要的文件和代码

由Vite生成的文件主要用作添加您自己的文件和有效使用打包器的指南。因此,您可以删除大部分文件,因为它们对于此项目是不必要的。

以下是要从项目中删除的文件:

  1. counter.js
  2. javascript.svg

完成后,您可以继续进行本节的下一步,即删除不必要的代码。

打开位于项目根目录的main.js文件,并删除其中的所有代码。

然后,导航到index.html文件,并删除其当前的所有内容。之后,将以下代码片段复制并粘贴到文件中:

<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="UTF-8" />
    <link rel="icon" type="image/svg+xml" href="/vite.svg" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <link rel="stylesheet" href="./style.css" />
    <title>HTML5 Custom Video Player</title>
  </head>
  <body>
    <h1 class="text-3xl font-bold underline text-red-800">Hello world!</h1>
    <script type="module" src="/main.js"></script>
  </body>
</html>

至此,您已经完成了此部分!您的开发环境现在已设置好,可以开始构建您的自定义HTML5视频播放器了。

要确认您的环境是否已正确设置,请检查以下内容:

  1. 项目文件和文件夹应该类似于以下结构:

设置完成的项目:Visual Studio Code显示项目结构。

  1. 打开您的终端并运行以下命令:
yarn dev

这将创建一个开发服务器,您的网页将托管在其中。打开Vite提供的URL。

使用'yarn dev'命令启动Vite开发服务器。

打开链接http://localhost:5173/,您应该看到以下内容:

执行'yarn dev'命令后显示的初始用户界面。

恭喜!您已经成功完成了此部分,设置了您的开发环境,这将使我们能够在构建自定义HTML5视频播放器时有效地工作。

故障排除:如果您发现您的设置不如预期的那样工作,请不要担心。只需删除项目文件夹并重复该过程。您可能错过了一些步骤,或者某些工具可能没有正确安装。此外,请仔细检查您的Tailwind CSS和PostCSS配置文件,确保它们包含如上所示的正确代码。

如何使用Tailwind CSS构建自定义UI

本节涵盖了构建自定义HTML5视频播放器UI所需的所有样式。我们将逐步了解这个过程。

首先,将以下链接标签复制并粘贴到您的HTML头部,放在样式表链接之前:

<link
  href="https://fonts.googleapis.com/icon?family=Material+Icons"
  rel="stylesheet"
/>

这使我们能够使用Materialize CSS图标,在UI中对我们的按钮进行样式设置是必不可少的。

接下来,让我们专注于在我们的标记中为视频元素添加样式。只需将body元素替换为以下提供的代码片段:

<body class="bg-indigo-950 p-10">
  <div
    id="container"
    class="w-4/5 h-4/5 mx-auto rounded-lg overflow-hidden relative group"
  >
    <!-- VIDEO -->
    <figure>
      <video class="w-full">
        <source src="/your-video.mp4" />
      </video>
    </figure>
  </div>
  <script type="module" src="/main.js"></script>
</body>

提供的代码片段包括用于视频元素的标记和样式,以及作为整个视频播放器UI容器的外部div。视频元素嵌套在figure元素内。

对于source元素,请指

定要播放的视频的路径。您可以在线查找视频,下载它们,并将它们添加到项目文件夹中的"public"目录中。然后,将source元素的src属性链接到视频文件。您可以在此处找到可下载的免费视频。

接下来,让我们使用您在HTML中链接的Materialize CSS图标来为控件添加样式。将以下代码片段放置在body元素内figure元素之后。

<!-- CONTROLS -->
<div
  id="controls"
  class="opacity-0 p-5 absolute bottom-0 left-0 w-full transition-opacity duration-300 ease-linear group-hover:opacity-100"
>
  <!-- PROGRESS BAR -->
  <div id="progress-bar" class="h-1 w-full bg-white cursor-pointer mb-4">
    <div
      id="progress-indicator"
      class="h-full w-9 bg-indigo-800 transition-all duration-500 ease-in-out"
    ></div>
  </div>
  <div class="flex items-center justify-between">
    <div class="flex items-center justify-between">
      <!-- REWIND BUTTON -->
      <button
        id="rewind"
        class="transition-all duration-100 ease-linear hover:scale-125"
      >
        <i class="material-icons text-white text-3xl w-12">replay_10 </i>
      </button>

      <!-- PLAY BUTTON -->
      <button
        id="play-pause"
        class="transition-all duration-100 ease-linear hover:scale-125"
      >
        <i class="material-icons text-white text-5xl inline-block w-12"
          >play_arrow</i
        >
      </button>

      <!-- FAST FORWARD BUTTON -->
      <button
        id="fast-forward"
        class="transition-all duration-100 ease-linear hover:scale-125"
      >
        <i class="material-icons text-white text-3xl w-12">forward_10 </i>
      </button>
    </div>

    <div>
      <!-- VOLUME BUTTON -->
      <button
        id="volume"
        class="transition-all duration-100 ease-linear hover:scale-125"
      >
        <i class="material-icons text-white text-3xl">volume_up</i>
      </button>
    </div>
  </div>
</div>

此代码片段定义了视频播放器的各种功能控件的布局和行为。它首先设置一个容器div(

),其中包含所有控制元素。容器最初是不可见的(opacity-0),当用户悬停在上面时(group-hover:opacity-100)会以平滑的过渡(transition-opacity duration-300 ease-linear)变为可见。

在容器内,有一个用于跟踪视频进度的进度条(

)。它由一个白色背景条(bg-white)和一个颜色为靛蓝色(bg-indigo-800)的可移动指示器()组成。进度条是响应式的,允许用户跳转到视频的不同部分。

在进度条下方是用于各种功能的控制按钮。倒带、播放/暂停和快进按钮在一个灵活的容器内(

)。每个按钮(

标签:播放器,视频,自定义,JavaScript,video,HTML5,按钮,播放,我们
From: https://www.cnblogs.com/web-666/p/18016479

相关文章

  • 如何在 JavaScript 中使用大于和小于运算符
    在你的JavaScript程序中,你经常需要比较两个值,以确定一个是否大于另一个或小于另一个。这就是大于和小于运算符派上用场的地方。在本文中,我们将通过代码示例更详细地介绍如何使用这些运算符。(本文内容参考:java567.com)如何在JavaScript中使用大于运算符>你可以使用大于运算......
  • 在JavaScript中的防抖函数 - 通过在React中构建自动完成功能来解释
    当你将一个新应用推向生产环境时,你希望确保它用户友好。网站的性能是用户体验的关键部分。每个用户都希望网站及其内容能够快速加载。每一秒都是宝贵的,可能导致用户再也不会访问你的网站。在本指南中,我们将了解JavaScript中一个非常重要的技术,即防抖函数。然后,我将向您展示如何在......
  • JavaScript中的querySelector()方法是什么,它是如何工作的?
    在JavaScript中,有时您需要访问HTML元素。querySelector方法是一个WebAPI,它选择与传入的指定CSS选择器匹配的第一个元素。但是,更详细地说,这是如何工作的呢?在本文中,我们将看一些如何使用querySelector方法以及querySelectorAll方法的示例。(本文内容参考:java567.com)querySelector......
  • javascript export default
    概述exportdefault每个js文件或组件,只能有一个;import的时候,不加花括号。其余的,可以多个export,import的时候需要加花括号。示例test.jsvarinfo={name:'zs',age:20}exportvarname1='张三'exportfunctionf1(){return'王五'}varname2='李四'functi......
  • javascript import export 简单示例
    概述import是ES6引入的新特性,它允许你以声明式的方式导入其他模块中的内容。require是Node.js中的特性,它允许你使用一个函数来加载和导入其他模块。使用方法utils.jsexportconstadd=(a,b)=>a+b;exportconstsubtract=(a,b)=>a-b; index.jsimport*asutilsfrom......
  • 短路在JavaScript中是如何工作的?
    在JavaScript中,理解真实和虚假的值是编写高效简洁代码的基础。结合短路的概念,开发人员可以编写优雅的解决方案来应对常见的编程挑战。在本实践指南中,我们将探讨真实值和虚假值,并了解JavaScript中短路的机制。您可以从这里获取所有源代码。(本文内容参考:java567.com)目录了......
  • 如何在 JavaScript 中比较两个日期 – 技术、方法和最佳实践
    在JavaScript中,您可以使用date对象有效地处理应用程序中的日期、时间和时区。Date对象可帮助您有效地操作数据、处理各种与日期相关的任务,并在创建实际应用程序时执行一些计算。(本文内容参考:java567.com)在本文中,我们将了解以下主题:日期比较概述日期比较在JavaScript......
  • C++ map自定义比较函数遵守严格弱序
    C++map自定义比较函数遵守严格弱序问题背景及定位背景:这个问题是在将tablesaw(一个Java的数据处理项目)迁移到C++时出现的。问题位置:SplitOn()函数,在数据流水线中的aggregate阶段。问题描述:使用google/benchmark进行了批量化的性能测试,在测试中出现偶发性段错误,几率大约在万分......
  • jvm shutdownHook + spring 自定义事件实现业务处理
    jvm的shutdownHook可以实现对于jvm退出的一些处理,比如资源清理,异常事件通知,spring自定义事件(或者使用内部的)可以实现bean的一些事件驱动处理,两个结合起来可以方便我们进行一些业务处理一些业务场景资源清理服务停止业务状态一致性补偿服务注册场景中的取消注册服务停......
  • p5js: JavaScript 创意绘画
    p5js是一个免费开源的Javascript创意绘画工具,通过p5js可以实现代码绘画01鼠标变色鼠标触发绘画区域,即马上变色,松开恢复functionsetup(){createCanvas(400,400);//设置画布大小}functiondraw(){if(mouseIsPressed)//被鼠标触发{background(255,51,......