Sass에서 다크모드 적용하기 에서는 IE에 대한 고려때문에 코드가 좀 복잡해졌는데, 이제 IE를 무시해도 될만하니, 좀 더 간단한 코드로 다시 작업해 봤습니다.
굳이 믹스인 사용하지 않고 변수만 정의해서 사용하면 됩니다.
@use "sass:meta";
@use "sass:list";
$color-theme: (
bg-color: (#fff, #333),
txt-color: #333 #eee,
brd-color: #666,
);
:root{
@each $k, $v in $color-theme{
@if(meta.type-of($v) == "list"){
#{"--" + $k}: #{list.nth($v, 1)};
}@else{
#{"--" + $k}: #{$v};
}
}
};
@media (prefers-color-scheme: dark){
:root{
@each $k, $v in $color-theme{
@if(meta.type-of($v) == "list"){
#{"--" + $k}: #{list.nth($v, 2)};
}@else{
#{"--" + $k}: #{$v};
}
}
}
}
:root {
--bg-color: #fff;
--txt-color: #333;
--brd-color: #666;
}
@media (prefers-color-scheme: dark) {
:root {
--bg-color: #333;
--txt-color: #eee;
--brd-color: #666;
}
}
html, body {
color: var(--txt-color);
background-color: var(--bg-color);
}
.border {
border: 1px solid var(--brd-color);
}