bewoksatukosong.com 👩🏼💻 Hello para programmer - programmer handal. Kita sering banget lihat website yang bisa dark / light gitu, nah kali ini om bewok mau share ke kalian cara kerjanya seperti aja, jadi ini hanya button, yang ketika kita klik dia akan berubah menjadi dark / light.
Oke mari kita mulai
Buat file dengan nama index.html dan style.css
CATATAN : Penjelasannya sudah ada di dalam kodingannya yaa biar teman - teman bisa lebih mudah memahami nya ya
Kita buka index.html
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>toggle button</title>
<link rel="stylesheet" href="style.css">
</head>
<body>
<!-- Kita buat id toggle -->
<div id="toggle">
<!-- kita buat class indicator -->
<i class="indicator"></i>
</div>
<script>
// kita panggil element body dan toggle
const body = document.querySelector('body');
const toggle = document.getElementById("toggle");
// ketika toggle kita klik maka dia akan menambahkan class yang bernama active
// yang mana active itu akan kita gunakan di dalam css
toggle.onclick = function() {
toggle.classList.toggle('active');
body.classList.toggle('active');
}
</script>
</body>
</html>
Lalu kita buat style.css
body {
/* menggunakan layout flex */
display: flex;
/* otomatis ia akan berada di tengah */
justify-content: center;
align-items: center;
/* min tinggi 100 vh */
min-height: 100vh;
/* background hitam */
background: #2b2b2b;
}
/* kita buat button dengan memanggil id */
#toggle {
/* position relation agar bisa di pindah - pindahkan */
position: relative;
display: block;
/* kita buat button nya lebarnya 320 px */
width: 320px;
/* kita buat panjang nya 160px */
height: 160px;
/* border radius bagian ujungnya kita buat melengkung, kalau ga menggunakan
border radius nanti nya jadi kotak, kalian bisa coba sendiri ya */
border-radius: 160px;
/* kita buat background menjadi warna hitam */
background: #222;
/* transition ketika kita klik dia akan ada delay nya 0.5 s jadi ga langsung
cepat gitu gerakan perpindahannya */
transition: 0.5s;
/* cursor pointer, ketika kita sentuh pointer kita / mouse kita jadi gambar telunjuk */
cursor: pointer;
/* bayangan pada box nya kalian bisa otak atik sendiri, ketebelanya, opacity nya
kalian bisa ubah - ubah untuk tau cara kerjanya seperti apa */
box-shadow: inset 0 8px 60px rgba(0, 0, 0, 0.1),
inset 0 8px 8px rgba(0, 0, 0, 0.1), inset 0 -4px 4px rgba(0, 0, 0, 0.1);
}
/* ketika kita klik button nya maka dia akan berubah menjadi warna putih */
body.active {
background: #f8f8f8;
}
/* ketika toggle active kita click maka background pada button akaan berubah berwarna puth */
#toggle.active {
/* button background akan berubah menjadi warna putih */
background: #fff;
/* bayangan pada button akan berubah menjadi abu - abu, kalian bisa otak atik sendiri,
sesuka kalian untuk mengetahui warna yang tepat */
box-shadow: inset 0 2px 60px rgba(0, 0, 0, 0.1),
inset 0 2px 8px rgba(0, 0, 0, 0.1), inset 0 -4px 4px rgba(0, 0, 0, 0.05);
}
/* kita buat bulatan di dalam button tersebut */
#toggle .indicator {
position: absolute;
top: 0;
left: 0;
/* ukuran lebar dan tinggi */
width: 160px;
height: 160px;
background: linear-gradient(to bottom, #444, #222);
/* border radius 50% jadi akan berubah menjadi bulat */
border-radius: 50%;
transform: scale(0.9);
/* bulatan bayangannya atau bisa di bilang pinggirannya */
box-shadow: 0 8px 40px rgba(0, 0, 0, 0.5),
inset 0 4px 4px rgba(255, 255, 255, 0.2),
inset 0 -4px 4px rgba(255, 255, 255, 0.2);
/* ketika di klik dia akan delay sedikit */
transition: 0.5s;
}
/* ketika di klik bulatan nya akan berubah menjadi warna putih */
#toggle.active .indicator {
/* ketika kita klik maka bulat nya akan pindah ke kanan itu karena
kita menggunakan left: 160px; / coba kalian gedein ukurannya nanti malah makin menjauh, kalian harus coba */
left: 160px;
/* kita buat backgroundnya */
background: linear-gradient(to bottom, #eaeaea, #f9f9f9);
/* kotak bayangan nya kita pakein juga boy */
box-shadow: 0 8px 20px rgba(0, 0, 0, 0.1),
inset 0 4px 4px rgba(255, 255, 255, 1),
inset 0 -4px 4px rgba(255, 255, 255, 1);
}
Oke Hasilnya seperti dibawah ini ya
Hasilnya bisa kamu coba di sini
Kalau kalian bingung bisa tanyakan di komentar ya
No comments:
Post a Comment