반응에서 쉬운 다크 모드 (및 다중 색상 테마!)
이 안내서는 사용 편의성 및 팀 온 보딩에 중점을 둔 React 응용 프로그램에서 간단한 다크 모드 구현을 보여줍니다. 복잡한 CSS 전략을 피하고 깨끗하고 효율적인 솔루션을 위해 CSS 변수 및 데이터 속성을 활용합니다.
대형 React 프로젝트에서 스타일을 관리하고 Dark Mode를 구현하는 데 어려움을 겪는 것은 종종 복잡한 솔루션으로 이어집니다. 많은 옵션이 존재하지만 특정 CSS 방법론이나 프레임 워크에 자주 의존합니다. 이 접근법은 단순성과 속도를 우선시하여 다양한 기술 수준의 팀에 이상적입니다.
CSS 변수와 useLocalStorage
후크를 결합한 개선 된 방법은 강력하고 사용자 친화적 인 테마 시스템을 제공합니다. 이 튜토리얼은이 시스템을 처음부터 처음부터 설정하고 실행하여 새로운 React 앱에서 효과를 보여줍니다. 또한 강화 된 CSS 조직을위한 react-scoped-css
와의 통합을 보여줍니다.
프로젝트 설정
이 안내서는 CSS, JavaScript 및 React에 대한 기본적인 친숙 함을 가정합니다. 노드와 NPM이 설치되어 있는지 확인하십시오. 다음을 사용하여 새 React 앱을 만듭니다.
NPX Create-React-App Easy-React-Themes--template typescript
(JavaScript의 경우 --template typescript
easy-react-themes
하십시오. 코드 편집기 (예 : cd easy-react-themes; code .
)를 사용하여 코드 vs 코드에서 프로젝트를 열고 개발 서버 ( npm start
)를 시작하십시오. 마지막으로 use-local-storage
설치하십시오.
npm 나는 로컬 스토리지를 사용합니다
코드 구현
App.css
의 내용을 지우십시오. index.css
에서 CSS 변수를 사용하여 테마를 정의하십시오.
: 루트 { -백백 : 흰색; --text- 프라이 사항 : 검은 색; -text-secondary : RoyalBlue; -Accent : 자주색; } [Data-Theme = 'Dark'] { -백백 : 검은 색; --text- 프라이밍 : 흰색; --text-secondary : 회색; -Accent : Darkred; }
이는 CSS 사용자 정의 속성 (변수) 및 데이터 속성을 사용합니다. [data-theme='dark']
선택기는 data-theme
속성이 'Dark'로 설정되면 :root
변수를 무시합니다.
App.tsx
에서 useLocalStorage
가져 오기 :
'사용-로컬 스토리지'에서 Uselocalstorage 가져 오기;
그런 다음 테마 상태를 관리합니다.
const defaultdark = wind const [테마, setTheme] = uselocalstorage ( '테마', defaultdark? 'dark': 'light');
이는 useLocalStorage
사용하여 브라우저 기본 설정에 관계없이 세션에서 테마 선택을 지속합니다. data-theme
속성은 최상위에 적용됩니다<div> :<pre class="brush:php;toolbar:false"><div data-theme="{theme}">
{/ * 귀하의 앱 컨텐츠 여기 */}
</div></pre>
<p>CSS 변수를 사용하여 <code>App.css
에서 구성 요소를 스타일링하십시오.
.앱 { 색상 : var (-Text-Primary); 배경색 : var (-배경); / * ... 다른 스타일 ... */ 전환 : 모든 .5; } 버튼 { / * ... CSS 변수를 사용하는 버튼 스타일 ... */ 전환 : 모든 .5; }
이렇게하면 테마가 변경되면 스타일이 원활하게 업데이트됩니다. 테마를 전환하려면 버튼을 추가하십시오.
응용 프로그램 확장
시스템의 확장 성을 보여주기 위해 새로운 구성 요소 (예 : 색상 정사각형)를 추가하십시오. 이 구성 요소를 App.tsx
로 가져옵니다.
보너스 : React Scoped CSS와 통합
개선 된 CSS 조직의 경우 react-scoped-css
통합하십시오. Craco 및 craco-plugin-scoped-css
의 설치 지침을 따르십시오. CSS 파일의 이름을 바꾸고 (예 : app.css
를 app.scoped.css
)로 바꾸고 그에 따라 가져 오기를 업데이트하십시오. CSS 변수의 글로벌 적용을 보장하기 위해 index.css
꺼내려고합니다.
이 접근법은 RECT 응용 프로그램에서 다크 모드 및 여러 테마를 구현하기위한 간단하고 효과적이며 유지 관리 가능한 솔루션을 제공합니다. Github 저장소 및 Live Demo는 추가 리소스를 제공합니다.
위 내용은 반응에서 쉬운 다크 모드 (및 다중 색상 테마!)의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

핫 AI 도구

Undress AI Tool
무료로 이미지를 벗다

Undresser.AI Undress
사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover
사진에서 옷을 제거하는 온라인 AI 도구입니다.

Stock Market GPT
더 현명한 결정을 위한 AI 기반 투자 연구

인기 기사

뜨거운 도구

메모장++7.3.1
사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전
중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기
강력한 PHP 통합 개발 환경

드림위버 CS6
시각적 웹 개발 도구

SublimeText3 Mac 버전
신 수준의 코드 편집 소프트웨어(SublimeText3)

HTML 및 CSS를 사용하여 JavaScript없이 드롭 다운 메뉴를 만듭니다. 2. 호버 의사 클래스를 통해 하위 메뉴 디스플레이를 트리거합니다. 3. 중첩 된 목록을 사용하여 구조를 구축하고 CSS에 숨겨진 및 매달린 디스플레이 효과를 설정하십시오. 4. 시각적 경험을 향상시키기 위해 전환 애니메이션을 추가 할 수 있습니다.

사용 OBJECT-FITORMAX-WIDTHWITHHEIGHT : AutoTopRevEntImagedIsportion; 개체-피트 컨트롤 하위 링크 컨테이너 및 max width : 100%;

ThePointer-EventsPropertyIncsscontrolswheTheranElementCanBethetArgetOfPointerEvents.1.UsePointer-Events : nonetodisableInterActionSlikeClickSorHoverSwHileKepingTheElementSibleSible.2.AppLyItToOverLayStoClick-throughtounderlyELELENELENELENELEMEN

usethebox-shadowpropertytoadddropshadows.definehorizontalandverticaloffsets, 흐림, 스프레드, 색상 및 옵션 alinsetforinnershadows.multipleshadowsarecomma-separated.example : box-shadow : 5px10px8pxrgba (0,0,0,0.3);

thecssfilterpropertyallowseaseasyimagestylingwitheffects likeblur, brightness, andgrayscale.usefilter : 필터-기능 (value) onimagesorbackgroundimages.commonFunctionsIncludeBlur (px), 밝기 (%), Grayscale (%), 채도 (%) 및 hue-merate (degrotate)

CSS 그라디언트 배경을 추가하려면 배경 또는 배경 이미지 속성을 사용하여 Linear-Gradient (), Radial-Gradient ()와 같은 함수와 협력하십시오. 먼저 그라디언트 유형을 선택하고 방향과 색상을 설정하고 컬러 도킹 포인트, 모양, 크기 및 선형 그레이드 (Toright,#ff7e5f,#feb47b)와 같은 기타 매개 변수를 통해 미세하게 제어하여 왼쪽에서 오른쪽으로 선형 그라디언트를 생성하여 Radial-Gradient (원,#ff9a9e,#fecfef)를 생성하여 원형 구배를 만들어냅니다.

Border-Radius : 50%를 사용하여 폭과 높이의 이미지를 원으로 바꾸고, 객체 적합 및 종횡비를 결합하여 모양과 자르기를 보장하고, 경계, 그림자 및 기타 스타일을 추가하여 시각 효과를 향상시킵니다.

간격, 행 갭 또는 열 갭 속성을 사용하여 CSSGRID 레이아웃에서 그리드 항목간에 간격을 만듭니다. GAP는 한두 길이의 값을 수용 할 수있는 행 열격 간격을 설정하기위한 약어 속성입니다. 행 갭 및 열 갭은 행과 열 사이의 간격을 개별적으로 제어하고 PX, REM 및 %와 같은지지 장치를 제어합니다.
