411 lines
15 KiB
HTML
Executable File
411 lines
15 KiB
HTML
Executable File
<!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> |