网站夜间模式的实现思路与详细教程分享

网站夜间模式是怎样实现的?

整体思路

夜间模式开关按钮:用来手动切换夜间模式的,会存储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"

 

  • 3
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

$encoding

分享不容易,来个打赏吧!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值