Skip to content

Commit 9858e14

Browse files
committed
fix: UI 문제 수정
1 parent bc055da commit 9858e14

3 files changed

Lines changed: 210 additions & 25 deletions

File tree

_includes/head.html

Lines changed: 32 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -17,24 +17,49 @@
1717
<script>
1818
(function () {
1919
var root = document.documentElement;
20+
var THEME_STORAGE_KEY = "theme";
2021
var storedTheme = null;
2122
var prefersDarkMode = false;
2223

23-
try {
24-
storedTheme = localStorage.getItem("theme");
25-
} catch (error) {
26-
storedTheme = null;
24+
function normalizeTheme(value) {
25+
return value === "dark" || value === "default" ? value : null;
2726
}
2827

28+
function readCookie(name) {
29+
var escaped = name.replace(/([.$?*|{}()[\]\\/+^])/g, "\\$1");
30+
var match = document.cookie.match(
31+
new RegExp("(?:^|; )" + escaped + "=([^;]*)")
32+
);
33+
return match ? decodeURIComponent(match[1]) : null;
34+
}
35+
36+
function readStorage(storage) {
37+
if (!storage) {
38+
return null;
39+
}
40+
41+
try {
42+
return storage.getItem(THEME_STORAGE_KEY);
43+
} catch (error) {
44+
return null;
45+
}
46+
}
47+
48+
storedTheme =
49+
normalizeTheme(readStorage(window.localStorage)) ||
50+
normalizeTheme(readStorage(window.sessionStorage)) ||
51+
normalizeTheme(readCookie(THEME_STORAGE_KEY));
52+
2953
if (window.matchMedia) {
3054
prefersDarkMode = window.matchMedia("(prefers-color-scheme: dark)").matches;
3155
}
3256

3357
var isDarkMode =
34-
storedTheme === "dark" || (storedTheme !== "default" && prefersDarkMode);
58+
storedTheme === "dark" || (storedTheme === null && prefersDarkMode);
3559

3660
root.className = root.className.replace(/\bno-js\b/g, "") + " js ";
3761
root.setAttribute("data-theme", isDarkMode ? "dark" : "default");
62+
root.style.colorScheme = isDarkMode ? "dark" : "light";
3863
})();
3964
</script>
4065

@@ -59,6 +84,8 @@
5984
return;
6085
}
6186

87+
defaultTheme.media = isDarkMode ? "not all" : "all";
88+
darkTheme.media = isDarkMode ? "all" : "not all";
6289
defaultTheme.disabled = isDarkMode;
6390
darkTheme.disabled = !isDarkMode;
6491
})();

_sass/minimal-mistakes/_sidebar-nav-modern.scss

Lines changed: 114 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -3,8 +3,8 @@
33
========================================================================== */
44

55
.nav__list--categories {
6-
margin-top: 0.5rem;
7-
padding: 0.9rem;
6+
margin-top: 0.45rem;
7+
padding: 0.82rem;
88
border: 1px solid mix($border-color, $primary-color, 82%);
99
border-radius: 16px;
1010
background:
@@ -26,13 +26,20 @@
2626
margin-bottom: 0.65rem;
2727
}
2828

29+
.nav__list--categories label {
30+
font-size: 0.84rem;
31+
font-weight: bold;
32+
line-height: 1.2;
33+
letter-spacing: 0.01em;
34+
}
35+
2936
.nav__list--categories .nav__all-posts-link {
3037
display: flex;
3138
align-items: center;
3239
justify-content: space-between;
3340
gap: 0.75rem;
34-
margin-bottom: 0.75rem;
35-
padding: 0.6rem 0.75rem;
41+
margin-bottom: 0.68rem;
42+
padding: 0.56rem 0.72rem;
3643
border: 1px solid rgba($primary-color, 0.26);
3744
border-radius: 12px;
3845
color: $text-color;
@@ -60,6 +67,7 @@
6067
}
6168

6269
.nav__list--categories .nav__all-posts-title {
70+
font-size: 0.9rem;
6371
font-weight: bold;
6472
letter-spacing: 0.01em;
6573
}
@@ -82,13 +90,13 @@
8290
.nav__list--categories .nav__items--category-groups {
8391
display: flex;
8492
flex-direction: column;
85-
gap: 0.65rem;
93+
gap: 0.58rem;
8694
margin-top: 0.45rem;
87-
font-size: $type-size-7;
95+
font-size: clamp(0.9rem, 0.86rem + 0.18vw, 0.96rem);
8896
}
8997

9098
.nav__list--categories .nav__group {
91-
padding: 0.5rem;
99+
padding: 0.46rem;
92100
border: 1px solid mix($border-color, $primary-color, 88%);
93101
border-radius: 12px;
94102
background-color: rgba($primary-color, 0.04);
@@ -117,9 +125,9 @@
117125

118126
.nav__list--categories .nav__sub-title--group {
119127
margin: 0;
120-
padding: 0.2rem 0.3rem 0.4rem;
128+
padding: 0.15rem 0.28rem 0.35rem;
121129
border-bottom: none;
122-
font-size: $type-size-7;
130+
font-size: 0.85rem;
123131
font-weight: bold;
124132
text-transform: none;
125133
letter-spacing: 0.01em;
@@ -137,10 +145,11 @@
137145
align-items: center;
138146
justify-content: space-between;
139147
gap: 0.6rem;
140-
margin: 0.18rem 0;
141-
padding: 0.42rem 0.56rem;
148+
margin: 0.14rem 0;
149+
padding: 0.34rem 0.5rem;
142150
border: 1px solid transparent;
143151
border-radius: 10px;
152+
min-height: 2rem;
144153
color: inherit;
145154
text-decoration: none;
146155
transition:
@@ -171,19 +180,21 @@
171180
}
172181

173182
.nav__list--categories .nav__child-title {
183+
font-size: 0.87rem;
184+
line-height: 1.25;
174185
overflow: hidden;
175186
text-overflow: ellipsis;
176187
white-space: nowrap;
177188
}
178189

179190
.nav__list--categories .nav__child-count {
180191
min-width: 1.65rem;
181-
height: 1.3rem;
192+
height: 1.2rem;
182193
padding: 0 0.4rem;
183194
border-radius: 999px;
184-
font-size: $type-size-8;
195+
font-size: 0.69rem;
185196
font-weight: bold;
186-
line-height: 1.3rem;
197+
line-height: 1.2rem;
187198
color: mix($text-color, $primary-color, 65%);
188199
text-align: center;
189200
background-color: rgba($primary-color, 0.12);
@@ -197,14 +208,103 @@
197208
@include breakpoint(max-width $large - 1px) {
198209
.nav__list--categories {
199210
border-radius: 14px;
211+
padding: 0.72rem;
200212
}
201213

202214
.nav__list--categories label {
203215
width: 100%;
204216
border-radius: 10px;
205217
margin-bottom: 0.6rem;
218+
font-size: 0.86rem;
206219
background-color: mix($background-color, $primary-color, 92%);
207220
}
221+
222+
.nav__list--categories .nav__sub-title--group {
223+
font-size: 0.88rem;
224+
}
225+
226+
.nav__list--categories .nav__child-title {
227+
font-size: 0.9rem;
228+
}
229+
}
230+
231+
@media (min-width: 1024px) and (orientation: landscape) and (max-width: 1366px) and (max-height: 900px) {
232+
.sidebar {
233+
width: clamp(10.5rem, 21vw, 12.4rem);
234+
}
235+
236+
.sidebar .author__avatar img {
237+
max-width: 98px;
238+
}
239+
240+
.sidebar .author__name {
241+
font-size: 0.9rem;
242+
}
243+
244+
.sidebar .author__bio {
245+
font-size: 0.72rem;
246+
margin-bottom: 0.85rem;
247+
}
248+
249+
.nav__list--categories {
250+
padding: 0.62rem;
251+
border-radius: 12px;
252+
}
253+
254+
.nav__list--categories label {
255+
margin-bottom: 0.48rem;
256+
padding-top: 0.42rem;
257+
padding-bottom: 0.42rem;
258+
font-size: 0.76rem;
259+
}
260+
261+
.nav__list--categories .nav__all-posts-link {
262+
padding: 0.44rem 0.56rem;
263+
margin-bottom: 0.5rem;
264+
}
265+
266+
.nav__list--categories .nav__all-posts-title {
267+
font-size: 0.79rem;
268+
}
269+
270+
.nav__list--categories .nav__all-posts-count {
271+
min-width: 1.86rem;
272+
height: 1.28rem;
273+
line-height: 1.28rem;
274+
font-size: 0.65rem;
275+
}
276+
277+
.nav__list--categories .nav__items--category-groups {
278+
gap: 0.44rem;
279+
font-size: 0.79rem;
280+
}
281+
282+
.nav__list--categories .nav__group {
283+
padding: 0.34rem;
284+
border-radius: 10px;
285+
}
286+
287+
.nav__list--categories .nav__sub-title--group {
288+
padding: 0.08rem 0.2rem 0.22rem;
289+
font-size: 0.74rem;
290+
}
291+
292+
.nav__list--categories .nav__child-link {
293+
margin: 0.1rem 0;
294+
padding: 0.27rem 0.42rem;
295+
min-height: 1.65rem;
296+
}
297+
298+
.nav__list--categories .nav__child-title {
299+
font-size: 0.74rem;
300+
}
301+
302+
.nav__list--categories .nav__child-count {
303+
min-width: 1.36rem;
304+
height: 1.04rem;
305+
line-height: 1.04rem;
306+
font-size: 0.6rem;
307+
}
208308
}
209309

210310
@keyframes sidebar-nav-group-in {

assets/js/dark-theme.js

Lines changed: 64 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
(function () {
22
"use strict";
33

4+
var THEME_STORAGE_KEY = "theme";
45
var root = document.documentElement;
56
var defaultTheme = document.getElementById("theme-default-css");
67
var darkTheme = document.getElementById("theme-dark-css");
@@ -10,22 +11,72 @@
1011
return;
1112
}
1213

13-
function readThemePreference() {
14+
function normalizeTheme(value) {
15+
return value === "dark" || value === "default" ? value : null;
16+
}
17+
18+
function readCookie(name) {
19+
var escaped = name.replace(/([.$?*|{}()[\]\\/+^])/g, "\\$1");
20+
var match = document.cookie.match(
21+
new RegExp("(?:^|; )" + escaped + "=([^;]*)")
22+
);
23+
return match ? decodeURIComponent(match[1]) : null;
24+
}
25+
26+
function writeCookie(name, value, maxAgeSeconds) {
27+
document.cookie =
28+
name +
29+
"=" +
30+
encodeURIComponent(value) +
31+
"; path=/; max-age=" +
32+
maxAgeSeconds +
33+
"; SameSite=Lax";
34+
}
35+
36+
function readStorage(storage) {
37+
if (!storage) {
38+
return null;
39+
}
40+
1441
try {
15-
return localStorage.getItem("theme");
42+
return storage.getItem(THEME_STORAGE_KEY);
1643
} catch (error) {
1744
return null;
1845
}
1946
}
2047

21-
function writeThemePreference(theme) {
48+
function writeStorage(storage, value) {
49+
if (!storage) {
50+
return;
51+
}
52+
2253
try {
23-
localStorage.setItem("theme", theme);
54+
storage.setItem(THEME_STORAGE_KEY, value);
2455
} catch (error) {
25-
// Ignore private mode/storage restrictions and keep runtime-only state.
56+
// Ignore storage restrictions and rely on other persistence channels.
2657
}
2758
}
2859

60+
function readThemePreference() {
61+
return (
62+
normalizeTheme(readStorage(window.localStorage)) ||
63+
normalizeTheme(readStorage(window.sessionStorage)) ||
64+
normalizeTheme(readCookie(THEME_STORAGE_KEY))
65+
);
66+
}
67+
68+
function writeThemePreference(theme) {
69+
var normalizedTheme = normalizeTheme(theme);
70+
71+
if (!normalizedTheme) {
72+
return;
73+
}
74+
75+
writeStorage(window.localStorage, normalizedTheme);
76+
writeStorage(window.sessionStorage, normalizedTheme);
77+
writeCookie(THEME_STORAGE_KEY, normalizedTheme, 60 * 60 * 24 * 365);
78+
}
79+
2980
function getSystemDarkModePreference() {
3081
return (
3182
window.matchMedia &&
@@ -93,9 +144,12 @@
93144
function applyTheme(theme, persistPreference) {
94145
var isDarkMode = theme === "dark";
95146

147+
defaultTheme.media = isDarkMode ? "not all" : "all";
148+
darkTheme.media = isDarkMode ? "all" : "not all";
96149
defaultTheme.disabled = isDarkMode;
97150
darkTheme.disabled = !isDarkMode;
98151
root.setAttribute("data-theme", theme);
152+
root.style.colorScheme = isDarkMode ? "dark" : "light";
99153
renderToggleButton(theme);
100154
syncGiscusTheme(theme);
101155

@@ -107,7 +161,7 @@
107161
var mediaQueryList = window.matchMedia
108162
? window.matchMedia("(prefers-color-scheme: dark)")
109163
: null;
110-
var initialTheme = root.getAttribute("data-theme") || getInitialTheme();
164+
var initialTheme = getInitialTheme();
111165

112166
applyTheme(initialTheme, false);
113167

@@ -142,4 +196,8 @@
142196

143197
syncGiscusTheme(root.getAttribute("data-theme") || "default");
144198
});
199+
200+
window.addEventListener("pageshow", function () {
201+
applyTheme(getInitialTheme(), false);
202+
});
145203
})();

0 commit comments

Comments
 (0)