How to add video in HTML with custom controls?
In this guide, you'll learn how to build a custom video player with tailored controls using HTML5, CSS, and JavaScript.
This allows you to go beyond the default browser controls and create a video player that aligns perfectly with your website's design and functionality needs.
Additionally, we'll cover how to customize video controls in HTML5, how to show
video controls in HTML5, and add custom controls to HTML5 video.
you can also check out these The Ultimate Guide to Adding and Customizing Videos in HTML?
What You’ll Learn
- How
to set up a basic custom video player structure.
- Adding
advanced video controls (e.g., play, pause, mute, fullscreen).
- Customizing
video controls in HTML5 for a unique experience.
- Making
your video responsive in HTML5 for any screen size.
- Creating
additional features like playback speed, volume slider, and progress bar.
- Styling
the player with CSS for a professional look.
- Implementing advanced functionalities like skip buttons, subtitles, and picture-in-picture mode.
Table of Contents
- Introduction
to Custom Video Players
- Setting
Up the Basic HTML Structure
- Adding
Core Functionality with JavaScript
- Enhancing
the User Interface with CSS
- Advanced
Features for a Pro-Grade Player
- Skip
Forward/Backward
- Subtitles
Toggle
- Loop
Video
- How
to Make Video Responsive in HTML5
- Complete
Example Code
- Conclusion
1. Introduction to Custom Video Players
Default video players in browsers are functional but lack
customization options for design and advanced features. A custom video player
lets you:
- Match
your website's design for consistency.
- Provide
an intuitive and modern interface for better user experience.
- Add
unique controls like playback speed, picture-in-picture, and more.
Want to learn how to show video controls in HTML5?
Keep reading, as we'll demonstrate that and more.
2. Setting Up the Basic HTML Structure
Here’s the foundational structure of your custom video
player:
<div class="custom-video-player">
<video id="myVideo" width="600" controls>
<source src="example.mp4" type="video/mp4">
Your browser does not support the video tag.
</video>
<div class="controls">
<button onclick="playPause()">Play/Pause</button>
<button onclick="muteVideo()">Mute/Unmute</button>
<button onclick="toggleFullscreen()">Fullscreen</button>
<input type="range" id="volumeSlider" min="0" max="1" step="0.1" onchange="changeVolume(this.value)">
</div>
</div>
Explanation:
- The
<video> element includes the controls attribute, which we'll
override for custom controls video tag HTML5 functionality.
- Controls like play/pause, mute, fullscreen, and volume are added using buttons and sliders.
3. Adding Core Functionality with JavaScript
Make the controls functional using JavaScript:
Play/Pause Functionality
const video = document.getElementById('myVideo');
function playPause() {
video.paused ? video.play() : video.pause();
}
Mute/Unmute
function muteVideo() {
video.muted = !video.muted;
}
Fullscreen Toggle
function toggleFullscreen() {
if (video.requestFullscreen) {
video.requestFullscreen();
}
}
Adjust Volume
function changeVolume(value) {
video.volume = value;
}
These features allow you to add custom controls to HTML5
video, making it more interactive.
4. Enhancing the User Interface with CSS
Here’s how to style the video player:
.custom-video-player {
display: flex;
flex-direction: column;
align-items: center;
margin: 20px;
}
.custom-video-player video {
border: 2px solid #333;
border-radius: 10px;
}
.controls {
margin-top: 10px;
display: flex;
gap: 10px;
}
.controls button,
.controls input {
padding: 10px;
border: none;
border-radius: 5px;
cursor: pointer;
background-color: #007bff;
color: #fff;
font-size: 1rem;
transition: 0.3s;
}
.controls button:hover {
background-color: #0056b3;
}
Result: A clean and responsive layout for your video player.
5. Advanced Features for a Pro-Grade Player
Skip Forward/Backward Buttons
Allow users to skip a few seconds forward or backward.
HTML:
<button onclick="skip(-10)">-10s</button>
<button onclick="skip(10)">+10s</button>
JavaScript:
function skip(seconds) {
video.currentTime += seconds;
}
6. How to Make Video Responsive in HTML5
Making your video player responsive ensures it works
seamlessly across devices.
Add this CSS:
.custom-video-player video {
max-width: 100%;
height: auto;
}
This guarantees the video resizes dynamically, which is
essential for modern web design.
7. Complete Example Code
Here’s the final implementation:
<div class="custom-video-player">
<video id="myVideo" width="600" controls>
<source src="example.mp4" type="video/mp4">
Your browser does not support the video tag.
</video>
<div class="controls">
<button onclick="playPause()">Play/Pause</button>
<button onclick="muteVideo()">Mute/Unmute</button>
<button onclick="toggleFullscreen()">Fullscreen</button>
<button onclick="skip(-10)">-10s</button>
<button onclick="skip(10)">+10s</button>
<input type="range" id="volumeSlider" min="0" max="1" step="0.1" onchange="changeVolume(this.value)">
</div>
</div>
<script>
const video = document.getElementById('myVideo');
function playPause() {
if (video.paused) {
video.play();
} else {
video.pause();
}
}
function muteVideo() {
video.muted = !video.muted;
}
function toggleFullscreen() {
if (video.requestFullscreen) {
video.requestFullscreen();
} else if (video.webkitRequestFullscreen) { // For Safari
video.webkitRequestFullscreen();
} else if (video.msRequestFullscreen) { // For IE11
video.msRequestFullscreen();
}
}
function skip(seconds) {
video.currentTime += seconds;
}
function changeVolume(value) {
video.volume = value;
}
</script>
<style>
.custom-video-player {
display: flex;
flex-direction: column;
align-items: center;
margin: 20px;
}
video {
border: 2px solid #333;
border-radius: 8px;
margin-bottom: 10px;
}
.controls {
display: flex;
gap: 10px;
}
button {
background-color: #007bff;
color: #fff;
border: none;
padding: 8px 12px;
border-radius: 4px;
cursor: pointer;
}
button:hover {
background-color: #0056b3;
}
input[type="range"] {
cursor: pointer;
}
</style>
8. Conclusion
By following this guide, you’ve learned:
- How
to customize video controls in HTML5 to match your design.
- Advanced
functionalities like skip buttons and responsive designs.
- How
to show video controls in HTML5 with custom styling.
This custom video player not only enhances user experience
but also showcases your ability to create engaging web experiences. Experiment
further to make your video player truly stand out!