首页 > 其他分享 >js一键切换dark模式

js一键切换dark模式

时间:2022-10-30 11:03:16浏览次数:72  
标签:function 一键 theme else dark window var js

js一键切换dark模式

//初始化
$(function () {
let theme=$.cookie('theme');
if(theme=="dark"){
$("body").addClass('dark');
$("#theme").addClass('text-warning');
$("#theme").html('<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round" class="feather feather-sun"><circle cx="12" cy="12" r="5"></circle><line x1="12" y1="1" x2="12" y2="3"></line><line x1="12" y1="21" x2="12" y2="23"></line><line x1="4.22" y1="4.22" x2="5.64" y2="5.64"></line><line x1="18.36" y1="18.36" x2="19.78" y2="19.78"></line><line x1="1" y1="12" x2="3" y2="12"></line><line x1="21" y1="12" x2="23" y2="12"></line><line x1="4.22" y1="19.78" x2="5.64" y2="18.36"></line><line x1="18.36" y1="5.64" x2="19.78" y2="4.22"></line></svg>');
}else{
$("body").removeClass('dark');
$("#theme").removeClass('text-warning');
$("#theme").html('<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round" class="feather feather-moon"><path d="M21 12.79A9 9 0 1 1 11.21 3 7 7 0 0 0 21 12.79z"></path></svg>');
}
return false;
});

/**公共 **/
//主题切换
$("#theme").click(function () {
let theme=$.cookie('theme');
if(theme!="dark"){
$.cookie('theme','dark',{ expires: 7,path: '/' });
$("body").addClass('dark');
$(this).addClass('text-warning');
$(this).html('<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round" class="feather feather-sun"><circle cx="12" cy="12" r="5"></circle><line x1="12" y1="1" x2="12" y2="3"></line><line x1="12" y1="21" x2="12" y2="23"></line><line x1="4.22" y1="4.22" x2="5.64" y2="5.64"></line><line x1="18.36" y1="18.36" x2="19.78" y2="19.78"></line><line x1="1" y1="12" x2="3" y2="12"></line><line x1="21" y1="12" x2="23" y2="12"></line><line x1="4.22" y1="19.78" x2="5.64" y2="18.36"></line><line x1="18.36" y1="5.64" x2="19.78" y2="4.22"></line></svg>');
}else{
$.removeCookie('theme');
$.removeCookie('theme',{ expires: 7,path: '/' });
$("body").removeClass('dark');
$(this).removeClass('text-warning');
$(this).html('<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round" class="feather feather-moon"><path d="M21 12.79A9 9 0 1 1 11.21 3 7 7 0 0 0 21 12.79z"></path></svg>');
}
return false;
});

其他的一些js

//ajax
function Ajax(url,type,data,success,com=null,error2=null) {
$.ajax({
url:url,
headers: {'X-CSRF-TOKEN': $.cookie('X-CSRF-TOKEN')},
type:type,
data:data,
success:function (res) {
if(res.code==1){
success(res)
}else{
toastr.warning(res.msg||"未知错误");
}
},
error:function () {
toastr.error("Server Error");
if(error2!=null)
error2
},
complete:function (res) {
if(com !=null)
com(res)
}
})
}
function getObjectURL(file) {
var url = null ;
if (window.createObjectURL!=undefined) { // basic
url = window.createObjectURL(file) ;
} else if (window.URL!=undefined) { // mozilla(firefox)
url = window.URL.createObjectURL(file) ;
} else if (window.webkitURL!=undefined) { // webkit or chrome
url = window.webkitURL.createObjectURL(file) ;
}
return url ;
}
// 时间戳转多少分钟之前
function getDateDiff(dateTimeStamp){
var minute = 1000 * 60;
var hour = minute * 60;
var day = hour * 24;
var month = day * 30;
var now = new Date().getTime();
var diffValue = now - dateTimeStamp;
if(diffValue < 0){return;}
var monthC =diffValue/month;
var weekC =diffValue/(7*day);
var dayC =diffValue/day;
var hourC =diffValue/hour;
var minC =diffValue/minute;
if(monthC>=1){
result="" + parseInt(monthC) + "月前";
}
else if(weekC>=1){
result="" + parseInt(weekC) + "周前";
}
else if(dayC>=1){
result=""+ parseInt(dayC) +"天前";
}
else if(hourC>=1){
result=""+ parseInt(hourC) +"小时前";
}
else if(minC>=1){
result=""+ parseInt(minC) +"分钟前";
}else
result="刚刚";
return result;
}
function getDateTimeStamp(dateStr){
return Date.parse(dateStr.replace(/-/gi,"/"));
}

function goBack(){
if ((navigator.userAgent.indexOf('MSIE') >= 0) && (navigator.userAgent.indexOf('Opera') < 0)){ // IE
if(history.length > 0){
window.history.go( -1 );
}else{
window.opener=null;window.close();
}
}else{ //非IE浏览器
if (navigator.userAgent.indexOf('Firefox') >= 0 ||
navigator.userAgent.indexOf('Opera') >= 0 ||
navigator.userAgent.indexOf('Safari') >= 0 ||
navigator.userAgent.indexOf('Chrome') >= 0 ||
navigator.userAgent.indexOf('WebKit') >= 0){

if(window.history.length > 1){
window.history.go( -1 );
}else{
window.opener=null;window.close();
}
}else{ //未知的浏览器
window.history.go( -1 );
}
}
}

dark 其他方式:

<script src="https://cdn.jsdelivr.net/npm/[email protected]/lib/darkmode-js.min.js"></script>
<script>
function addDarkmodeWidget() {
new Darkmode().showWidget();
}
window.addEventListener('load', addDarkmodeWidget);
</script>

你要保守你心,胜过保守一切。

作者:刘俊涛的博客



标签:function,一键,theme,else,dark,window,var,js
From: https://blog.51cto.com/love/5807424

相关文章

  • 使用Three.js 心得系列一 如何创建三维网格三、使用Three.js 心得系列三 Three.js 如
    一、使用Three.js心得系列一如何创建三维网格二、使用Three.js心得系列二如何改变三维场景的GlTF模型的位置三、使用Three.js心得系列三Three.js如何加载GlTF文件 ......
  • 什么是Json,如何使用?
    JavaScriptObjectNotation:javascript的对象表示法。这是一种能传递对象的语法,可以是键值对,数组,以及其他对象。轻量级的数据传输方法。json格式:{key:{key:[{......
  • FastJson序列化和反序列化问题记录
    序列化与反序列化问题调用外部接口,http://100.111.55.67:9999/cmdb/v0.2.0/departments?page_size=1000,返回数据格式如下:{"code":0,"content":[{......
  • JS 删除数组中某个元素
    1、首先查找出元素在数组中的位置即索引(数组中本来就有indexOf()方法,方便学习给出代码):Array.prototype.indexOf=function(val){for(vari=0;i<this.len......
  • 使用vue、elementUI开发一个js SDK
    目录背景介绍实操步骤初始化项目1.初始化vue项目2.查阅vue-cli构建目标内容3.具体操作步骤1.在package.json文件中添加命令2.添加入口文件背景介绍本文主要介绍使......
  • js字符串转字节
    functionstringToByte(str){varlen,c;len=str.length;varbytes=[];for(vari=0;i<len;i++){c=str.charCodeAt(i);if(c>=0x010000&......
  • python 与C++ 利用socket实现json数据传输
    单机python与C++程序利用socket实现json数据传输目录单机python与C++程序利用socket实现json数据传输需求实现方法的选择具体实现流程图示涉及到的技术1socket......
  • js中.?、??、??=的用法和含义
    一、可选链(.?)如果一个值为null、或者是undefined那么我们再去用点操作符去调用一个方法或者访问一个属性会发生什么?其实这种情况就相当于直接在undefined上面访问na......
  • 【JS】数据类型检测
    数据类型检测方法:  1.typeof  2.instanceof  3. Object.prototype.toSting.call()/*1.typeof运算符返回值:参数类型字符串-可以区分基本数......
  • 深入 Slate.js 编辑器 - 引言
    深入Slate.js编辑器-引言钉钉文档阿里巴巴-智能协同与视频云-钉钉文档团队​关注他 54人赞同了该文章我们是钉钉的文档协同团队,我们在......