Diterbitkan pada

Sakelar Mode Gelap

Penulis
  • avatar
    Nama
    Naufal Akbar Nugroho
Table of Contents

Ini adalah cara saya membuat sakelar mode gelap hanya dengan HTML, SCSS, dan Vanila JavaScript.

Prosedur

  1. Buat folder dengan nama apa pun yang Anda inginkan.
  2. Masuk ke folder yang telah Anda buat dan masukkan editor teks favorit Anda.
  3. Buat file HTML dengan nama index.html. Berikut sintaksnya.
index.html
<!DOCTYPE html>
<html lang="en" data-theme="light">
<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>Dark Mode Toggle</title>
    <link rel="stylesheet" href="style.css">
</head>
<body>
    <div class="container">
        <h1>Light / Dark Mode</h1>
        <div class="toggle-container">
            <input type="checkbox" name="theme" id="switch">
            <label for="switch">Toggle</label>
        </div>

        <p>Lorem ipsum dolor sit amet consectetur, adipisicing elit. Eveniet adipisci non blanditiis, quod minus, quisquam omnis asperiores et laborum debitis voluptates, sapiente sed tenetur laboriosam commodi itaque impedit possimus aut. Officia excepturi labore nam, qui voluptatem molestiae vero. Cupiditate deserunt maxime aut iste esse velit aliquid provident explicabo totam unde.</p>
    </div>
    <script src="script.js"></script>
</body>
</html>
  1. Dan kemudian, mari kita buat styles.css. Berikut sintaksnya.
style.css
html {
    height: 100%;
    font-family: 'Montserrat';
    display: grid;
    align-items: center;
    justify-items: center;

    --bg: #fcfcfc;
    --bg-panel: #EBEBEB;
    --color-headings: #0077FF;
    --color-text: #333333;
}

html[data-theme='dark'] {
    --bg: #333333;
    --bg-panel: #434343;
    --color-headings: #3694ff;
    --color-text: #b5b5b5;
}

body {
    background-color: var(--bg);
}

.container {
    background-color: var(--bg-panel);
    margin: 5em;
    padding: 5em;
    border-radius: 15px;

    display: grid;
    grid-template-columns: 80% auto;
    grid-template-rows: auto auto;
    grid-template-areas: "title switch" "content content";
}

h1 {
    margin: 0;
    color: var(--color-headings);
}

p {
    color: var(--color-text);
    grid-area: content;
    font-size: 1.1em;
    line-height: 1.8em;
    margin-top: 2em;
}

input[type=checkbox]{
	height: 0;
	width: 0;
	visibility: hidden;
}

label {
	cursor: pointer;
	text-indent: -9999px;
	width: 52px;
	height: 27px;
	background: grey;
	float: right;
	border-radius: 100px;
	position: relative;
}

label:after {
	content: '';
	position: absolute;
	top: 3px;
	left: 3px;
	width: 20px;
	height: 20px;
	background: #fff;
	border-radius: 90px;
	transition: 0.3s;
}

input:checked + label {
	background: var(--color-headings);
}

input:checked + label:after {
	left: calc(100% - 5px);
	transform: translateX(-100%);
}

label:active:after {
	width: 45px;
}

html.transition,
html.transition *,
html.transition *:before,
html.transition *:after {
  transition: all 750ms !important;
  transition-delay: 0 !important;
}
  1. Terakhir, kita buat file script.js. Berikut sintaksnya.
script.js
var checkbox = document.querySelector('input[name=theme]');

checkbox.addEventListener('change', function() {
    if(this.checked) {
        trans()
        document.documentElement.setAttribute('data-theme', 'dark')
    } else {
        trans()
        document.documentElement.setAttribute('data-theme', 'light')
    }
})

let trans = () => {
    document.documentElement.classList.add('transition');
    window.setTimeout(() => {
        document.documentElement.classList.remove('transition')
    }, 1000)
}
  1. Jadi kita sudah memiliki Sakelar Mode Gelap menggunakan HTML, SCSS, dan Vanila JavaScript!

Situs demo

Menyelesaikan

Selamat! Anda telah menyelesaikan tutorial tentang cara membuat Sakelar Mode Gelap menggunakan HTML, SCSS, Vanila Javascript! Semoga cuplikan kode ini dapat memberi manfaat untuk kalian semua dan jangan lupa untuk membagikan cuplikan kode ini kepada semua orang! Terima kasih!

Ikuti Saya!

Github Instagram X Linkedin Email