411 lines
15 KiB
HTML
411 lines
15 KiB
HTML
![]() |
<!DOCTYPE html>
|
|||
|
<html lang="zh-CN">
|
|||
|
<head>
|
|||
|
<meta charset="UTF-8">
|
|||
|
<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no">
|
|||
|
<title>维护通知</title>
|
|||
|
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/tailwindcss/2.2.19/tailwind.min.css">
|
|||
|
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.0.0/css/all.min.css">
|
|||
|
<link rel="stylesheet" href="https://fonts.loli.net/css2?family=Noto+Sans+SC:wght@400;500;700&display=swap">
|
|||
|
<style>
|
|||
|
body {
|
|||
|
font-family: 'Noto Sans SC', sans-serif;
|
|||
|
background: linear-gradient(135deg, #1a202c 0%, #2d3748 100%);
|
|||
|
color: #fff;
|
|||
|
min-height: 100vh;
|
|||
|
overflow-x: hidden;
|
|||
|
}
|
|||
|
.container {
|
|||
|
max-width: 800px;
|
|||
|
margin: 0 auto;
|
|||
|
padding: 2rem 1rem;
|
|||
|
}
|
|||
|
.card {
|
|||
|
background: rgba(255, 255, 255, 0.1);
|
|||
|
backdrop-filter: blur(10px);
|
|||
|
border-radius: 1rem;
|
|||
|
box-shadow: 0 10px 30px rgba(0, 0, 0, 0.3);
|
|||
|
overflow: hidden;
|
|||
|
transition: all 0.5s ease;
|
|||
|
}
|
|||
|
.card:hover {
|
|||
|
transform: translateY(-5px);
|
|||
|
box-shadow: 0 15px 35px rgba(0, 0, 0, 0.4);
|
|||
|
}
|
|||
|
.service-icon {
|
|||
|
position: relative;
|
|||
|
width: 120px;
|
|||
|
height: 120px;
|
|||
|
background: rgba(0, 0, 0, 0.3);
|
|||
|
border-radius: 50%;
|
|||
|
display: flex;
|
|||
|
align-items: center;
|
|||
|
justify-content: center;
|
|||
|
margin: 0 auto 2rem;
|
|||
|
box-shadow: 0 0 30px rgba(255, 59, 48, 0.5);
|
|||
|
}
|
|||
|
.service-icon::after {
|
|||
|
content: '';
|
|||
|
position: absolute;
|
|||
|
width: 100%;
|
|||
|
height: 100%;
|
|||
|
border-radius: 50%;
|
|||
|
border: 2px solid rgba(255, 59, 48, 0.8);
|
|||
|
animation: pulse 2s infinite;
|
|||
|
}
|
|||
|
@keyframes pulse {
|
|||
|
0% {
|
|||
|
transform: scale(0.95);
|
|||
|
opacity: 0.8;
|
|||
|
}
|
|||
|
70% {
|
|||
|
transform: scale(1.1);
|
|||
|
opacity: 0;
|
|||
|
}
|
|||
|
100% {
|
|||
|
transform: scale(0.95);
|
|||
|
opacity: 0;
|
|||
|
}
|
|||
|
}
|
|||
|
.slide-up {
|
|||
|
animation: slideUp 0.8s ease forwards;
|
|||
|
opacity: 0;
|
|||
|
transform: translateY(30px);
|
|||
|
}
|
|||
|
@keyframes slideUp {
|
|||
|
to {
|
|||
|
opacity: 1;
|
|||
|
transform: translateY(0);
|
|||
|
}
|
|||
|
}
|
|||
|
.particle {
|
|||
|
position: absolute;
|
|||
|
border-radius: 50%;
|
|||
|
pointer-events: none;
|
|||
|
background: linear-gradient(135deg, rgba(255,255,255,0.8) 0%, rgba(255,255,255,0.1) 100%);
|
|||
|
}
|
|||
|
.shake {
|
|||
|
animation: shake 0.5s cubic-bezier(.36,.07,.19,.97) both;
|
|||
|
}
|
|||
|
@keyframes shake {
|
|||
|
10%, 90% {transform: translateX(-1px);}
|
|||
|
20%, 80% {transform: translateX(2px);}
|
|||
|
30%, 50%, 70% {transform: translateX(-4px);}
|
|||
|
40%, 60% {transform: translateX(4px);}
|
|||
|
}
|
|||
|
.animate-pulse {
|
|||
|
animation: pulse-fade 2s cubic-bezier(0.4, 0, 0.6, 1) infinite;
|
|||
|
}
|
|||
|
@keyframes pulse-fade {
|
|||
|
0%, 100% {opacity: 1;}
|
|||
|
50% {opacity: .5;}
|
|||
|
}
|
|||
|
.badge {
|
|||
|
position: relative;
|
|||
|
display: inline-block;
|
|||
|
padding: 0.25rem 0.75rem;
|
|||
|
border-radius: 9999px;
|
|||
|
font-size: 0.75rem;
|
|||
|
font-weight: 500;
|
|||
|
text-transform: uppercase;
|
|||
|
margin-bottom: 1.5rem;
|
|||
|
background: rgba(255, 59, 48, 0.2);
|
|||
|
border: 1px solid rgba(255, 59, 48, 0.5);
|
|||
|
color: #ff3b30;
|
|||
|
}
|
|||
|
.timeline {
|
|||
|
position: relative;
|
|||
|
padding-left: 2rem;
|
|||
|
}
|
|||
|
.timeline::before {
|
|||
|
content: '';
|
|||
|
position: absolute;
|
|||
|
left: 0;
|
|||
|
top: 6px;
|
|||
|
height: calc(100% - 12px);
|
|||
|
width: 2px;
|
|||
|
background: rgba(156, 163, 175, 0.5);
|
|||
|
}
|
|||
|
.timeline-item {
|
|||
|
position: relative;
|
|||
|
padding-bottom: 1.5rem;
|
|||
|
}
|
|||
|
.timeline-item:last-child {
|
|||
|
padding-bottom: 0;
|
|||
|
}
|
|||
|
.timeline-dot {
|
|||
|
position: absolute;
|
|||
|
left: -2rem;
|
|||
|
top: 0.25rem;
|
|||
|
width: 1rem;
|
|||
|
height: 1rem;
|
|||
|
border-radius: 50%;
|
|||
|
background: #4f46e5;
|
|||
|
border: 2px solid #fff;
|
|||
|
box-shadow: 0 0 0 3px rgba(79, 70, 229, 0.3);
|
|||
|
}
|
|||
|
.service-status-badge {
|
|||
|
display: inline-flex;
|
|||
|
align-items: center;
|
|||
|
padding: 0.5rem 1rem;
|
|||
|
border-radius: 9999px;
|
|||
|
background: rgba(255, 59, 48, 0.2);
|
|||
|
border: 1px solid rgba(255, 59, 48, 0.5);
|
|||
|
color: #ff3b30;
|
|||
|
font-weight: 500;
|
|||
|
margin-bottom: 1.5rem;
|
|||
|
}
|
|||
|
.status-pulse {
|
|||
|
width: 10px;
|
|||
|
height: 10px;
|
|||
|
background-color: #ff3b30;
|
|||
|
border-radius: 50%;
|
|||
|
margin-right: 0.5rem;
|
|||
|
position: relative;
|
|||
|
}
|
|||
|
.status-pulse::after {
|
|||
|
content: '';
|
|||
|
position: absolute;
|
|||
|
width: 100%;
|
|||
|
height: 100%;
|
|||
|
top: 0;
|
|||
|
left: 0;
|
|||
|
border-radius: 50%;
|
|||
|
background-color: rgba(255, 59, 48, 0.5);
|
|||
|
animation: status-ping 1.5s cubic-bezier(0, 0, 0.2, 1) infinite;
|
|||
|
}
|
|||
|
@keyframes status-ping {
|
|||
|
75%, 100% {
|
|||
|
transform: scale(2);
|
|||
|
opacity: 0;
|
|||
|
}
|
|||
|
}
|
|||
|
.service-feature {
|
|||
|
display: flex;
|
|||
|
align-items: flex-start;
|
|||
|
margin-bottom: 1rem;
|
|||
|
}
|
|||
|
.feature-icon {
|
|||
|
width: 2.5rem;
|
|||
|
height: 2.5rem;
|
|||
|
border-radius: 50%;
|
|||
|
background: rgba(79, 70, 229, 0.2);
|
|||
|
display: flex;
|
|||
|
align-items: center;
|
|||
|
justify-content: center;
|
|||
|
margin-right: 1rem;
|
|||
|
flex-shrink: 0;
|
|||
|
color: #818cf8;
|
|||
|
}
|
|||
|
|
|||
|
/* 音乐控制样式 */
|
|||
|
.music-control {
|
|||
|
position: fixed;
|
|||
|
bottom: 20px;
|
|||
|
right: 20px;
|
|||
|
z-index: 1000;
|
|||
|
background: rgba(255,255,255,0.1);
|
|||
|
backdrop-filter: blur(5px);
|
|||
|
border: 1px solid rgba(255,255,255,0.3);
|
|||
|
border-radius: 50%;
|
|||
|
width: 50px;
|
|||
|
height: 50px;
|
|||
|
display: flex;
|
|||
|
align-items: center;
|
|||
|
justify-content: center;
|
|||
|
cursor: pointer;
|
|||
|
transition: all 0.3s ease;
|
|||
|
}
|
|||
|
.music-control:hover {
|
|||
|
background: rgba(255,255,255,0.2);
|
|||
|
transform: scale(1.1);
|
|||
|
}
|
|||
|
.music-control.playing {
|
|||
|
animation: rotate 2s linear infinite;
|
|||
|
}
|
|||
|
.music-icon {
|
|||
|
width: 24px;
|
|||
|
height: 24px;
|
|||
|
fill: #fff;
|
|||
|
}
|
|||
|
@keyframes rotate {
|
|||
|
from { transform: rotate(0deg); }
|
|||
|
to { transform: rotate(360deg); }
|
|||
|
}
|
|||
|
</style>
|
|||
|
</head>
|
|||
|
<body>
|
|||
|
<audio id="bgMusic" src="./Music.mp3" autoplay loop volume="0.3" preload="auto"></audio>
|
|||
|
<div class="music-control" id="musicControl" onclick="toggleMusic()">
|
|||
|
<svg class="music-icon" viewBox="0 0 24 24">
|
|||
|
<path d="M12 3v10.55c-.59-.34-1.27-.55-2-.55-2.21 0-4 1.79-4 4s1.79 4 4 4 4-1.79 4-4V7h4V3h-6z"/>
|
|||
|
</svg>
|
|||
|
</div>
|
|||
|
|
|||
|
<div class="container mx-auto px-4 py-8">
|
|||
|
<div class="card p-6 md:p-8 slide-up" style="animation-delay: 0.1s;">
|
|||
|
<div class="text-center">
|
|||
|
<h1 class="text-3xl md:text-4xl font-bold mb-2 bg-gradient-to-r from-red-400 to-pink-600 bg-clip-text text-transparent">服务正在维护</h1>
|
|||
|
<p class="text-gray-300 mb-6">请耐心等待恢复</p>
|
|||
|
|
|||
|
<div class="service-status-badge">
|
|||
|
<span class="status-pulse"></span>
|
|||
|
服务维护中
|
|||
|
</div>
|
|||
|
|
|||
|
<div class="service-icon">
|
|||
|
<i class="fas fa-power-off text-5xl text-red-500"></i>
|
|||
|
</div>
|
|||
|
|
|||
|
<div class="bg-gray-800 bg-opacity-50 rounded-lg p-5 mb-6 max-w-2xl mx-auto">
|
|||
|
<h2 class="text-xl font-bold mb-3 text-yellow-300">
|
|||
|
<i class="fas fa-exclamation-triangle mr-2"></i>通知
|
|||
|
</h2>
|
|||
|
<p class="text-gray-300 mb-4">
|
|||
|
我们非常遗憾地通知您,我们已于 <span class="font-semibold text-red-400">2025年06月14日</span> 停止服务。
|
|||
|
</p>
|
|||
|
<p class="text-gray-300">
|
|||
|
请注意,所有账户数据将继续储存在我们的数据库中,<span class="font-semibold text-yellow-300">不会丢失数据</span>
|
|||
|
</p>
|
|||
|
</div>
|
|||
|
<div class="timeline mx-auto text-left max-w-lg mb-6">
|
|||
|
<h3 class="font-bold text-xl mb-4 text-center text-purple-300">服务维护时间线</h3>
|
|||
|
<div class="timeline-item">
|
|||
|
<div class="timeline-dot"></div>
|
|||
|
<div class="font-medium text-purple-300">2025-05-30</div>
|
|||
|
<div class="text-gray-300">提交备案申请完毕</div>
|
|||
|
</div>
|
|||
|
<div class="timeline-item">
|
|||
|
<div class="timeline-dot"></div>
|
|||
|
<div class="font-medium text-purple-300">2025-06-14</div>
|
|||
|
<div class="text-gray-300">服务停止,运行备案流程</div>
|
|||
|
</div>
|
|||
|
<div class="timeline-item">
|
|||
|
<div class="timeline-dot"></div>
|
|||
|
<div class="font-medium text-purple-300">2025-06-XX</div>
|
|||
|
<div class="text-gray-300">等待备案下发</div>
|
|||
|
</div>
|
|||
|
</div>
|
|||
|
</div>
|
|||
|
</div>
|
|||
|
|
|||
|
<div class="card p-6 md:p-8 mt-6 slide-up" style="animation-delay: 0.3s;">
|
|||
|
<h2 class="text-xl font-bold mb-4 flex items-center">
|
|||
|
<i class="fas fa-question-circle mr-2 text-yellow-400"></i>
|
|||
|
常见问题
|
|||
|
</h2>
|
|||
|
<div class="space-y-4">
|
|||
|
<div class="p-4 bg-gray-800 bg-opacity-50 rounded-lg">
|
|||
|
<h3 class="font-medium text-yellow-300 mb-2">为什么维护?</h3>
|
|||
|
<p class="text-gray-300">国内云产品使用带域名的 HTTP/HTTPS 服务或使用80,443端口时,需确保域名完成备案才能正常使用,备案期间完全无法使用服务,<span class="font-semibold text-red-400">此外,服务器项目源文件因失误遭到损坏,正在迁移备份!</span></p>
|
|||
|
</div>
|
|||
|
<div class="p-4 bg-gray-800 bg-opacity-50 rounded-lg">
|
|||
|
<h3 class="font-medium text-yellow-300 mb-2">为什么之前能访问?</h3>
|
|||
|
<p class="text-gray-300">之前本工作室采用香港计算节点运行网站服务,现迁移至境内服务器,并注册新域名ccsnetwork.cn用于备案。</p>
|
|||
|
</div>
|
|||
|
</div>
|
|||
|
</div>
|
|||
|
|
|||
|
<footer class="mt-8 text-center text-gray-400 text-sm slide-up" style="animation-delay: 0.6s;">
|
|||
|
<!--<div class="flex justify-center space-x-4 mb-4">
|
|||
|
<a href="#" class="hover:text-white transition-colors" title="微信">
|
|||
|
<i class="fab fa-weixin text-xl"></i>
|
|||
|
</a>
|
|||
|
<a href="#" class="hover:text-white transition-colors" title="QQ">
|
|||
|
<i class="fab fa-qq text-xl"></i>
|
|||
|
</a>
|
|||
|
</div>-->
|
|||
|
<p>© 2025 CCSIT圆周云境技术部门
|
|||
|
</footer>
|
|||
|
</div>
|
|||
|
|
|||
|
<script>
|
|||
|
// 背景音乐控制
|
|||
|
const audio = document.getElementById('bgMusic');
|
|||
|
const musicControl = document.getElementById('musicControl');
|
|||
|
let isPlaying = true;
|
|||
|
|
|||
|
function toggleMusic() {
|
|||
|
if (isPlaying) {
|
|||
|
audio.pause();
|
|||
|
musicControl.classList.remove('playing');
|
|||
|
} else {
|
|||
|
audio.play().catch(err => {
|
|||
|
console.log('音乐播放失败,可能需要用户交互后播放:', err);
|
|||
|
});
|
|||
|
musicControl.classList.add('playing');
|
|||
|
}
|
|||
|
isPlaying = !isPlaying;
|
|||
|
}
|
|||
|
|
|||
|
// 粒子效果
|
|||
|
function createParticles() {
|
|||
|
const container = document.body;
|
|||
|
const particleCount = 50;
|
|||
|
|
|||
|
for (let i = 0; i < particleCount; i++) {
|
|||
|
const size = Math.random() * 5 + 1;
|
|||
|
const particle = document.createElement('div');
|
|||
|
|
|||
|
particle.classList.add('particle');
|
|||
|
particle.style.width = `${size}px`;
|
|||
|
particle.style.height = `${size}px`;
|
|||
|
particle.style.opacity = Math.random() * 0.5 + 0.1;
|
|||
|
|
|||
|
// 随机位置
|
|||
|
particle.style.left = `${Math.random() * 100}vw`;
|
|||
|
particle.style.top = `${Math.random() * 100}vh`;
|
|||
|
|
|||
|
// 添加动画
|
|||
|
particle.style.animation = `moveParticle ${Math.random() * 60 + 30}s linear infinite`;
|
|||
|
|
|||
|
// 随机漂浮动画
|
|||
|
const keyframes = `
|
|||
|
@keyframes moveParticle {
|
|||
|
0% {
|
|||
|
transform: translate(0, 0);
|
|||
|
}
|
|||
|
25% {
|
|||
|
transform: translate(${Math.random() * 100 - 50}px, ${Math.random() * 100 - 50}px);
|
|||
|
}
|
|||
|
50% {
|
|||
|
transform: translate(${Math.random() * 100 - 50}px, ${Math.random() * 100 - 50}px);
|
|||
|
}
|
|||
|
75% {
|
|||
|
transform: translate(${Math.random() * 100 - 50}px, ${Math.random() * 100 - 50}px);
|
|||
|
}
|
|||
|
100% {
|
|||
|
transform: translate(0, 0);
|
|||
|
}
|
|||
|
}
|
|||
|
`;
|
|||
|
|
|||
|
const styleSheet = document.createElement('style');
|
|||
|
styleSheet.textContent = keyframes;
|
|||
|
document.head.appendChild(styleSheet);
|
|||
|
|
|||
|
container.appendChild(particle);
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
// 页面加载完成后执行
|
|||
|
window.addEventListener('load', () => {
|
|||
|
createParticles();
|
|||
|
document.addEventListener('click', () => {
|
|||
|
if (!isPlaying) {
|
|||
|
audio.play().then(() => {
|
|||
|
musicControl.classList.add('playing');
|
|||
|
isPlaying = true;
|
|||
|
});
|
|||
|
}
|
|||
|
}, { once: true });
|
|||
|
|
|||
|
// 添加滑动动画
|
|||
|
const elements = document.querySelectorAll('.slide-up');
|
|||
|
elements.forEach(element => {
|
|||
|
element.style.animationPlayState = 'running';
|
|||
|
});
|
|||
|
});
|
|||
|
</script>
|
|||
|
</body>
|
|||
|
</html>
|