static_proj/clock/clock.html
2020-12-02 22:57:53 +08:00

158 lines
3.4 KiB
HTML

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta name="referrer" content="no-referrer">
<title>Clock</title>
<style>
html {
user-select: none;
}
#date {
text-align: center;
font-size: 2rem;
font-weight: bold;
color: #fff;
}
#timer {
text-align: center;
font-size: 4rem;
font-weight: bold;
color: #fff;
}
#img {
object-fit: cover;
z-index: -2;
display: block;
}
#mark {
z-index: -1;
background: rgba(0, 0, 0, 0.6);
}
.full-page {
position: fixed;
top: 0;
left: 0;
height: 100%;
width: 100%;
}
.center {
display: flex;
flex-direction: column;
align-items: center;
justify-content: center;
}
</style>
</head>
<body>
<img id="img" class="full-page">
<div id="mark" class="full-page"></div>
<main class="full-page center">
<div id="date">00月00日</div>
<div id="timer">00:00</div>
</main>
</div>
</body>
<script>
//px2rem
function setHtmlFontSize() {
const htmlWidth = document.documentElement.clientWidth || document.body.clientWidth
const htmlDom = document.getElementsByTagName('html')[0]
if (htmlWidth >= 1200) htmlDom.style.fontSize = 1200 / 12 + 'px'
else htmlDom.style.fontSize = htmlWidth / 14 + 'px'
}
// 屏幕大小改变时触发
onresize = setHtmlFontSize
//进入全屏
function requestFullScreen() {
var de = document.body;
if (de.requestFullscreen) {
de.requestFullscreen();
} else if (de.mozRequestFullScreen) {
de.mozRequestFullScreen();
} else if (de.webkitRequestFullScreen) {
de.webkitRequestFullScreen();
}
}
// 获取元素
const timer = document.getElementById('timer')
const img = document.getElementById('img')
const date = document.getElementById('date')
// 是否显示冒号
let showSymbol = true
// 缓存分钟数判断换背景
let minute_cache = 0
// 处理显示时间
function clock() {
let now = new Date()
let hour = now.getHours() + ''
let minute = now.getMinutes() + ''
let month = (now.getMonth() + 1) + ''
let day = now.getDate() + ''
timer.innerHTML =
`${hour.padStart(2,'0')}<span ${showSymbol ? '' : 'style="opacity:0"'}>:</span>${minute.padStart(2,'0')}`
date.innerHTML = `${month.padStart(2,'0')}${day.padStart(2,'0')}`
showSymbol = !showSymbol
minute_cache != minute.padStart(2,'0') ? randomImg() : ''
minute_cache = minute.padStart(2,'0')
}
// 获取并设置随机的背景
function randomImg() {
let base_url = 'https://infinity-api.infinitynewtab.com/random-wallpaper?_='
base_url += new Date().getTime()
fetch(base_url)
.then(function (response) {
return response.json();
})
.then(res => {
let src = res.data[0].src.rawSrc
if(src.indexOf('undefined') != -1) {
randomImg()
return
}
img.src = src
localStorage.setItem('src', src)
});
}
// 初始化
function init() {
// 设置字体大小
setHtmlFontSize()
// 显示时间
clock()
// 每秒执行一次
setInterval(() => {
clock()
}, 1000)
// 取出背景图片地址
let src = localStorage.getItem('src')
// 如果第一次加载就随机一个,不是第一次就用上次的
src != null ? img.src = src : randomImg()
timer.addEventListener('click', randomImg)
// 全屏
date.addEventListener('click', requestFullScreen)
}
init()
</script>
</html>