Skip to content
Youths Forum Youths Forum Youths Forum

Tech Blogs & Programming Tutorials

Youths Forum Youths Forum Youths Forum

Tech Blogs & Programming Tutorials

  • Blog
  • News
  • Programming
    • PHP
    • JavaScript
    • JQuery
    • CSS
    • HTML
    • API
  • Stock Market Live
  • Janma Kundali
  • Gadgets
    • Phones
    • Android Phones

Categories

  • Artificial Intelligence (1)
  • Automobiles (12)
    • Cars (7)
  • Blog (107)
    • Poems (2)
    • Space (2)
  • Command (2)
  • Education (2)
  • Entertainment (4)
  • Gadgets (9)
    • Phones (8)
      • Android Phones (4)
  • HTML Templates (11)
  • IT Training Institutes (1)
  • Lifestyle (4)
  • News (396)
  • Others (23)
  • Programming (296)
    • API (16)
    • CSS (83)
    • Database (4)
    • Hosting (1)
    • HTML (37)
    • JavaScript (117)
      • JQuery (27)
      • ReactJS (7)
    • PHP (116)
  • Python (3)
  • recipes (1)
  • SEE Result (1)
  • Server (3)
  • Blog
  • News
  • Programming
    • PHP
    • JavaScript
    • JQuery
    • CSS
    • HTML
    • API
  • Stock Market Live
  • Janma Kundali
  • Gadgets
    • Phones
    • Android Phones
Close

Search

CSSJQuery

Create Custom Music Player using HTML, CSS and JavaScript

By Admin
February 12, 2021 3 Min Read
0

In this article, we are going to learn to develop a custom music player using HTML, CSS and JavsScript (preferably JQuery).

Full Source Code :

<!DOCTYPE html>
<html lang="en" dir="ltr">
  <head>
    <meta charset="utf-8">
    <script src="https://kit.fontawesome.com/a062562745.js" crossorigin="anonymous"></script>
    <title>MP3 Player</title>
  	<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.5.1/jquery.min.js"></script>
  </head>
<style>
body{
  background-color: #2d2d2d;
  color: #ffc266;
  font-family: 'Roboto', sans-serif;
}
#myProgress {
  width: 420px;
   background-color: #d9d9f2; 
  cursor: pointer;
  border-radius: 10px;
}

#myBar {
  width: 0%;
  height: 5px;
  background-color: #ffc266;
  border-radius: 10px;
}

.logo {
  fill: red;
}

.btn-action{
  cursor: pointer;
  padding-top: 10px;
  width: 30px;
}

.btn-ctn, .infos-ctn{
  display: flex;
  align-items: center;
  justify-content: center;
}
.infos-ctn{
padding-top: 20px;
}

.btn-ctn > div {
 padding: 5px;
 margin-top: 18px;
 margin-bottom: 18px;
}

.infos-ctn > div {
 margin-bottom: 8px;
 color: #ffc266;
}

.first-btn{
  margin-left: 3px;
}

.duration{
  margin-left: 10px;
}

.title{
  margin-left: 10px;
  width: 210px;
  text-align: center;
}

.player-ctn{
  border-radius: 15px;
  width: 420px;
  padding: 10px;
  background-color: #373737;
  margin:auto;
  margin-top: 100px;
}

.playlist-track-ctn{
  display: flex;
  background-color: #464646;
  margin-top: 3px;
  border-radius: 5px;
  cursor: pointer;
}
.playlist-track-ctn:last-child{
  /*border: 1px solid #ffc266; */
}

.playlist-track-ctn > div{
  margin:10px;
}
.playlist-info-track{
  width: 80%;
}
.playlist-info-track,.playlist-duration{
  padding-top: 7px;
  padding-bottom: 7px;
  color: #e9cc95;
  font-size: 14px;
  pointer-events: none;
}
.playlist-ctn{
   padding-bottom: 20px;
}
.active-track{
  background: #4d4d4d;
  color: #ffc266 !important;
  font-weight: bold;
  
}

.active-track > .playlist-info-track,.active-track >.playlist-duration,.active-track > .playlist-btn-play{
  color: #ffc266 !important;
}


.playlist-btn-play{
  pointer-events: none;
  padding-top: 5px;
  padding-bottom: 5px;
}
.fas{
  color: #ffc266;
  font-size: 20px;
}
.file-select center{
  display: flex;
    align-items: center;
    justify-content: center;
    width: 420px;
    background: #555;
    padding: 10px 0px;
    margin: 0 auto;
    cursor: pointer;
}
.files{
  display: none;
}

/* width */
::-webkit-scrollbar {
  width: 10px;
}

/* Track */
::-webkit-scrollbar-track {
  box-shadow: inset 0 0 5px grey; 
  border-radius: 10px;
}
 
/* Handle */
::-webkit-scrollbar-thumb {
  background: #111; 
  border-radius: 10px;
}

/* Handle on hover */
::-webkit-scrollbar-thumb:hover {
  background: #222; 
}
.timer{
  width:100%;
}
.title{
  text-align: center;
    width: 540%;
}
</style>




<div class="player-ctn">
  <div class="infos-ctn">
    <div class="timer">00:00</div>
    <div class="title"></div>
    <div class="duration">00:00</div>
  </div>
  <div id="myProgress">
    <div id="myBar"></div>
  </div>
  <div class="btn-ctn">
     <div class="btn-action first-btn" onclick="previous()">
        <div id="btn-faws-back">
          <i class='fas fa-step-backward'></i>
        </div>
     </div>
     <div class="btn-action" onclick="rewind()">
        <div id="btn-faws-rewind">
          <i class='fas fa-backward'></i>
        </div>
     </div>
     <div class="btn-action" onclick="toggleAudio()">
        <div id="btn-faws-play-pause">
          <i class='fas fa-play' id="icon-play"></i>
          <i class='fas fa-pause' id="icon-pause" style="display: none"></i>
        </div>
     </div>
     
     <div class="btn-action" onclick="forward()">
        <div id="btn-faws-forward">
          <i class='fas fa-forward'></i>
        </div>
     </div>
     <div class="btn-action" onclick="nextSong()">
        <div id="btn-faws-next">
          <i class='fas fa-step-forward'></i>
        </div>
     </div>
     <div class="btn-mute" id="toggleMute" onclick="toggleMute()">
        <div id="btn-faws-volume">
          <i id="icon-vol-up" class='fas fa-volume-up'></i>
          <i id="icon-vol-mute" class='fas fa-volume-mute' style="display: none"></i>
        </div>
     </div>
  </div>
  <div class="file-select">
  <center>Select mp3 Files to Play</center>

</div>
  <div class="playlist-ctn" id="songs-list"></div>
</div>

  </body>
</html>



<input type="file" class="files" accept=".mp3,audio/*" multiple>

<audio src="" id="player"></audio>


<script>
  $('.files').on('change', function(e) {
    var target = e.currentTarget;
    var files = target.files;
    songs = [];
    for(var i=0;i<files.length;i++){
      src = URL.createObjectURL(files[i]);
      temp = {};
      temp.name = files[i].name;
      temp.src = src;
      songs.push(temp);
    }
    setSongs(songs);
  });


  function setSongs(songs){
    html = '';
    for(var i=0;i<songs.length;i++){
      html += '<div data-src="'+songs[i].src+'" class="playlist-track-ctn" id="ptc-'+i+'" data-index="'+i+'"><div class="playlist-btn-play" id="pbp-'+i+'"><i class="fas fa-play" height="40" width="40" id="p-img-'+i+'" aria-hidden="true"></i></div><div class="playlist-info-track">'+songs[i].name+'</div></div>';
    }
    $("#songs-list").append(html);
  }

  $(document).on('click','#songs-list .playlist-track-ctn',function(){
    src = $(this).attr('data-src');
    play(src);
  });

  function formatNumber(num){
    if(num<10){
      return '0'+num;
    }
    return num;
  }

  function setDuration(seconds){
    time = $("#player")[0].duration;
    minutes = Math.floor(time / 60);
    seconds = parseInt(time - minutes * 60);
    $(".duration").html(formatNumber(minutes)+':'+formatNumber(seconds));
  }
  audio = document.getElementById('player');

  audio.addEventListener("ended", function(){
    audio.currentTime = 0;
    audio.play();
  });


  audio.addEventListener('timeupdate',function(){
      currentTime = audio.currentTime;
      percent = (currentTime/$("#player")[0].duration)*100;
      document.getElementById("myBar").style.width = percent + "%";
      currentTime = document.getElementById('player').currentTime;
      minutes = Math.floor(currentTime / 60);
    seconds = parseInt(currentTime - minutes * 60);
    $(".timer").html(formatNumber(minutes)+':'+formatNumber(seconds));
  },false);

  function play(src){
    $("#player").attr('src',src);
    $("#player")[0].play();
    $("#icon-play").hide();
    $("#icon-pause").show();
    $(".playlist-track-ctn").removeClass('active-track');
    $(".playlist-track-ctn[data-src='"+src+"']").addClass('active-track');
    $(".title").html($(".playlist-track-ctn.active-track").text());
    setTimeout(function(){
      setDuration();
    },1000);
  }

  function nextSong(){
    current = $(".active-track");
    next = current.next('.playlist-track-ctn');
    next.click();
  }

  function previous(){
    current = $(".active-track");
    next = current.prev('.playlist-track-ctn');
    next.click();
  }

  function toggleAudio() {
    var audioElem = document.getElementById('player');
    if(audioElem.getAttribute('data-src')==''){
      $("#songs-list .playlist-track-ctn:first").click();
    }
    else{
      if (audioElem.paused){
        audioElem.play();
        $("#icon-play").hide();
        $("#icon-pause").show();
      }
      else{
        audioElem.pause();
        $("#icon-play").show();
        $("#icon-pause").hide();
      }
    }
  }

  function toggleMute() {
    var audioElem = document.getElementById('player');
    if (audioElem.muted){
      audioElem.muted = false;
      $("#icon-vol-up").show();
      $("#icon-vol-mute").hide();
    }
    else{
      audioElem.muted = true;
      $("#icon-vol-up").hide();
      $("#icon-vol-mute").show();
    }
  }


  var progressbar = document.querySelector('#myProgress');
  	progressbar.addEventListener("click", seek.bind(this));


  	function seek(event) {
      var percent = event.offsetX / progressbar.offsetWidth;
      $("#player")[0].currentTime = percent * $("#player")[0].duration;
      document.getElementById("myBar").style.width = percent*100 + "%";
    }

  $(".file-select center").click(function(){
    $(".files").click();
  });

  function forward(){
    var percent = parseInt(document.getElementById("myBar").style.width);
    total = $("#player")[0].duration;
    increase_percent = (100/total)*5;
      $("#player")[0].currentTime = $("#player")[0].currentTime + 5;
      document.getElementById("myBar").style.width = percent+5 + "%";
  }

  function rewind(){
    var percent = parseInt(document.getElementById("myBar").style.width);
    total = $("#player")[0].duration;
    increase_percent = (100/total)*5;
      $("#player")[0].currentTime = $("#player")[0].currentTime - 5;
      document.getElementById("myBar").style.width = percent-5 + "%";
  }
</script>

 

Design Reference : https://codepen.io/vanderzak/pen/BayjVep

Follow this video for complete guidance :

Tags:

CSSHTMLmusic player
Author

Admin

Follow Me
Other Articles
Previous

Create an Analog Clock using HTML, CSS and jQuery

Next

Better be Late than Regret

No Comment! Be the first one.

Leave a Reply

Your email address will not be published. Required fields are marked *

Recent Posts

  • What REALLY Happens When You Type a URL and Press Enter?
  • Balen Shah UN Speech 2026: Full Text & Audio UN General Assembly
  • inDrive Provides Safe Driving Training and Certificates to 1,500+ Driver Partners in Nepal
  • NEPSE’s Data Center Faces Technical Issue: Today’s Share Trading Suspended
  • KIST Teaching Hospital Ranks First in Public Health Office’s Evaluation

Tags

adsense ai animation animation using HTML and CSS API blog calculator chatgpt clock Cryptocurrency CSS css animation custom file manager Cyber Security design Email Facebook featured filemanager free template google htaccess HTML image Instagram interview javascript JQuery NADA AutoShow NADA Auto Show 2024 password PHP Progressive Web App QR random react reactjs Rotate seo travel Twitter vpn youthforum youthsforum youtube

About Us

At Youths Forum, we are passionate about sharing knowledge that empowers students, educators, professionals, and technology enthusiasts.

Our Mission

Our mission is simple: to make technology and education accessible, understandable, and beneficial for everyone. We strive to create content that helps our readers learn new skills and stay updated with industry developments.

RSS RSS

  • What REALLY Happens When You Type a URL and Press Enter? Admin
  • Balen Shah UN Speech 2026: Full Text & Audio UN General Assembly Admin
  • inDrive Provides Safe Driving Training and Certificates to 1,500+ Driver Partners in Nepal Admin

Quick Links

  • Stock Market Live
  • Parliament Election 2082
Copyright 2026 — Youths Forum. All rights reserved. Blogsy WordPress Theme