Sorry, your browser cannot access this site
This page requires browser support (enable) JavaScript
Learn more >

Gray-Ice

个人博客兼个人网站

网页切换白天黑夜模式,其实就是对一个变量进操作,举个栗子: 默认值是false, 进行判断,如果是false的话那么指定元素的颜色为白天的颜色,如果为true那么指定元素的颜色为黑夜的颜色。

那么为了方便理解,下面就上代码:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
:root{
--bg-color:white;
--title-color: black;
}
a.navbar-brand, a.logo {
font-family: "Lato", "Helvetica Neue", Helvetica, Arial, sans-serif;
color: var(--title-color) !important;
font-size: 2rem;
font-weight: bold;
margin-top: 0; }
.header {
background: var(--bg-color);
min-height: 7em;
height: auto;
border-radius: 0;
width: 100%;
color: #444342;
padding-top: 1em;
padding-bottom: 1em;
border-bottom: 1px solid rgba(0, 0, 0, 0.05); }

这是在我的css文件中的代码,可以看到,我定义了两个变量: –bg-color, –title-color,分别在background和color这两个地方用到了它们。那么到这里只是定义了变量并给变量赋值(定义变量时 : 后面的值即为赋给变量的值),接下来是在js中改变值了,不过为了方便理解我先放上我的html代码:

1
<h-switch v-model="color_model" @change="change_background">{{$t('m.day')}}/{{$t('m.night')}}</h-switch>

这里使用的是vue.js和heyui的 h-swith标签,效果是这样:image-20200510160457523image-20200510160645059, 当打开时(即按钮空白处为绿色时)返回true,再次点击按钮空白处重新变为白色,返回false。@change的意思是当发生改变时调用方法。

这是我在data(再次说明我使用的是vue.js)中设置的变量:

1
2
3
4
5
data(){
return {
color_model: false
}
}

那么接下来是用js改变css的变量的值:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
// 切换背景色
change_background:function(){
// 获取样式表
console.log(this.color_model)
if(this.color_model){
var styles = getComputedStyle(document.documentElement);
// 动态修改
document.documentElement.style.setProperty('--bg-color', '#292a2d');
document.documentElement.style.setProperty('--title-color', 'black');
}else{
getComputedStyle(document.documentElement);
// 动态修改
document.documentElement.style.setProperty('--bg-color', 'white');
document.documentElement.style.setProperty('--title-color', 'black');
}
}

这样就可以实现在点击时改变变量的值了,即可以实现切换白天黑夜模式了。

那么除了这种手动切换白天黑夜的方法,还有一种自动检测当前时间选择白天模式或是黑夜模式的方法:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
// 根据时间改变颜色
change_bg_by_time:function(){
let date = new Date();
let hour = date.getHours();
// 如果当前时间大于早上6点并小于下午6点,则切换成白天模式
if(hour>6 && hour<18){
this.color_model = false

}
else{
// 切换成黑夜模式
this.color_model = true
}
},

由于我使用的是vue.js,所以直接在钩子方法mounted中调用了该函数以达到自动切换的目的。我的页面上是手动切换与自动切换共存的,所以不需要全部抄下来,根据需要使用即可。

那么本次就到这里了~

评论



愿火焰指引你