Postingan lainnya
Kelas Premium!
Belajar Javascript untuk website
Gunakan kupon "mulaijs" untuk diskon 75 ribu!
Menyediakan dark-mode pada website
Beberapa kali mungkin kamu pernah melihat website yang menyediakan 2 mode: 1. mode terang (light) 2. mode gelap (dark) saya mencoba mengimplementasikannya pada website pribadi saya di hilman.space
Kamu bisa klik tombol di pojok kanan atas untuk mengujinya. Logikanya cukup simple, kalau user menginginkan "darkmode" maka tampilkan tombol kebalikanya (seperti saklar on-off) dan ubah cssnya: background menjadi gelap, tulisan menjadi terang.
Agar tidak melakukan stylingnya full di javascript, kita berikan satu kelas nama extra untuk "body"
body.darkmode {
background: rgb(57, 57, 57);
color: rgb(227, 227, 227);
}
Jadi idenya, kelas "darkmode" akan ditoggle via javascript seperti ini:
<div id="theme">
<div onclick="setDarkMode(true)" id="darkBtn" class=""> <span>Dark</span></div>
<div onclick="setDarkMode(false)" id="lightBtn" class="is-hidden"> <span>Light</span> </div>
</div>
<script>
function setDarkMode(isDark) {
var darkBtn = document.getElementById('darkBtn')
var lightBtn = document.getElementById('lightBtn')
if(isDark) {
lightBtn.style.display = "block"
darkBtn.style.display = "none"
} else {
lightBtn.style.display = "none"
darkBtn.style.display = "block"
}
document.body.classList.toggle("darkmode");
}
</script>
Dan untuk memudahkan user, kita akan menyimpan pilihannya di LocalStorage, agar setiap berkunjung kembali, sudah automatis dengan tema yang dimau:
//check localstorage
if(localStorage.getItem('preferredTheme') == 'dark') {
setDarkMode(true)
}
function setDarkMode(isDark) {
var darkBtn = document.getElementById('darkBtn')
var lightBtn = document.getElementById('lightBtn')
if(isDark) {
lightBtn.style.display = "block"
darkBtn.style.display = "none"
//tambahan localstorage
localStorage.setItem('preferredTheme', 'dark');
} else {
lightBtn.style.display = "none"
darkBtn.style.display = "block"
//tambahan localstorage
localStorage.removeItem('preferredTheme');
}
document.body.classList.toggle("darkmode");
}
7 Jawaban:
Makasih !!! ternyata ada cara yang lebih simple. selama ini saya naro nya di setting user, jadi kalo user set dark datanya disimpan di database nanti di cek dulu login. logic nya saya bikin 2 css 1 dark 1light, makasih ilmunya !!!
<div>berarti utk class2 yg lain seperti .blog .entry .entry-title a tinggal menambahkan .darkmode yang bang ? jadinya .blog .entry .entry-title .darkmode a gitu ya ? atau gimana ? trimakasih</div>
Tanggapan
iya seperti contoh body di atas
Jawaban Terpilih
<div>Di playlist ini juga ada dua cara berbeda saya membuat dark mode pada website<br><a href="https://www.youtube.com/playlist?list=PLCZlgfAG0GXCyd70hT8jYl24bLuPpH9iR">playlist main main javascript</a></div>
<div>kalau versi desktop bisa dinamis tp utk versi mobilenya knapa teksnya ga bisa berubah dark mode/light mode ya bang ... sy pakai <li> di navbar (ga pake <div> sperti di video tutorial). seperti ini code yg sy gunakan<br><br></div><pre> <li class="get-started-btn" id="theme" style="padding: 13px 30px 9px 30px">
<span class="icon" onclick="setDarkMode()" id="darkBtn">🌚 Dark Mode</span>
</li></pre><div><br>dan scriptnya seperti ini</div><pre><script> if (localStorage.getItem('theme') == 'dark')
setDarkMode()<br> <em>// 🌝🌚</em> <br> <em>function</em> setDarkMode()
{ <em>let</em> emoticon = ''
<em>let</em> isDark = document.body.classList.toggle('darkmode')
if (isDark)
{
emoticon = '🌝 Light Mode'
localStorage.setItem('theme','dark')
} else {
emoticon = '🌚 Dark Mode'
localStorage.removeItem('theme') }
document.getElementById('darkBtn').innerHTML = emoticon } <br> </script></pre>
<div>mas yang menyimpan di local storage itu bagaimana ya, masih bingung saya</div>
<div>Ada kendala, pada saat berganti halaman mode dark kembali ke mode light dihalaman berikutnya.<br><br>Di localhost script tidak ada masalah tapi saat hosting diweb hanya halaman index yang mode dark tapi halaman yang lain tetap di mode light.<br><br>Ada solusi?</div>