Skip to content

Commit 4532811

Browse files
committed
add theme change
1 parent b355ee9 commit 4532811

5 files changed

Lines changed: 72 additions & 0 deletions

File tree

12.4 KB
Loading
3.8 KB
Loading

problemSolvingPractices/problems/p3-ConversionTool/index.html

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,13 @@
99
<script src='script.js' defer></script>
1010
</head>
1111
<body>
12+
13+
<div class='container'>
14+
15+
<img id='themeToggle' src='icons/moon.png' alt='Toggle Theme' title="Change Theme">
16+
17+
</div>
18+
1219
<h3> Convert an IPv4 address from Binary to Decimal </h3><br>
1320
<!-- <h3> Example: 10101100.00010000.00100010.00000011(Binary) to 172.16.34.3 </h3><br> -->
1421

problemSolvingPractices/problems/p3-ConversionTool/script.js

Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,37 @@
1+
const savedTheme = localStorage.getItem('theme')
2+
const html = document.documentElement
3+
const toggleBtn = document.getElementById('themeToggle')
4+
5+
setTheme()
6+
7+
if (savedTheme) {
8+
html.setAttribute('data-theme', savedTheme)
9+
toggleBtn.src = savedTheme == 'dark' ? 'icons/sun.png' : 'icons/moon.png'
10+
}
11+
12+
if (!savedTheme) {
13+
const prefersDark = window.matchMedia('(prefers-color-scheme: dark)').matches
14+
html.setAttribute('data-theme', prefersDark ? 'dark' : 'light')
15+
toggleBtn.src = prefersDark ? 'icons/sun.png' : 'icons/moon.png'
16+
}
17+
18+
function setTheme() {
19+
20+
toggleBtn.addEventListener('click', () => {
21+
const currentTheme = document.documentElement.getAttribute('data-theme')
22+
23+
if (currentTheme == 'dark') {
24+
html.setAttribute('data-theme', 'light')
25+
toggleBtn.src = 'icons/moon.png'
26+
localStorage.setItem('theme', 'light')
27+
} else {
28+
html.setAttribute('data-theme', 'dark')
29+
toggleBtn.src = 'icons/sun.png'
30+
localStorage.setItem('theme', 'dark')
31+
}
32+
})
33+
}
34+
135
// IPv4 Binary to Decimal
236

337

problemSolvingPractices/problems/p3-ConversionTool/style.css

Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,34 @@
1+
:root {
2+
--bg: white;
3+
--text: black;
4+
--border: black;
5+
}
6+
7+
[data-theme='dark'] {
8+
--bg: rgb(26, 26, 26);
9+
--text: white;
10+
}
11+
12+
body {
13+
margin: 0;
14+
padding: 10px 10px;
15+
font-family: sans-serif;
16+
background: var(--bg);
17+
color: var(--text);
18+
transition: background 0s, color 0s;
19+
}
20+
21+
#themeToggle {
22+
position: fixed;
23+
top: 20px;
24+
right: 20px;
25+
width: 30px;
26+
height: 30px;
27+
}
28+
#themeToggle:hover {
29+
cursor: pointer;
30+
}
31+
132
* {
233
padding: 0;
334
margin: 0;

0 commit comments

Comments
 (0)