Search
Duplicate

화면 스타일 카드 동작 프로세스

글감
FE
작성자
작성 일자
2024/06/30 03:20
상태
완료
공개여부
공개
Date
2024/06/30
생성자
작업자

관련 파일

DisplayStyleCard.container.tsx, DisplayStyleCard.tsx

변수 설명

darkMode
body 태그의 display-style 속성 값
타입 : DisplayStyleType
export enum DisplayStyleType { LIGHT = "LIGHT", DARK = "DARK", }
JavaScript
복사
ex) <body display-style=”DARK”>
toggleType
로컬 스토리지의 display-style-toggle 속성 값
타입 : DisplayStyleToggleType
export enum DisplayStyleToggleType { LIGHT = "LIGHT", DARK = "DARK", DEVICE = "DEVICE", }
TypeScript
복사
const darkModeQuery = window.matchMedia("(prefers-color-scheme: dark)");
window.matchMediaMediaQueryList 객체를 반환하는데, 이 객체의 matches 속성을 통해 현재 사용자가 다크모드를 선호하는지 여부를 알 수 있음
if (darkModeQuery.matches) { console.log("사용자가 다크모드를 선호합니다."); } else { console.log("사용자가 다크모드를 선호하지 않습니다."); }
JavaScript
복사

화면 스타일 카드 토글 버튼 클릭시 동작 프로세스

1.
토글 버튼 클릭할때마다 handleDisplayStyleButtonClick 호출
현재 클릭된 버튼이 아닌 다른 버튼을 누르면(ex. 다크 → 라이트 클릭)
setToggleType(버튼토글타입);
로컬스토리지에 변경된 토글타입 값 설정
localStorage.setItem("display-style-toggle", toggleType);
JavaScript
복사
2.
toggleType이 바뀌면 darkMode state 설정
기기설정 토글 버튼 클릭 → 기기설정에 따라 설정
setDarkMode(darkModeQuery.matches ? DisplayStyleType.DARK : DisplayStyleType.LIGHT);
TypeScript
복사
3.
darkMode state 변경시 body 태그의 display-style 속성에 변경된 darkMode 값 설정
document.body.setAttribute("display-style", darkMode);
JavaScript
복사