您现在的位置是:首页 > 网站制作 > 网站建设网站建设
网站夜间模式的实现
A Xing2020-07-14【网站建设】人已围观
简介夜间模式开关按钮:用来手动切换夜间模式的,会存储cookie。
自动夜间模式:当cookie为空时,浏览器时间大于22点小于6点时会自动进入夜间模式,并存储cookie。
后端配合:php判断是否有cookie,有的话直接输出夜间css,避免切换页面时网页闪烁。
整体流程
夜间模式开关按钮:用来手动切换夜间模式的,会存储cookie。
自动夜间模式:当cookie为空时,浏览器时间大于22点小于6点时会自动进入夜间模式,并存储cookie。
后端配合:php判断是否有cookie,有的话直接输出夜间css,避免切换页面时网页闪烁。
具体操作
引入黑夜 css
<link href="dark.css" rel="alternate stylesheet" type="text/css" title="dark">
有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">
适配 Mac 的 Dark Mode
因为没有js的判断方法,所以需要插入段,css然后用js判断css的变化,来监控是否进入夜间模式
插入 css
html {
content: "";
}
/* Light mode */
@media (prefers-color-scheme: light) {
html {
content: "light";
}
}
/* Dark mode */
@media (prefers-color-scheme: dark) {
html {
content: "dark";
}
}
前端使用 JS 检查
const mode = getComputedStyle(document.documentElement).getPropertyValue('content');
if(mode == '"dark"'){alert('进入夜间模式');}
最后
在dark.css
里重写一些元素的背景色文字色等等。
Tags:模式
很赞哦! ()
上一篇:给网站内容如何添加一个原创标识
下一篇:0基础的新手如何搭建个人网站
相关文章
随机图文
域名注册估价方法和技巧
今天登陆我的阿里云账号里面发现还有几个域名注册的优惠劵,于是就寻思着不能浪费了这 10 元钱的域名优惠劵了。就开始找合适的域名来注册,找了半个小时让我给找到一个给网站内容如何添加一个原创标识
无聊打发时间,利用css简单写一个给网站文章内容的右上角添加一个原创标识; 用来提醒他人本篇为本站原创,转发文章时候请附转载地址。帝国cms 首页或者列表无图,不使用默认图片的方法
帝国cms列表页图文展示,或者首页图文展示,如果使用全图和文字,编辑起来比较麻烦,因为每一篇文章,你都得花时间去配图,所以,可有使用以下方法来实现。帝国cms,自定义列表实现首页分页
第一步,增加列表模板。第二步,增加自定义列表。最后一步,刷新。以后就不要刷新首页了,刷新此处,自定义列表即可