当前位置:首页 > 站长杂谈 > 正文内容

给网站添加一个夜间模式

小宝4年前 (2020-04-17)站长杂谈1422

教大家怎么给自己的网站添加一个夜间模式,当然代码不是我制作开发的,我不生产代码,我只是代码的搬运工(广告词很熟悉哈),好了不多说废话,这个代码是在网上找到,也不知道原始作者是谁,感谢您的无私奉献。


首先,我们需要在主题模板中打开“footer.php”文件,在“</body></html>”前添加如下代码:

<script type="text/javascript">function switchNightMode(){
    var night = document.cookie.replace(/(?:(?:^|.*;\s*)night\s*\=\s*([^;]*).*$)|^.*$/, "$1") || '0';
    if(night == '0'){
        document.body.classList.add('night');
        document.cookie = "night=1;path=/"
        console.log('夜间模式开启');
    }else{
        document.body.classList.remove('night');
        document.cookie = "night=0;path=/"
        console.log('夜间模式关闭');
    }}</script>

保存文件即可,如果想要实现自动切换夜间模式,那么直接复制如下代码:

<script type="text/javascript">function switchNightMode(){
    var night = document.cookie.replace(/(?:(?:^|.*;\s*)night\s*\=\s*([^;]*).*$)|^.*$/, "$1") || '0';
    if(night == '0'){
        document.body.classList.add('night');
        document.cookie = "night=1;path=/"
        console.log('夜间模式开启');
    }else{
        document.body.classList.remove('night');
        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() < 5){
            document.body.classList.add('night');
            document.cookie = "night=1;path=/";
            console.log('夜间模式自动开启');
        }else{
            document.body.classList.remove('night');
            document.cookie = "night=0;path=/";
            console.log('夜间模式自动关闭');
        }
    }else{
        var night = document.cookie.replace(/(?:(?:^|.*;\s*)night\s*\=\s*([^;]*).*$)|^.*$/, "$1") || '0';
        if(night == '0'){
            document.body.classList.remove('night');
        }else if(night == '1'){
            document.body.classList.add('night');
        }
    }})();</script>


代码中的 22 和 5 就是晚上22点开始到第二天的5点结束,其实这段代码并不严谨,为什么这么说呢?此代码是针对没有记录cookies的网站来说有效,一旦手动开启或者关闭过夜间模式,那么这个自动是失效了,除非清空浏览器的cookies,总之这里目前没有办法完美适配(我技术不行),其实我们可以在js做个判断,就是每天的22点时候判断cookies是否是夜间模式,如果不是,弹出对话框询问是否开启夜间模式,如果是就不提示。这么说您应该晓得吧,说的简单,但是,,,我不会写。。。咳咳!不扯了,继续教程。


然后打开网站的“header.php”文件,我们需要给网站填写一个按钮,以此来手动开启和关闭夜间模式:

<a class="at-night" href="javascript:switchNightMode()" target="_self"></a>

复制如上代码,放在你认为合适的地方,然后保存,登录后台,清空主题模板缓存编译,然后打开首页,测试夜间模式是否有效。


其实教程到这才算是完成一般,因为你在测试的过程中会发现,开启夜间模式并没有效果,,,嗯嗯是的,因为你们没有适配夜间模式的css,这个教程写不出,因为每个主题模板的div框架和css命名不同,无法统一,所以需要您自己去查找对应的class类,然后添加夜间模式的样式,例如:

body.night DIV名称 {
    background-color: #263238;
    color: #aaa; }

这样一来开启夜间模式后背景色就换成了黑色,字体是白色,如果网站css框架太多,相信我这绝对是一个大坑,哦对了,防止css样式重叠,建议在css样式表最底下适配夜间模式的代码。


这些都配置完成,前台查看首页,你会发现在夜间模式下会出现闪屏,就是,打开一个页面的瞬间是正常模式,然后在1秒(电脑速度慢的时候可不止1秒)后转换成夜间模式,哇塞,简直就是亮瞎眼有木有?别急,教你一个办法,打开“header.php”文件,在<body>上添加如下代码:(此代码仅限Z-Blog)

<body class="{if GetVars('night','COOKIE') } night{/if}">

其他程序(TP5或者Typecho等)使用这个:

这样就解决闪屏的BUG了,当检测到cookie相关字段时直接输出body的class为night,就可以已防止页面闪烁。好了,准备下班~有不懂得留言,别告诉我让我给你们适配夜间模式css,我做不到,,,我的锦鲤目前还是适配中,代码太多,太焦躁。。。

哦对了,还是那句话,修改前记得备份主题模板文件!

扫描二维码推送至手机访问。

版权声明:本文由 菠萝博客 发布,如需转载请注明出处。

本文链接:https://boluobk.cn/post/52.html

分享给朋友:

相关文章

虚拟主机域名绑定教程

虚拟主机域名绑定教程

1.登陆域名管理平台,找到要解析的域名,然后点击“解析”(这里以腾讯云为例)。2.点击“添加记录”。3.打开解析界面就可以开始解析了。域名解析说明:A记录解析(IP解析)主机名处 填写 WWW  IP地址处填写对应IP 点击添加按...

搭建博客网站的注意事项

搭建博客网站的注意事项

最近有很多人想要搭建一个博客网,类似于个人博客,资源分享的一个网站,但是又不知道如何去搭建和运营和后期的维护,菠萝博客搭建了没有多久,也是有人问我这个博客程序在哪里可以找到。首先选择一个博客的源代码是非常重要的,一些人为了图方便就在网络上面...

哀悼日网站全站变灰CSS代码

哀悼日网站全站变灰CSS代码

为深切哀悼抗击新冠肺炎疫情斗争牺牲烈士和逝世同胞,响应国务院发布的2020年4月4日全国性哀悼活动! 新型冠状病毒肺炎疫情阻击战打响以来,全国各地抗疫工作人员与同胞们一直都战斗在一线, 对他们的付出,菠萝博客致以最崇高的敬意!为...

利用Haproxy解决SMTP发信暴露服务器源IP的方法

最近有人问我自己搭建的WHMCS系统用SMTP发信会暴露服务器IP,在这里发一下怎么用Haproxy解决这个问题。WHMCS 经常因为邮件问题被攻击,现在来给大家介绍一个邮件转发服务器的设置办法,可以完全隐藏掉真实的源站地址。我们以 Cen...

zblog报错“授权文件非法”的错误原因和解决办法

zblog报错“授权文件非法”的错误原因和解决办法

最近有几位用户向我们反应在安装zblog老版本的时候发现后台会提示“授权文件非法”,错误截图如下:经过检查后得知此问题的原因是:zblog官方插件“应用中心”在2018-12-19升级的时候出现了一个bug导致的。错误解决办法:更新到最新版...

KOS工具箱【免费】一键设置Kangle EP每日备份数据到FTP空间

KOS工具箱【免费】一键设置Kangle EP每日备份数据到FTP空间

介绍KOS云备份免费版● [免费]保留最新3份数据● [免费]备份自己FTP存储空间● [免费]每日备份网站和数据库安装前往KOS工具箱(Kangle工具箱)官网;安装并运行KOS工具箱;安装完成人后,输入kostool.cn启动KOS工具...

发表评论

访客

看不清,换一张

◎欢迎参与讨论,请在这里发表您的看法和观点。