다크 모드 처리 관련하여 질문드립니다.
532
작성자 없음
작성한 질문수 0
안녕하세요, 퀘이사 다크 모드 사용과 관련하여 질문이 있어 글을 남기게 되었습니다.
퀘이사 Documentation을 보게 되면, 다크 모드를 토글했을 때 body에 .body--light / .body--dark가 변경되어 나타나기 때문에 이를 활용하여 모드 별 스타일링을 진행하는 것을 확인했습니다. 그런데 이 부분이 다소 불편하여 (혹은 제가 제대로 사용하지 못하고 있는 상황이라) 질문드립니다.
프로젝트를 진행하면서 css파일을 세분화시킬 필요성을 느끼고 있고, 이를 진행하고 있습니다.
특정 Vue 파일에서만 필요한 클래스에 대한 스타일링은 해당 Vue 파일의 <style scoped lang="sass">로 처리하고 있고, 범용적으로 쓰는 것들은 app.scss에서 관리하고 있습니다.
그런데 다크모드와 라이트모드일 때 scss 변수의 값이 달라지는데 이를 다른 scss파일에서 사용하는 데 문제가 있습니다.
다크모드와 라이트모드의 scss 파일의 내용 예시는 아래와 같습니다. 변수명은 같고 값만 다른 상황입니다.
// dark.scss
$color-text-primary: #ecf3f0;
$color-text-secondary: #c6cdc9;
...
// light.scss
$color-text-primary: #161816;
$color-text-secondary: #747676;
...모드에 따라 달라지는 변수들을 적용하기 위해서 현재 제가 생각한 방식은 결국 색상 별 파일을 따로 분리하여 색상과 관련된 코드는 해당 부분에서 .body--dark, .body--light로 모든 클래스의 색상을 변경해야 되는 상황으로 이어져서 질문드립니다.
// dark-mode.scss
.body--dark {
.border-bottom {
...
}
}
// dark-mode.scss
.body--dark {
.border-bottom {
...
}
}
Quasar.variables에 $변수를 일괄적으로 등록하는 방법을 사용한다면, 모드 별 변수 명을 다 다르게 설정하고, .body--dark / .body--light에 각 클래스 별로 변수를 사용하는 방식을 진행해야 합니다. 모드 별로 변수명을 다르게 하는게 나을지, 아니면 같게 한 다음에 편하게 처리하는 방식이 있는지 궁금합니다.
2. 1번과 관련된 내용인 것 같습니다. 가능한 상황인지는 모르겠지만, quasar.variables.scss 등에서 isDark(다크모드여부)를 감지하여 $변수명: dark ? '#aaa' : '#000' 등으로 일괄 처리를 할 수 있는 방식은 없는지 알고 싶습니다.
3. css파일이 세분화됨에 따라서 만약 모드에 따른 $변수를 두 파일에서 나누어서 관리한다면, app.scss 등과 같이 해당 변수가 정의되어 있지 않는 곳에서 특정 변수 명을 사용한다면 모드에 따른 scss파일을 감지하는 방식이 있는지 궁금합니다.
감사합니다!!
답변 1
0
안녕하세요, 인프런 AI 인턴이에요.
다크 모드와 관련하여서는 퀘이사 다크 모드 사용과 관련한 내용을 문의하셨는데요. 퀘이사 Documentation을 보셨다고 하셨으니 해당 문서를 참고하여 다크 모드를 활용하실 수 있을 거에요.
하지만 여러 파일에서 사용하는 scss 변수값을 다른 scss 파일에서 사용하는데 문제가 있다고 하셨는데요. 이 경우에는 변수들을 관리하는 파일을 따로 만들어 import하여 사용하는 방법을 추천드립니다.
예를 들어, variables.scss라는 파일을 생성하여 다음과 같이 변수들을 정의합니다.
// variables.scss
$color-text-primary: #161816;
$color-text-secondary: #747676;
...
그리고 다크모드에서 사용되는 변수들은 dark.scss, 라이트모드에서 사용되는 변수들은 light.scss에 정의합니다.
// dark.scss
@import 'variables';
body {
color: $color-text-primary;
background-color: $color-text-secondary;
...
}
// light.scss
@import 'variables';
body {
color: $color-text-primary;
background-color: $color-text-secondary;
...
}
이렇게 변수들을 관리하는 파일을 따로 두고, 필요한 곳에서 import하여 사용하시면 더 편리하게 다크 모드와 라이트 모드에 따라 스타일링을 처리할 수 있을 것입니다.
다른 질문이 있으시면 언제든지 물어보세요. 좋은 하루되세요~!
ComboBox 관련해서 질문 드립니다.
0
69
2
<g-page class="q-pa-xl"> 했는데도 여백 안생김
0
83
2
quasar intellisense extension 관련 문의
0
263
2
q-tab 오류 문의
0
238
1
q-upload 문의 드립니다.
0
490
1
q-input과 :rules 속성을 함께 쓸때, items-center 속성이 이상한 현상
0
309
1
Key값으로 Object 사용가능할까요?
0
230
1
npm run build 시 오류 발생합니다
0
458
1
fontawsome 사용법
0
251
1
Quasar 관련 익스텐션
0
216
1
VUE를 이용해서 프로그램 파일을 실행할수 있을까요?
0
410
1
q-input 태그 내용사라짐
0
272
1
q-input 컴포넌트 질문
0
466
1
버튼이 마음대로 크기가 바뀌어요
0
655
1
script setup 태그 유무에 따라서 페이지 출력이 안됩니다.
0
542
3
vue3 composition api (script setup) 사용 시 전역변수 접근
0
1440
1
한글 실시간 바인딩
2
2532
2
vue3 composition Api 사용시 setup 내부에서도 /src/boot에 설정한 constatns.js 값을 가져올수 있나요?
0
396
1
router.push로 이동 시, 유튜브 페이지의 컨텐츠 영역 안보이는 현상
0
463
1
validation
0
365
1
CORS 설정
0
603
1
질문 있습니다
0
333
1
Helper Classes
0
309
1
Quasar 내장 컴포넌트 색 질문입니다.
0
442
1





