赞
踩
网站夜间模式是怎样实现的?
夜间模式开关按钮:用来手动切换夜间模式的,会存储cookie。
自动夜间模式:当cookie为空时,浏览器时间大于22点小于6点时会自动进入夜间模式,并存储cookie。
后端配合:php判断是否有cookie,有的话直接输出夜间css,避免切换页面时网页闪烁。
引入黑夜 css
有title熟悉rel属性值同时包含alternate stylesheet的<link>作为备选样式CSS文件加载,默认不渲染。
切换夜间模式的 js 函数
- function switchNightMode() {
- var night = document.cookie.replace(/(?:(?:^|.;\s*)night\s*\=\s*([^;]*).*$)|^.*$/, "$1") || '0';
- if(night == '0'){
- document.querySelector('link[title="dark"]').disabled = true;
- document.querySelector('link[title="dark"]').disabled = false;
- document.cookie = "night=1;path=/"
- console.log('夜间模式开启');
- }else{
- document.querySelector('link[title="dark"]').disabled = true;
- document.cookie = "night=0;path=/"
- console.log('夜间模式关闭');
- }
- }
指定时间进入夜间模式
- (function(){
- if(document.cookie.replace(/(?:(?:^|.*;\s*)night\s*\=\s*([^;]*).*$)|^.*$/,"$1") === ''){
- if(new Date().getHours() > 22 || new Date().getHours() < 6){
- document.querySelector('link[title="dark"]').disabled = true;
- document.querySelector('link[title="dark"]').disabled = false;
- document.cookie = "night=1;path=/"
- console.log('夜间模式开启');
- }else{
- document.cookie = "night=0;path=/"
- console.log('夜间模式关闭');
- }
- }else{
- var night = document.cookie.replace(/(?:(?:^|.*;\s*)night\s*\=\s*([^;]*).*$)|^.*$/, "$1") ||'0';
- if(night == '0'){
- document.querySelector('link[title="dark"]').disabled = true;
- console.log('夜间模式关闭');
- }else if(night == '1'){
- document.querySelector('link[title="dark"]').disabled = true;
- document.querySelector('link[title="dark"]').disabled = false;
- console.log('夜间模式开启');
-
- }
- }
- })();

php 后端判断 cookie 进行加载 css
<link href="dark.css" rel="<?php if($_COOKIE['night'] != '1'){echo 'alternate ';} ?>stylesheet" type="text/css" title="dark"
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。