1.根据时间切换背景
先把原来layout.ejs
中根据config.yml
设置背景的代码删了,调整一下样式。
不多废话了,直接上代码,简单得很。
<script type="text/javascript">
(function () {
var date = new Date();
var hour = date.getHours();
var bgView = document.getElementById("background");
if (hour >= 6 && hour < 16) {
bgView.style.backgroundImage = "url(https://example.com/example2.png)"
}
if (hour >= 16 && hour < 19) {
bgView.style.backgroundImage = "url(https://example.com/example3.png)"
}
if (hour >= 21 || hour < 7) {
bgView.style.backgroundImage = "url(https://example.com/example4.png)"
}
})();
</script>
2.添加夜间模式
照例,先上代码。这是body部分的css,具体基本覆盖所有class,太冗长了,感兴趣的可以F12扒一下我的。
/* 夜间模式 */
body.dark {
background-color: #212121;
color: #cccccc;
a {
color: #e1e1e1;
&:hover {
color: #82b1ff;
}
}
}
然后是js,太冗长了。用了大量if,可读性比较差,用switch重写效果应该也不太好,先这样吧。
<script type="text/javascript">
function closeDarkMode0() {
document.body.classList.remove('dark');
document.cookie = "dark=0;path=/"
bgView.style.backgroundImage = "url(https://cdn.jsdelivr.net/gh/wtrwx/wtrwxIMG/background.png)"
header.style.height = "100%";
//console.log('夜间模式关闭0');
}
function openDarkMode1() {
document.body.classList.add('dark');
document.cookie = "dark=1;path=/"
bgView.style.backgroundImage = ""
header.style.height = "50%";
//console.log('夜间模式开启1');
}
function closeDarkMode2() {
document.body.classList.remove('dark');
document.cookie = "dark=2;path=/"
bgView.style.backgroundImage = "url(https://cdn.jsdelivr.net/gh/wtrwx/wtrwxIMG/background.png)"
header.style.height = "100%";
//console.log('夜间模式关闭2');
}
function openDarkMode3() {
document.body.classList.add('dark');
document.cookie = "dark=3;path=/"
bgView.style.backgroundImage = ""
header.style.height = "50%";
//console.log('夜间模式开启3');
}
(function () {
var date = new Date();
var hour = date.getHours();
var dark = document.cookie.replace(/(?:(?:^|.*;\s*)dark\s*\=\s*([^;]*).*$)|^.*$/, "$1");
if (matchMedia('(prefers-color-scheme: dark)').matches) {
openDarkMode3();
} else {
if (hour >= 21 || hour < 7) {
if (dark == '' || dark == '0' || dark == '1' || dark == '3') {
openDarkMode3();
} else if (dark == '2') {
closeDarkMode2();
}
} else {
if (dark == '' || dark == '0' || dark == '3') {
closeDarkMode0();
} else if (dark == '2') {
closeDarkMode2();
}
if (dark == '1') {
openDarkMode1();
}
}
}
})();
function switchDarkMode() {
var dark = document.cookie.replace(/(?:(?:^|.*;\s*)dark\s*\=\s*([^;]*).*$)|^.*$/, "$1");
var date = new Date();
var hour = date.getHours();
if (hour >= 21 || hour < 7) {
if (dark == '1' || dark == '3') {
closeDarkMode2();
} else if (dark == '2') {
openDarkMode1();
}
} else {
if (dark == '0' || dark == '2') {
openDarkMode1();
} else if (dark == '1' || dark == '3') {
closeDarkMode0();
}
}
}
</script>
3.自定义滚动条样式
在\myBlog\themes\fluid\source\css\_pages\_base\base.styl
中添加以下代码。
/* 自定义滚动条 */
/* 定义滚动条高宽及背景 高宽分别对应横竖滚动条的尺寸 */
::-webkit-scrollbar {
width: 10px;
height: 16px;
}
/* 定义滚动条轨道 */
::-webkit-scrollbar-track {
background-color: rgba(227, 242, 253, 1);
}
/* 定义滑块 */
::-webkit-scrollbar-thumb {
background-color: rgba(26, 115, 232, 0.502);
}
4.添加Sncakbar
Snackbar是Android挺好用的一个组件,用css仿一下吧,效果可以点代码框旁边的copy体验。
这部分是抄菜鸟工具的。
#snackbar {
visibility: hidden;
min-width: 300px;
margin-left: -150px;
background-color: #323232;
color: #fff;
text-align: center;
border-radius: 2px;
padding: 12px;
position: fixed;
z-index: 4;
left: 50%;
bottom: 0px;
font-size: 15px;
}
#snackbar.show {
visibility: visible;
z-index: 4;
-webkit-animation: fadein 0.5s, fadeout 0.5s 2.5s;
animation: fadein 0.5s, fadeout 0.5s 2.5s;
}
@keyframes fadein {
from {
bottom: -20px;
opacity: 0;
}
to {
bottom: 0;
opacity: 1;
}
}
@keyframes fadein {
from {
bottom: -20;
opacity: 0;
}
to {
bottom: 0;
opacity: 1;
}
}
@keyframes fadeout {
from {
bottom: 0;
opacity: 1;
}
to {
bottom: -20px;
opacity: 0;
}
}
@keyframes fadeout {
from {
bottom: 0;
opacity: 1;
}
to {
bottom: -20px;
opacity: 0;
}
}
html:
<div id="snackbar">内容</div>
js:
function showSnackbar(text) {
var x = document.getElementById("snackbar")
x.innerHTML = text;
x.className = "show";
setTimeout(function () {
x.className = x.className.replace("show", "");
}, 3000);
}
调用方法:
showSnackbar("提示内容");
本博客所有文章除特别声明外,均采用 CC BY-SA 3.0协议 。转载请注明出处!