mirror of
https://github.com/silenty4ng/k5web
synced 2025-01-04 19:02:58 +00:00
151 lines
No EOL
3.3 KiB
HTML
151 lines
No EOL
3.3 KiB
HTML
<!DOCTYPE html>
|
|
<html lang="zh-cmn">
|
|
|
|
<head>
|
|
<meta charset="UTF-8" />
|
|
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
|
<link rel="shortcut icon" href="k5web.png" type="image/png" />
|
|
<title>K5Web</title>
|
|
<meta name="description" content="一款 K5/K6 在线写频工具,使用应第一时间备份配置及校准数据,提供信道管理、设置管理、备份还原、固件升级等功能。"/>
|
|
<meta name="keywords" content="k5web,uv-k5,uv-k6,chirp,k5,k6">
|
|
<style>
|
|
::-webkit-scrollbar {
|
|
width: 12px;
|
|
height: 4px;
|
|
}
|
|
|
|
::-webkit-scrollbar-thumb {
|
|
border: 4px solid transparent;
|
|
background-clip: padding-box;
|
|
border-radius: 7px;
|
|
background-color: var(--color-text-4);
|
|
}
|
|
|
|
::-webkit-scrollbar-thumb:hover {
|
|
background-color: var(--color-text-3);
|
|
}
|
|
</style>
|
|
<style>
|
|
#loading-mask {
|
|
position: fixed;
|
|
left: 0;
|
|
top: 0;
|
|
height: 100%;
|
|
width: 100%;
|
|
background: #fff;
|
|
user-select: none;
|
|
z-index: 9999;
|
|
overflow: hidden;
|
|
}
|
|
|
|
.loading-wrapper {
|
|
position: absolute;
|
|
top: 50%;
|
|
left: 50%;
|
|
transform: translate(-50%, -100%);
|
|
}
|
|
|
|
.loading-dot {
|
|
animation: antRotate 1.2s infinite linear;
|
|
transform: rotate(45deg);
|
|
position: relative;
|
|
display: inline-block;
|
|
font-size: 64px;
|
|
width: 64px;
|
|
height: 64px;
|
|
box-sizing: border-box;
|
|
}
|
|
|
|
.loading-dot i {
|
|
width: 22px;
|
|
height: 22px;
|
|
position: absolute;
|
|
display: block;
|
|
background-color: #1890ff;
|
|
border-radius: 100%;
|
|
transform: scale(0.75);
|
|
transform-origin: 50% 50%;
|
|
opacity: 0.3;
|
|
animation: antSpinMove 1s infinite linear alternate;
|
|
}
|
|
|
|
.loading-dot i:nth-child(1) {
|
|
top: 0;
|
|
left: 0;
|
|
}
|
|
|
|
.loading-dot i:nth-child(2) {
|
|
top: 0;
|
|
right: 0;
|
|
-webkit-animation-delay: 0.4s;
|
|
animation-delay: 0.4s;
|
|
}
|
|
|
|
.loading-dot i:nth-child(3) {
|
|
right: 0;
|
|
bottom: 0;
|
|
-webkit-animation-delay: 0.8s;
|
|
animation-delay: 0.8s;
|
|
}
|
|
|
|
.loading-dot i:nth-child(4) {
|
|
bottom: 0;
|
|
left: 0;
|
|
-webkit-animation-delay: 1.2s;
|
|
animation-delay: 1.2s;
|
|
}
|
|
|
|
@keyframes antRotate {
|
|
to {
|
|
-webkit-transform: rotate(405deg);
|
|
transform: rotate(405deg);
|
|
}
|
|
}
|
|
|
|
@-webkit-keyframes antRotate {
|
|
to {
|
|
-webkit-transform: rotate(405deg);
|
|
transform: rotate(405deg);
|
|
}
|
|
}
|
|
|
|
@keyframes antSpinMove {
|
|
to {
|
|
opacity: 1;
|
|
}
|
|
}
|
|
|
|
@-webkit-keyframes antSpinMove {
|
|
to {
|
|
opacity: 1;
|
|
}
|
|
}
|
|
</style>
|
|
<script src="serial.js"></script>
|
|
</head>
|
|
|
|
<body>
|
|
<div id="app">
|
|
<div id="loading-mask">
|
|
<div class="loading-wrapper">
|
|
<span class="loading-dot loading-dot-spin"><i></i><i></i><i></i><i></i></span>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<script type="module" src="/src/main.ts"></script>
|
|
<script>
|
|
(async ()=>{
|
|
let wakeLock = null;
|
|
try {
|
|
wakeLock = await navigator.wakeLock.request("screen");
|
|
} catch {}
|
|
document.addEventListener("visibilitychange", async () => {
|
|
if (wakeLock !== null && document.visibilityState === "visible") {
|
|
wakeLock = await navigator.wakeLock.request("screen");
|
|
}
|
|
});
|
|
})();
|
|
</script>
|
|
</body>
|
|
|
|
</html> |