运用js教你轻松制作html音乐播放器

运用JS教你轻松制作HTML音乐播放器

1. HTML结构

为了实现一个音乐播放器,我们需要先理解音乐播放器的基本结构。

<div class="player">
  <div class="cover"></div>
  <audio src="music.mp3"></audio>
  <div class="controls">
    <button class="play-pause"></button>
    <button class="stop"></button>
    <input type="range" min="0" max="100" step="1" value="0" class="seek-bar">
  </div>
</div>
  • 最外层div标签类名为player,用于确定整个播放器的容器。
  • 播放器中心部分为音乐封面和播放器控件构成的div,类名为controls。
  • 播放/暂停按钮使用button标签并设置类名为play-pause。
  • 停止按钮使用button标签并设置类名为stop。
  • 时间进度条使用input标签,设置type为range,并设置类名为seek-bar。

2. CSS样式

通过为每个部分添加CSS样式,我们可以利用CSS使播放器尽可能好看,同时也增加了使用体验。

.player {
  width: 300px;
  height: 300px;
  border: 1px solid #ccc;
  position: relative;
}

.cover {
  width: 150px;
  height: 150px;
  position: absolute;
  top: 50%;
  left: 50%;
  transform: translate(-50%, -50%);
  background-image: url(cover.jpg);
  background-repeat: no-repeat;
  background-size: cover;
  z-index: 10;
}

.controls {
  width: 100%;
  height: 100px;
  position: absolute;
  bottom: 0;
  background-color: rgba(0, 0, 0, 0.6);
  display: flex;
  justify-content: space-around;
  align-items: center;
}

.play-pause, .stop {
  width: 50px;
  height: 50px;
  border: none;
  background-color: #eee;
  border-radius: 50%;
  font-size: 20px;
  color: #333;
  cursor: pointer;
}

.play-pause:before {
  content: "\23f5";
}

.stop:before {
  content: "\25A0";
  position: relative;
  top: -2px;
}

.playing .play-pause:before {
  content: "\23f8";
}

.seek-bar {
  width: 80%;
}
  • 设置播放器的基本尺寸,边框和位置样式。
  • 调整封面的位置和大小,添加背景图片,设置层级关系,使其靠前显示。
  • 控件部分的背景颜色设置为半透明黑色,调整位置和大小,使用flex布局排列按钮和进度条。

3. 使用JS添加播放器功能

在HTML和CSS部分构建完成后,我们需要使用JS来完成我们的音乐播放器。

3.1 获取DOM元素

首先,我们需要获取HTML元素,这样我们才能使用它们添加播放器功能。

const playButton = document.querySelector('.play-pause');
const stopButton = document.querySelector('.stop');
const audioTrack = document.querySelector('audio');
const progressBar = document.querySelector('.seek-bar');

  • 获取播放/暂停按钮,停止按钮,音轨和进度条DOM元素。

3.2 播放/暂停功能

我们需要一个函数来控制播放/暂停按钮。

function togglePlayPause() {
  if (audioTrack.paused) {
    audioTrack.play();
    playButton.classList.add('playing');
  } else {
    audioTrack.pause();
    playButton.classList.remove('playing');
  }
}
  • 检查音乐是否被暂停了
  • 如果暂停则播放,按钮添加 playing 类
  • 否则暂停,播放按钮删除 playing 类

3.3 停止播放功能

我们需要一个函数来控制停止按钮。

function stopPlayback() {
  audio.stop();
  audio.currentTime = 0;
  playButton.classList.remove('playing');
}
  • 将音乐设置为停止状态并设置显式时间为0。

3.4 更新进度条

我们需要一个函数来更新进度条。

function updateProgressBar() {
  const progressPercent = (audioTrack.currentTime / audioTrack.duration) * 100;
  progressBar.value = progressPercent;
}
  • 计算音乐当前时间与总时间之间的百分比。

3.5 添加事件监听

接下来,需要添加事件监听来处理播放/暂停和停止按钮的点击事件,以及音轨当前时间的更新事件。

playButton.addEventListener('click', togglePlayPause);
stopButton.addEventListener('click', stopPlayback);
audioTrack.addEventListener('timeupdate', updateProgressBar);
  • 监听播放/暂停按钮是否被单击
  • 监听停止按钮是否被单击
  • 监听音乐状态是否更新

4. 示例说明

下面是使用JS制作的音乐播放器的两个示例说明:

示例1:播放器样式

.player {
  width: 300px;
  height: 300px;
}

.cover {
  width: 100%;
  height: 200px;
  top: 0%;
  left: 0%;
  transform: none;
  background-size: contain;
  background-position: center;
  z-index: 10;
}

.controls {
  width: 100%;
  height: 100px;
  position: absolute;
  bottom: 0;
  background-color: #f0f0f0;
  display: flex;
  justify-content: space-between;
  align-items: center;
}

.play-pause, .stop {
  width: 50px;
  height: 50px;
  border: none;
  background-color: #000;
  border-radius: 50%;
  font-size: 20px;
  color: #fff;
  cursor: pointer;
}

.seek-bar {
  width: 80%;
  -webkit-appearance: none;
  appearance: none;
  height: 5px;
  border-radius: 10px;
  background-color: #dbdbdb;
  outline: none;
  margin: 0px 20px;
}

.seek-bar::-webkit-slider-thumb {
  -webkit-appearance: none;
  appearance: none;
  width: 20px;
  height: 20px;
  border-radius: 50%;
  background-color: #000;
  cursor: pointer;
}

示例2:播放器功能

const playButton = document.querySelector('.play-pause');
const stopButton = document.querySelector('.stop');
const audioTrack = document.querySelector('audio');
const progressBar = document.querySelector('.seek-bar');

function togglePlayPause() {
  if (audioTrack.paused) {
    audioTrack.play();
    playButton.classList.add('playing');
  } else {
    audioTrack.pause();
    playButton.classList.remove('playing');
  }
}

function stopPlayback() {
  audio.stop();
  audio.currentTime = 0;
  playButton.classList.remove('playing');
}

function updateProgressBar() {
  const progressPercent = (audioTrack.currentTime / audioTrack.duration) * 100;
  progressBar.value = progressPercent;
}

playButton.addEventListener('click', togglePlayPause);
stopButton.addEventListener('click', stopPlayback);
audioTrack.addEventListener('timeupdate', updateProgressBar);

在实现播放器的时候,我们可以根据自己的需求修改CSS样式和JS功能,以获得更好的用户体验。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:运用js教你轻松制作html音乐播放器 - Python技术站

(0)
上一篇 2023年5月27日
下一篇 2023年5月27日

相关文章

  • jQuery UI标签启用方法

    以下是关于 jQuery UI 标签启用方法的详细攻略: jQuery UI 标签启用方法 使用 tabs() 方法可以将 HTML 元素转换为 jQuery UI 标签小部件。该方法可以接受多个项,以自定义标签的行为和外观。 语法 $(selector).tabs(options); 参数 options:一个含选项的对象,用于自定义标签的行为和外观。 示…

    jquery 2023年5月11日
    00
  • jQWidgets jqxListMenu backLabel属性

    jQWidgets jqxListMenu backLabel属性详解 jQWidgets是一个基于jQuery的UI组件库,提供了丰富UI组件和工具包。jqListMenu是组件之一。本文将详细介绍jqxListMenu的backLabel属性,包括用法、语法和示例。 backLabel的基本语法 backLabel属性的基本语法如下: $(‘#jqxLi…

    jquery 2023年5月10日
    00
  • 如何使用jQuery Mobile制作一个水平控制组

    使用jQuery Mobile制作一个水平控制组的步骤如下: 步骤一:导入jQuery Mobile 首先需要导入jQuery Mobile库,可以通过以下两种方式之一完成: 1.下载jQuery Mobile库并在页面中引入: <head> <meta charset="UTF-8"> <title>…

    jquery 2023年5月12日
    00
  • jQuery Mobile Resizable stop事件

    jQuery Mobile Resizable stop事件 jQuery Mobile Resizable是一个可调整大小的插件,它允许用户通过拖动边或角来调整元素的大小。当用户停止调整大小时,会触发stop事件。在stop事件中,我们可以执行一些操作,例如更新元素的大小或位置。 语法 以下是使用jQuery Mobile Resizable stop事件…

    jquery 2023年5月11日
    00
  • jQWidgets jqxTree collapseAll()方法

    当您需要折叠 jQWidgets jqxTree 中的所有节点时,可以使用 collapseAll() 方法。以下是 jQWidgets jqxTree collapseAll() 方法的完整攻略: jQWidgets jqxTree collapseAll() 方法 collapseAll() 方法用于折叠 jQWidgets jqxTree 中的所有节点…

    jquery 2023年5月11日
    00
  • jQuery表单对象属性过滤选择器实例详解

    jQuery表单对象属性过滤选择器实例详解 一、什么是属性过滤选择器 jQuery用于选择元素的API非常强大,属性过滤选择器就是其中的一种,支持按照元素属性值来过滤选择器集合中的元素。 jQuery属性过滤选择器常用的方法有以下几种: [attr]:选择含有指定属性名的元素 [attr=value]:选择指定属性名和属性值的元素 [attr!=value]…

    jquery 2023年5月28日
    00
  • jQuery.form.js的使用详解

    下面是关于”jQuery.form.js 的使用详解”的完整攻略: 什么是 jQuery.form.js jQuery.form.js 是一个基于 jQuery 的 AJAX 表单插件,帮助我们完成非常方便的异步表单提交和文件上传。当我们需要异步提交复杂表单或上传大文件时,就可以使用 jQuery.form.js 来简化我们的代码。 为什么选择 jQuery…

    jquery 2023年5月27日
    00
  • jQWidgets jqxDocking showAllCollapseButtons() 方法

    以下是关于“jQWidgets jqxDocking showAllCollapseButtons() 方法”的完整攻略,包含两个示例说明: 方法简介 showAllCollapseButtons() 是 jQWidgets jqxDocking 控件的方法,用于显示所有窗口的折叠按钮。该方法的语法如下: $("#jqxDocking")…

    jquery 2023年5月10日
    00
合作推广
合作推广
分享本页
返回顶部