不懂先生

夜间模式
序言  看着学长的网站上 soarli的花园夜间模式花里胡哨的在家学习js将近一个月,终于实现...
扫描右侧二维码阅读全文
07
2021/08

夜间模式

序言

  看着学长的网站上 soarli的花园夜间模式花里胡哨的在家学习js将近一个月,终于实现了初步的夜间模式切换。

正文

初步结构2021.8.1

  基本思路是做一个夜间模式下的css文件,然后利用js判断本机计算机时间,如果事件在这个时间段就触发js,给html标签添加darkMode类,如果不在这个时间段就给html标签去掉这个类,以此来改变网页源码中的属性以实现夜间模式(如:背景颜色、字体颜色、模块透明度),另外引入了一个动画切换特效,来进行模式之间的转换。

白昼模式下

1.png

夜间模式下

2.png

第一步

  需要在首页添加一个切换的图标
QQ图片20210807193924.png
光有这个这个图标还不行,因为它是触发js事件的开关,所以需要给他添加onlcick(鼠标点击事件)代码如下:

css代码
1.页面点击图标
<img src="image/dark.png" class="dayImg" style="width: 3rem;height: 3rem;position: fixed;bottom: 2rem;right: 0.5rem;z-index: 9999;cursor: pointer;" />
2.darkmode模式css代码和切换特效css代码
.darkMode body{
      background:black!important;//!important 使得这个代码强制使用,才能覆盖之前的css代码
      color: #9e9e9e!important;
}
/*.darkMode #beian{*/
    /*color:#AFEEEE!important;*/
/*        color:#40E0D0!important;*/
/*}*/
.darkMode p{
    /*color: #f0ffff!important;*/
    color: #9e9e9e!important;
}
.darkMode .container p{
    color: #9e9e9e!important;
}
.darkMode .bossdong-item{
    opacity: 0.7!important;
}
.darkMode .bossdong-item p,h3{
    color:white!important;
}
.darkMode .bossdong-item-bottom p{
    color: #9e9e9e!important;
}
.Cuteen_DarkSky,.Cuteen_DarkSky:before {
    content: "";
    position: fixed;
    left: 0;
    right: 0;
    top: 0;
    bottom: 0;
    z-index: 88888888;//因为想要让这个动画展示,其实质是将之前的网页遮挡,原理是让添加的动画盒子堆叠顺序排第一
}

.Cuteen_DarkSky {
    background: linear-gradient(#feb8b0,#fef9db)
}

.Cuteen_DarkSky:before {
    transition: 2s ease all;
    opacity: 0;
    background: linear-gradient(#4c3f6d,#6c62bb,#93b1ed)
}

.darkMode .Cuteen_DarkSky:before {
    opacity: 1;
}

.Cuteen_DarkPlanet {
    z-index: 99999999;
    position: fixed;
    left: -50%;
    top: -50%;
    width: 200%;
    height: 200%;
    -webkit-animation: CuteenPlanetMove 2s cubic-bezier(.7,0,0,1);
    animation: CuteenPlanetMove 2s cubic-bezier(.7,0,0,1);
    transform-origin: center bottom;
}

@-webkit-keyframes CuteenPlanetMove {
    0% {
        transform: rotate(0);
    }

    to {
        transform: rotate(360deg);
    }
}

@keyframes CuteenPlanetMove {
    0% {
        transform: rotate(0);
    }

    to {
        transform: rotate(360deg);
    }
}

.Cuteen_DarkPlanet:after {
    position: absolute;
    left: 35%;
    top: 40%;
    width: 9.375rem;
    height: 9.375rem;
    border-radius: 50%;
    content: "";
    background: linear-gradient(#fefefe,#fffbe8);
}
js代码
$(function(){
  var flag = 0;//节流阀,来控制图片点击触发的是增加darkmode属性还是去除darkmode属性
  var myDate = new Date;
    var h = myDate.getHours()+1;//获取当前小时数(0-23)
    var timer = setInterval(function(){  
      if(h>=6&&h<=19){//如果时间在6点到19点则移除darkmode类
        flag = 1;
        $(document.documentElement).removeClass("darkMode"); 
        // clearInterval(timer);
     
       }
      else{
        stopp();//停止樱花动画
        flag = 0;
        $(document.documentElement).addClass("darkMode");
        clearInterval(timer);
     }
  },1)
    console.log(flag);
    $(".dayImg").click(function(){
      clearInterval(timer);
        $('<div class="Cuteen_DarkSky"><div class="Cuteen_DarkPlanet"></div></div>').appendTo($("body"));//添加这个div盒子,用来盛放特效
        if(flag ==1 ){
            $(document.documentElement).addClass("darkMode");          
            stopp();//关闭樱花 
            flag =0;     
        }
        else if(flag == 0){
            stopp();//关闭樱花
            $(document.documentElement).removeClass("darkMode");     
            flag = 1;
        }   
        setTimeout(function() { //模式切换后让这个动画从页面消失
           $(".Cuteen_DarkSky").fadeOut(1e3, function() {
              $(this).remove()
           })
        }, 2e3)
    })      
})
Last modification:January 18th, 2022 at 04:29 pm

Leave a Comment