다크보드 전환 버튼 추가 질문입니다
본문
현재 밝은 모드만있어서 다크모드 전환 버튼을 추가해서
전환가능하게 사이트를 만들고 싶은데
어떻게 해야 가능할까요 검색해보니 완전 테마를 다크모드로만 바꾸는거밖에 안나오네요 ㅜㅠ
감사합니다.
답변 6
darkreader 플러그인을 사용하는 방법이 있습니다. https://www.npmjs.com/package/darkreader
* head.sub.php
<?php
// head.sub.php 하단에 추가
$darkreader = get_cookie('darkreader');
?>
<!-- darkreader 스크립트 추가 -->
<script src="https://cdnjs.cloudflare.com/ajax/libs/darkreader/4.9.58/darkreader.min.js"></script>
<script>
// 다크모드 토글 함수
function toggleDarkMode() {
if (DarkReader.isEnabled()) {
DarkReader.disable();
set_cookie('darkreader', '', 365);
} else {
DarkReader.enable({
brightness: 100,
contrast: 90,
sepia: 10
});
set_cookie('darkreader', 'enabled', 365);
}
}
// 초기 다크모드 상태 설정
window.addEventListener('DOMContentLoaded', () => {
if('<?php echo $darkreader?>' === 'enabled') {
DarkReader.enable({
brightness: 100,
contrast: 90,
sepia: 10
});
}
});
</script>
* head.php or tail.php
<button type="button" onclick="toggleDarkMode()" class="btn_dark_mode">
<span class="sound_only">다크모드 전환</span>
<i class="fa fa-moon-o" aria-hidden="true"></i>
</button>
<style>
.btn_dark_mode {
position: fixed;
right: 20px;
bottom: 20px;
width: 50px;
height: 50px;
border: 1px solid #ddd;
border-radius: 50%;
background: #fff;
font-size: 20px;
z-index: 999;
cursor: pointer;
transition: all 0.3s ease;
}
.btn_dark_mode:hover {
background: #eee;
}
/* 다크모드일 때 */
.darkreader .btn_dark_mode {
background: #333;
border-color: #666;
color: #fff;
}
</style>
<body 태그에 자바스크립트로 쿠키로 구현하거나 로칼스토리지에서 밝은 모드와 다크모드 값이 저장되게 햔 후 <body 에 클래스가 적용되게 한 후
기존의 css 를 밝은 클래스와 다크 클래스가 앞에 들어가는 것으로 2가지를 만들여서 적용하면 될 것입니다.
작업양이 만만치 않을 것입니다.
.
신)나리야빌더가 다크모드 전환 기능 지원합니다.
마르스컴파니님 2-16일자 쏘스에서 get_cookie가 undefined 에러가 생겨 cookie가 생성되지 않는 오류가 생겨서 전 이렇게 바꿨습니다.
참고로, cookie가 없으면 페이지바꿀때마다 다크모드 버튼을 매번 눌러주는 불편함이 생겨요.
//$darkreader = get_cookie('darkreader');//not working as null cookie, so use below code.
$darkreader = isset($_COOKIE['darkreader']) ? $_COOKIE['darkreader'] : '';
test :
https://atlanta.infinityfreeapp.com/
우측 하단부에 dark mode button 있슴
!-->아마 theme가 좀 다른 거 같은데...
이거 참고 함 해보세요..
/* 다크모드 전체 배경 스타일 추가 */
.darkreader body {
background-color: #1a1a1a !important;
color: #ffffff !important;
}
/* 헤더 배경 다크모드 스타일 */
.darkreader #hd {
background-color: #2d2d2d !important;
}
/* 메뉴 배경 다크모드 스타일 */
.darkreader #gnb {
background-color: #2d2d2d !important;
}
/* 사이드바 다크모드 스타일 */
.darkreader #aside {
background-color: #2d2d2d !important;
}
/* 푸터 다크모드 스타일 */
.darkreader #ft {
background-color: #2d2d2d !important;
color: #ffffff !important;
}
/* 링크 색상 다크모드 스타일 */
.darkreader a {
color: #9ecaed !important;
}
/* 박스 및 컨테이너 다크모드 스타일 */
.darkreader .box {
background-color: #2d2d2d !important;
border-color: #404040 !important;
}
참고해서 조금씩 수정해보세요...
!-->
답변을 작성하시기 전에 로그인 해주세요.