Di bawah ini kita akan mempelajari cara membuat range slider kustom dengan CSS dan JavaScript.
<!DOCTYPE html> <html> <head> <meta name="viewport" content="width=device-width, initial-scale=1"> <style> #slidecontainer { width:100%; } .slider-color { -webkit-appearance: none; width: 100%; height: 15px; border-radius: 5px; background: #d3d3d3; outline: none; opacity:0.7; -webkit-transition: opacity .15s ease-in-out; transition: opacity .15s ease-in-out; } .slider-color:hover { opacity:1; } .slider-color::-webkit-slider-thumb { -webkit-appearance: none; appearance: none; width: 25px; height: 25px; border-radius: 50%; background: #006400; cursor: pointer; } .slider-color::-moz-range-thumb { width: 25px; height: 25px; border: 0; border-radius: 50%; background: #006400; cursor: pointer; } .slider-pic { -webkit-appearance: none; width: 100%; height: 10px; border-radius: 5px; background: #d3d3d3; outline: none; opacity:0.7; -webkit-transition: opacity .15s ease-in-out; transition: opacity .15s ease-in-out; } .slider-pic:hover { opacity:1; } .slider-pic::-webkit-slider-thumb { -webkit-appearance: none; appearance: none; width: 25px; height: 25px; border-radius: 50%; background: url('https://dosenit.com/wp-content/uploads/2021/01/S3_EP11_Hachiman_Yukino_1.png'); cursor: pointer; } .slider-pic::-moz-range-thumb { width: 25px; height: 25px; border: 0; border-radius: 50%; background: url('https://dosenit.com/wp-content/uploads/2021/01/S3_EP11_Hachiman_Yukino_1.png'); cursor: pointer; } .slider-square { -webkit-appearance: none; width: 100%; height: 24px; background: #d3d3d3; outline: none; opacity:0.7; -webkit-transition: opacity .15s ease-in-out; transition: opacity .15s ease-in-out; } .slider-square:hover { opacity:1; } .slider-square::-webkit-slider-thumb { -webkit-appearance: none; appearance: none; width: 24px; height: 24px; background: #D2691E; cursor: pointer; } .slider-square::-moz-range-thumb { width: 24px; height: 24px; border: 0; background: #D2691E; cursor: pointer; } </style> </head> <body> <h1>Contoh Custom Range Slider</h1> <div id="slidecontainer"> <h4>Default:</h4> <input type="range" min="1" max="100" value="50"> <h4>Square:</h4> <p><input type="range" min="1" max="100" value="50" class="slider-square" id="id2"></p> <h4>Round:</h4> <p><input type="range" min="1" max="100" value="50" class="slider-color" id="id1"></p> <h4>Image:</h4> <p style="margin-bottom:20px"><input type="range" min="1" max="100" value="50" class="slider-pic" id="id3"></p> <span>Value:</span> <span id="f" style="font-weight:bold;color:gold"></span> <script> var slideCol = document.getElementById("id1"); var slideSq = document.getElementById("id2"); var slidePic = document.getElementById("id3"); var y = document.getElementById("f"); y.innerHTML = slideCol.value; slideCol.oninput = function() { y.innerHTML = this.value; } slideSq.oninput = function() { y.innerHTML = this.value; } slidePic.oninput = function() { y.innerHTML = this.value; } </script> </div> </body> </html>
Membuat Custom Range Slider Default
Langkah 1) Tambahkan HTML:
Contoh
<div class="slidecontainer"> <input type="range" min="1" max="100" value="50" class="slider" id="myRange"> </div>
Langkah 2) Tambahkan CSS:
Contoh
.slidecontainer {
width: 100%; /* Lebar container yang di luar */
}
/* slider */
.slider {
-webkit-appearance: none; /* Ganti gaya CSS default */
appearance: none;
width: 100%; /* lebar maksimum */
height: 25px; /* Tinggi yang ditentukan */
background: #d3d3d3; /* warna background grey */
outline: none; /* Hapus outline */
opacity: 0.7; /* Setel transparansi (untuk efek mouse-over pada hover) */
-webkit-transition: .2s; /* Transisi 0,2 detik saat mengarahkan kursor */
transition: opacity .2s;
}
/* Efek mouse-over */
.slider:hover {
opacity: 1; /* Sepenuhnya ditampilkan saat mouse-over */
}
/* handle slider (gunakan -webkit- (Chrome, Opera, Safari, Edge) dan -moz- (Firefox) untuk mengganti tampilan default) */
.slider::-webkit-slider-thumb {
-webkit-appearance: none; /* Ganti tampilan default */
appearance: none;
width: 25px; /* Tetapkan lebar handle slider tertentu */
height: 25px; /* Tinggi handle slider*/
background: #4CAF50; /* Warna background hijau */
cursor: pointer; /* Kursor saat hover */
}
.slider::-moz-range-thumb {
width: 25px; /* Tetapkan lebar handle slider tertentu */
height: 25px; /* Tinggi handle slider */
background: #4CAF50; /* Warna background green */
cursor: pointer; /* Kursor saat hover */
}Langkah 3) Tambahkan JavaScript:
Buat range slider dinamis untuk menampilkan nilai saat ini, dengan JavaScript:
Contoh
var slider = document.getElementById("myRange");
var output = document.getElementById("demo");
output.innerHTML = slider.value; // Menampilkan nilai slider default
// Perbarui nilai slider saat ini (setiap kali menyeret handle slider)
slider.oninput = function() {
output.innerHTML = this.value;
}Round Slider
Untuk membuat handle round slider, gunakan properti border-radius. Tip: Setel tinggi slider ke nilai yang berbeda dari thumbs slider jika menginginkan ketinggian yang tidak sama (15px vs. 25px dalam contoh ini):
Contoh
.slider {
-webkit-appearance: none;
width: 100%;
height: 15px;
border-radius: 5px;
background: #d3d3d3;
outline: none;
opacity: 0.7;
-webkit-transition: .2s;
transition: opacity .2s;
}
.slider::-webkit-slider-thumb {
-webkit-appearance: none;
appearance: none;
width: 25px;
height: 25px;
border-radius: 50%;
background: #4CAF50;
cursor: pointer;
}
.slider::-moz-range-thumb {
width: 25px;
height: 25px;
border-radius: 50%;
background: #4CAF50;
cursor: pointer;
}
Jadi seperti ini :
<!DOCTYPE html>
<html>
<head>
<meta name="viewport" content="width=device-width, initial-scale=1">
<style>
.slidecontainer {
width: 100%;
}
.slider {
-webkit-appearance: none;
width: 100%;
height: 15px;
border-radius: 5px;
background: #d3d3d3;
outline: none;
opacity: 0.7;
-webkit-transition: .2s;
transition: opacity .2s;
}
.slider:hover {
opacity: 1;
}
.slider::-webkit-slider-thumb {
-webkit-appearance: none;
appearance: none;
width: 25px;
height: 25px;
border-radius: 50%;
background: #4CAF50;
cursor: pointer;
}
.slider::-moz-range-thumb {
width: 25px;
height: 25px;
border-radius: 50%;
background: #4CAF50;
cursor: pointer;
}
</style>
</head>
<body>
<h1>Contoh Round Range Slider</h1>
<div class="slidecontainer">
<input type="range" min="1" max="100" value="50" class="slider" id="myRange">
<p>Value: <span id="demo"></span></p>
</div>
<script>
var slider = document.getElementById("myRange");
var output = document.getElementById("demo");
output.innerHTML = slider.value;
slider.oninput = function() {
output.innerHTML = this.value;
}
</script>
</body>
</html>
Slider Ikon / Gambar
Untuk membua handle slider t ikon / gambar , gunakan properti background dan masukkan url gambar:
Contoh
.slider::-webkit-slider-thumb {
-webkit-appearance: none;
appearance: none;
width: 23px;
height: 24px;
border: 0;
background: url('https://dosenit.com/wp-content/uploads/2021/01/S3_EP11_Hachiman_Yukino_1.png');
cursor: pointer;
}
.slider::-moz-range-thumb {
width: 23px;
height: 25px;
border: 0;
background: url('https://dosenit.com/wp-content/uploads/2021/01/S3_EP11_Hachiman_Yukino_1.png');
cursor: pointer;
}
Jadi seperti ini :
<!DOCTYPE html>
<html>
<head>
<meta name="viewport" content="width=device-width, initial-scale=1">
<style>
.slidecontainer {
width: 100%;
}
.slider {
-webkit-appearance: none;
width: 100%;
height: 10px;
border-radius: 5px;
background: #d3d3d3;
outline: none;
opacity: 0.7;
-webkit-transition: .2s;
transition: opacity .2s;
}
.slider:hover {
opacity: 1;
}
.slider::-webkit-slider-thumb {
-webkit-appearance: none;
appearance: none;
width: 23px;
height: 24px;
border: 0;
background: url('https://dosenit.com/wp-content/uploads/2021/01/S3_EP11_Hachiman_Yukino_1.png');
cursor: pointer;
}
.slider::-moz-range-thumb {
width: 23px;
height: 24px;
border: 0;
background: url('https://dosenit.com/wp-content/uploads/2021/01/S3_EP11_Hachiman_Yukino_1.png');
cursor: pointer;
}
</style>
</head>
<body>
<h1>Contoh Range Slider ikon atau gambar</h1>
<div class="slidecontainer">
<input type="range" min="1" max="100" value="50" class="slider" id="myRange">
<p>Value: <span id="demo"></span></p>
</div>
<script>
var slider = document.getElementById("myRange");
var output = document.getElementById("demo");
output.innerHTML = slider.value;
slider.oninput = function() {
output.innerHTML = this.value;
}
</script>
</body>
</html>