Home » How To » Cara Membuat Range Slider

Cara Membuat Range Slider

by Hanifah Nurbaeti
by Hanifah Nurbaeti

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>

You may also like