This commit is contained in:
parent
581e051997
commit
8ca70dca12
|
|
@ -0,0 +1 @@
|
||||||
|
pLOrZn_NIAgmCv1sI-6emZy2hhFUHz2laiKzuCqjfB0.HikmaSCgtnvS2E-ZHfWlbA-cZSQ_vtTf6q8Zp_SwAzY
|
||||||
|
|
@ -0,0 +1 @@
|
||||||
|
88a2c8d75fae235deb74e44626fb2102
|
||||||
Binary file not shown.
|
After Width: | Height: | Size: 4.2 KiB |
|
|
@ -0,0 +1,890 @@
|
||||||
|
<!DOCTYPE html>
|
||||||
|
<html lang="zh-CN">
|
||||||
|
<head>
|
||||||
|
<meta charset="UTF-8">
|
||||||
|
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||||
|
<meta http-equiv="X-UA-Compatible" content="ie=edge">
|
||||||
|
<title>AreYouOK - 游戏下载 - 虚舟实验室资源中心</title>
|
||||||
|
<!-- 添加SEO描述和关键词 -->
|
||||||
|
<link rel="canonical" href="https://dl.caellab.com/games/areyouok/">
|
||||||
|
<meta name="description" content="虚舟实验室资源中心提供打造的areyouok游戏,不同版本均可在此找到哦。">
|
||||||
|
<meta name="keywords" content="虚舟实验室,资源中心,下载站,游戏下载,areyouok,windows">
|
||||||
|
|
||||||
|
<style>
|
||||||
|
/* 全局样式重置与基础设置 */
|
||||||
|
* {
|
||||||
|
margin: 0;
|
||||||
|
padding: 0;
|
||||||
|
box-sizing: border-box;
|
||||||
|
font-family: "Microsoft YaHei", "Segoe UI", sans-serif;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* 背景与主体样式 - 科技风渐变背景 */
|
||||||
|
body {
|
||||||
|
background: linear-gradient(135deg, #0f1923 0%, #1a2938 50%, #2d4059 100%);
|
||||||
|
color: #e6e6e6;
|
||||||
|
min-height: 100vh;
|
||||||
|
padding-bottom: 50px;
|
||||||
|
background-attachment: fixed;
|
||||||
|
position: relative;
|
||||||
|
overflow-x: hidden;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* 科技风背景装饰 */
|
||||||
|
body::before {
|
||||||
|
content: "";
|
||||||
|
position: fixed;
|
||||||
|
top: 0;
|
||||||
|
left: 0;
|
||||||
|
width: 100%;
|
||||||
|
height: 100%;
|
||||||
|
background:
|
||||||
|
radial-gradient(circle at 20% 30%, rgba(57, 162, 219, 0.1) 0%, transparent 40%),
|
||||||
|
radial-gradient(circle at 80% 70%, rgba(57, 162, 219, 0.08) 0%, transparent 40%);
|
||||||
|
z-index: -1;
|
||||||
|
pointer-events: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* 头部样式 */
|
||||||
|
header {
|
||||||
|
background: rgba(0, 0, 0, 0.5);
|
||||||
|
padding: 20px 0;
|
||||||
|
text-align: center;
|
||||||
|
border-bottom: 2px solid #39a2db;
|
||||||
|
box-shadow: 0 0 15px rgba(57, 162, 219, 0.3);
|
||||||
|
position: relative;
|
||||||
|
backdrop-filter: blur(5px);
|
||||||
|
}
|
||||||
|
|
||||||
|
header h1 {
|
||||||
|
color: #39a2db;
|
||||||
|
font-size: 2.2rem;
|
||||||
|
letter-spacing: 2px;
|
||||||
|
text-shadow: 0 0 10px rgba(57, 162, 219, 0.5);
|
||||||
|
font-weight: 700;
|
||||||
|
position: relative;
|
||||||
|
display: inline-block;
|
||||||
|
}
|
||||||
|
|
||||||
|
header h1::after {
|
||||||
|
content: "";
|
||||||
|
position: absolute;
|
||||||
|
bottom: -5px;
|
||||||
|
left: 50%;
|
||||||
|
transform: translateX(-50%);
|
||||||
|
width: 100px;
|
||||||
|
height: 2px;
|
||||||
|
background: #39a2db;
|
||||||
|
box-shadow: 0 0 10px rgba(57, 162, 219, 0.8);
|
||||||
|
}
|
||||||
|
|
||||||
|
/* 导航栏样式 */
|
||||||
|
nav {
|
||||||
|
background: rgba(0, 0, 0, 0.5);
|
||||||
|
padding: 12px 0;
|
||||||
|
margin: 20px auto;
|
||||||
|
max-width: 1200px;
|
||||||
|
border-radius: 8px;
|
||||||
|
display: flex;
|
||||||
|
flex-wrap: wrap;
|
||||||
|
justify-content: center;
|
||||||
|
gap: 15px;
|
||||||
|
box-shadow: 0 4px 10px rgba(0, 0, 0, 0.3);
|
||||||
|
backdrop-filter: blur(5px);
|
||||||
|
border: 1px solid rgba(57, 162, 219, 0.2);
|
||||||
|
}
|
||||||
|
|
||||||
|
nav a {
|
||||||
|
color: #e6e6e6;
|
||||||
|
text-decoration: none;
|
||||||
|
padding: 8px 18px;
|
||||||
|
border-radius: 4px;
|
||||||
|
transition: all 0.3s ease;
|
||||||
|
border: 1px solid transparent;
|
||||||
|
position: relative;
|
||||||
|
overflow: hidden;
|
||||||
|
}
|
||||||
|
|
||||||
|
nav a::before {
|
||||||
|
content: "";
|
||||||
|
position: absolute;
|
||||||
|
top: 0;
|
||||||
|
left: -100%;
|
||||||
|
width: 100%;
|
||||||
|
height: 100%;
|
||||||
|
background: linear-gradient(90deg, transparent, rgba(57, 162, 219, 0.3), transparent);
|
||||||
|
transition: 0.5s;
|
||||||
|
}
|
||||||
|
|
||||||
|
nav a:hover {
|
||||||
|
background: #39a2db;
|
||||||
|
color: #0f1923;
|
||||||
|
transform: translateY(-2px);
|
||||||
|
box-shadow: 0 4px 8px rgba(57, 162, 219, 0.4);
|
||||||
|
border: 1px solid rgba(255, 255, 255, 0.2);
|
||||||
|
}
|
||||||
|
|
||||||
|
nav a:hover::before {
|
||||||
|
left: 100%;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* 容器样式 */
|
||||||
|
.container {
|
||||||
|
max-width: 1200px;
|
||||||
|
margin: 0 auto;
|
||||||
|
padding: 0 20px;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* 欢迎区域样式 */
|
||||||
|
.welcome {
|
||||||
|
background: rgba(0, 0, 0, 0.3);
|
||||||
|
padding: 30px;
|
||||||
|
border-radius: 10px;
|
||||||
|
margin-bottom: 30px;
|
||||||
|
border-left: 4px solid #39a2db;
|
||||||
|
backdrop-filter: blur(5px);
|
||||||
|
box-shadow: 0 4px 20px rgba(0, 0, 0, 0.2);
|
||||||
|
border: 1px solid rgba(57, 162, 219, 0.2);
|
||||||
|
position: relative;
|
||||||
|
overflow: hidden;
|
||||||
|
}
|
||||||
|
|
||||||
|
.welcome::before {
|
||||||
|
content: "";
|
||||||
|
position: absolute;
|
||||||
|
top: 0;
|
||||||
|
left: 0;
|
||||||
|
width: 100%;
|
||||||
|
height: 3px;
|
||||||
|
background: linear-gradient(90deg, #39a2db, transparent);
|
||||||
|
}
|
||||||
|
|
||||||
|
.welcome h2 {
|
||||||
|
color: #39a2db;
|
||||||
|
margin-bottom: 15px;
|
||||||
|
font-size: 1.8rem;
|
||||||
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
|
gap: 10px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.welcome h2::before {
|
||||||
|
content: "⚡";
|
||||||
|
font-size: 1.5rem;
|
||||||
|
}
|
||||||
|
|
||||||
|
.welcome p {
|
||||||
|
line-height: 1.6;
|
||||||
|
margin-bottom: 10px;
|
||||||
|
text-shadow: 0 1px 2px rgba(0,0,0,0.5);
|
||||||
|
}
|
||||||
|
|
||||||
|
.welcome p:last-child {
|
||||||
|
color: #ff6b6b;
|
||||||
|
font-weight: bold;
|
||||||
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
|
gap: 8px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.welcome p:last-child::before {
|
||||||
|
content: "⚠️";
|
||||||
|
}
|
||||||
|
|
||||||
|
/* 资源列表区域样式 */
|
||||||
|
#resources-list {
|
||||||
|
background: rgba(0, 0, 0, 0.3);
|
||||||
|
padding: 30px;
|
||||||
|
border-radius: 10px;
|
||||||
|
box-shadow: 0 4px 20px rgba(0, 0, 0, 0.2);
|
||||||
|
backdrop-filter: blur(5px);
|
||||||
|
border: 1px solid rgba(57, 162, 219, 0.2);
|
||||||
|
}
|
||||||
|
|
||||||
|
#resources-list h2 {
|
||||||
|
color: #39a2db;
|
||||||
|
margin-bottom: 20px;
|
||||||
|
font-size: 1.8rem;
|
||||||
|
text-align: center;
|
||||||
|
position: relative;
|
||||||
|
padding-bottom: 10px;
|
||||||
|
}
|
||||||
|
|
||||||
|
#resources-list h2::after {
|
||||||
|
content: "";
|
||||||
|
position: absolute;
|
||||||
|
bottom: 0;
|
||||||
|
left: 50%;
|
||||||
|
transform: translateX(-50%);
|
||||||
|
width: 120px;
|
||||||
|
height: 2px;
|
||||||
|
background: #39a2db;
|
||||||
|
box-shadow: 0 0 8px rgba(57, 162, 219, 0.6);
|
||||||
|
}
|
||||||
|
|
||||||
|
#resources-list ul {
|
||||||
|
list-style: none;
|
||||||
|
display: grid;
|
||||||
|
grid-template-columns: repeat(auto-fill, minmax(300px, 1fr));
|
||||||
|
gap: 15px;
|
||||||
|
}
|
||||||
|
|
||||||
|
#resources-list li {
|
||||||
|
background: rgba(255, 255, 255, 0.05);
|
||||||
|
padding: 20px;
|
||||||
|
border-radius: 8px;
|
||||||
|
transition: all 0.3s ease;
|
||||||
|
border: 1px solid rgba(57, 162, 219, 0.2);
|
||||||
|
position: relative;
|
||||||
|
overflow: hidden;
|
||||||
|
cursor: pointer; /* 整个卡片可点击 */
|
||||||
|
}
|
||||||
|
|
||||||
|
#resources-list li::before {
|
||||||
|
content: "";
|
||||||
|
position: absolute;
|
||||||
|
top: 0;
|
||||||
|
left: 0;
|
||||||
|
width: 3px;
|
||||||
|
height: 0;
|
||||||
|
background: #39a2db;
|
||||||
|
transition: height 0.3s ease;
|
||||||
|
}
|
||||||
|
|
||||||
|
#resources-list li:hover {
|
||||||
|
transform: translateY(-3px);
|
||||||
|
box-shadow: 0 6px 15px rgba(57, 162, 219, 0.3);
|
||||||
|
border-color: #39a2db;
|
||||||
|
background: rgba(57, 162, 219, 0.08);
|
||||||
|
}
|
||||||
|
|
||||||
|
#resources-list li:hover::before {
|
||||||
|
height: 100%;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* 软件链接样式 */
|
||||||
|
.software-link {
|
||||||
|
color: #e6e6e6;
|
||||||
|
text-decoration: none;
|
||||||
|
display: block;
|
||||||
|
padding: 8px 0;
|
||||||
|
cursor: pointer;
|
||||||
|
transition: color 0.3s ease;
|
||||||
|
font-weight: 600;
|
||||||
|
font-size: 1.1rem;
|
||||||
|
position: relative;
|
||||||
|
padding-left: 20px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.software-link::before {
|
||||||
|
content: "▸";
|
||||||
|
position: absolute;
|
||||||
|
left: 0;
|
||||||
|
color: #39a2db;
|
||||||
|
transition: transform 0.3s ease;
|
||||||
|
}
|
||||||
|
|
||||||
|
.software-link:hover {
|
||||||
|
color: #39a2db;
|
||||||
|
padding-left: 25px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.software-link:hover::before {
|
||||||
|
transform: translateX(5px);
|
||||||
|
}
|
||||||
|
|
||||||
|
/* 软件简介样式 */
|
||||||
|
.software-desc {
|
||||||
|
font-size: 0.9rem;
|
||||||
|
color: #999;
|
||||||
|
margin-top: 10px;
|
||||||
|
padding-left: 20px;
|
||||||
|
line-height: 1.5;
|
||||||
|
border-left: 2px solid rgba(57, 162, 219, 0.3);
|
||||||
|
}
|
||||||
|
|
||||||
|
/* 弹窗遮罩层 */
|
||||||
|
.modal-overlay {
|
||||||
|
position: fixed;
|
||||||
|
top: 0;
|
||||||
|
left: 0;
|
||||||
|
width: 100%;
|
||||||
|
height: 100%;
|
||||||
|
background: rgba(0, 0, 0, 0.8);
|
||||||
|
display: none;
|
||||||
|
justify-content: center;
|
||||||
|
align-items: center;
|
||||||
|
z-index: 9999;
|
||||||
|
backdrop-filter: blur(5px);
|
||||||
|
padding: 10px;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* 弹窗容器 */
|
||||||
|
.modal-container {
|
||||||
|
background: #1a2938;
|
||||||
|
width: 100%;
|
||||||
|
max-width: 500px;
|
||||||
|
border-radius: 10px;
|
||||||
|
padding: 20px;
|
||||||
|
border: 2px solid #39a2db;
|
||||||
|
box-shadow: 0 0 25px rgba(57, 162, 219, 0.6);
|
||||||
|
position: relative;
|
||||||
|
transform: scale(0.95);
|
||||||
|
transition: transform 0.3s ease;
|
||||||
|
max-height: 90vh;
|
||||||
|
overflow-y: auto;
|
||||||
|
-webkit-overflow-scrolling: touch;
|
||||||
|
}
|
||||||
|
|
||||||
|
.modal-overlay.active .modal-container {
|
||||||
|
transform: scale(1);
|
||||||
|
}
|
||||||
|
|
||||||
|
/* 弹窗标题 */
|
||||||
|
.modal-title {
|
||||||
|
color: #39a2db;
|
||||||
|
font-size: 1.5rem;
|
||||||
|
margin-bottom: 15px;
|
||||||
|
text-align: center;
|
||||||
|
position: relative;
|
||||||
|
padding-bottom: 10px;
|
||||||
|
word-break: break-word;
|
||||||
|
}
|
||||||
|
|
||||||
|
.modal-title::after {
|
||||||
|
content: "";
|
||||||
|
position: absolute;
|
||||||
|
bottom: 0;
|
||||||
|
left: 50%;
|
||||||
|
transform: translateX(-50%);
|
||||||
|
width: 80px;
|
||||||
|
height: 2px;
|
||||||
|
background: #39a2db;
|
||||||
|
box-shadow: 0 0 8px rgba(57, 162, 219, 0.6);
|
||||||
|
}
|
||||||
|
|
||||||
|
/* 资源列表样式 */
|
||||||
|
.source-list {
|
||||||
|
list-style: none;
|
||||||
|
margin-top: 15px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.source-list li {
|
||||||
|
margin: 12px 0;
|
||||||
|
padding: 0;
|
||||||
|
background: rgba(255, 255, 255, 0.05);
|
||||||
|
border-radius: 5px;
|
||||||
|
transition: all 0.3s ease;
|
||||||
|
border: 1px solid rgba(57, 162, 219, 0.1);
|
||||||
|
overflow: hidden;
|
||||||
|
}
|
||||||
|
|
||||||
|
.source-list li:hover {
|
||||||
|
background: rgba(57, 162, 219, 0.15);
|
||||||
|
transform: translateX(5px);
|
||||||
|
border-color: rgba(57, 162, 219, 0.4);
|
||||||
|
}
|
||||||
|
|
||||||
|
.source-list a {
|
||||||
|
color: #e6e6e6;
|
||||||
|
text-decoration: none;
|
||||||
|
display: flex;
|
||||||
|
justify-content: space-between;
|
||||||
|
align-items: center;
|
||||||
|
padding: 12px 15px;
|
||||||
|
width: 100%;
|
||||||
|
transition: all 0.2s ease;
|
||||||
|
white-space: nowrap;
|
||||||
|
overflow: hidden;
|
||||||
|
text-overflow: ellipsis;
|
||||||
|
min-height: 44px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.source-list a:hover {
|
||||||
|
color: #39a2db;
|
||||||
|
background: rgba(57, 162, 219, 0.1);
|
||||||
|
}
|
||||||
|
|
||||||
|
.source-name {
|
||||||
|
font-weight: 600;
|
||||||
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
|
gap: 8px;
|
||||||
|
flex: 1;
|
||||||
|
overflow: hidden;
|
||||||
|
text-overflow: ellipsis;
|
||||||
|
}
|
||||||
|
|
||||||
|
.source-name::before {
|
||||||
|
content: "";
|
||||||
|
font-size: 0.8rem;
|
||||||
|
}
|
||||||
|
|
||||||
|
.source-tip {
|
||||||
|
font-size: 0.75rem;
|
||||||
|
color: #ff6b6b;
|
||||||
|
background: rgba(255, 107, 107, 0.1);
|
||||||
|
padding: 3px 8px;
|
||||||
|
border-radius: 10px;
|
||||||
|
border: 1px solid rgba(255, 107, 107, 0.3);
|
||||||
|
white-space: nowrap;
|
||||||
|
flex-shrink: 0;
|
||||||
|
margin-left: 8px;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* 关闭按钮 */
|
||||||
|
.close-btn {
|
||||||
|
display: block;
|
||||||
|
width: 100%;
|
||||||
|
padding: 12px;
|
||||||
|
background: #39a2db;
|
||||||
|
color: #0f1923;
|
||||||
|
border: none;
|
||||||
|
border-radius: 5px;
|
||||||
|
margin-top: 20px;
|
||||||
|
cursor: pointer;
|
||||||
|
font-weight: bold;
|
||||||
|
transition: all 0.3s ease;
|
||||||
|
font-size: 1rem;
|
||||||
|
letter-spacing: 1px;
|
||||||
|
position: relative;
|
||||||
|
overflow: hidden;
|
||||||
|
min-height: 44px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.close-btn::before {
|
||||||
|
content: "";
|
||||||
|
position: absolute;
|
||||||
|
top: 0;
|
||||||
|
left: -100%;
|
||||||
|
width: 100%;
|
||||||
|
height: 100%;
|
||||||
|
background: linear-gradient(90deg, transparent, rgba(255, 255, 255, 0.3), transparent);
|
||||||
|
transition: 0.5s;
|
||||||
|
}
|
||||||
|
|
||||||
|
.close-btn:hover {
|
||||||
|
background: #287ca8;
|
||||||
|
transform: translateY(-2px);
|
||||||
|
box-shadow: 0 4px 10px rgba(57, 162, 219, 0.4);
|
||||||
|
}
|
||||||
|
|
||||||
|
.close-btn:hover::before {
|
||||||
|
left: 100%;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* 页脚样式 */
|
||||||
|
footer {
|
||||||
|
background: rgba(0, 0, 0, 0.6);
|
||||||
|
text-align: center;
|
||||||
|
padding: 15px 0;
|
||||||
|
margin-top: 40px;
|
||||||
|
color: #999;
|
||||||
|
font-size: 0.9rem;
|
||||||
|
position: relative;
|
||||||
|
bottom: 0;
|
||||||
|
width: 100%;
|
||||||
|
border-top: 1px solid rgba(57, 162, 219, 0.2);
|
||||||
|
backdrop-filter: blur(5px);
|
||||||
|
}
|
||||||
|
|
||||||
|
/* 无可用源提示 */
|
||||||
|
.no-source {
|
||||||
|
text-align: center;
|
||||||
|
padding: 20px;
|
||||||
|
color: #ff6b6b;
|
||||||
|
font-weight: bold;
|
||||||
|
background: rgba(255, 107, 107, 0.1);
|
||||||
|
border-radius: 8px;
|
||||||
|
border: 1px dashed rgba(255, 107, 107, 0.4);
|
||||||
|
}
|
||||||
|
|
||||||
|
/* 响应式设计 - 移动端优化 */
|
||||||
|
@media (max-width: 768px) {
|
||||||
|
header h1 {
|
||||||
|
font-size: 1.8rem;
|
||||||
|
}
|
||||||
|
|
||||||
|
nav {
|
||||||
|
gap: 10px;
|
||||||
|
}
|
||||||
|
|
||||||
|
nav a {
|
||||||
|
padding: 6px 12px;
|
||||||
|
font-size: 0.9rem;
|
||||||
|
}
|
||||||
|
|
||||||
|
.welcome {
|
||||||
|
padding: 20px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.welcome h2 {
|
||||||
|
font-size: 1.5rem;
|
||||||
|
}
|
||||||
|
|
||||||
|
#resources-list {
|
||||||
|
padding: 20px;
|
||||||
|
}
|
||||||
|
|
||||||
|
#resources-list ul {
|
||||||
|
grid-template-columns: 1fr;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* 移动端弹窗优化 */
|
||||||
|
.modal-overlay {
|
||||||
|
padding: 5px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.modal-container {
|
||||||
|
padding: 15px;
|
||||||
|
max-height: 92vh;
|
||||||
|
width: 95%;
|
||||||
|
}
|
||||||
|
|
||||||
|
.modal-title {
|
||||||
|
font-size: 1.3rem;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* 移动端源列表 - 垂直堆叠,允许换行 */
|
||||||
|
.source-list a {
|
||||||
|
flex-direction: column;
|
||||||
|
align-items: flex-start;
|
||||||
|
gap: 5px;
|
||||||
|
white-space: normal;
|
||||||
|
padding: 15px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.source-name {
|
||||||
|
width: 100%;
|
||||||
|
overflow: visible;
|
||||||
|
text-overflow: clip;
|
||||||
|
}
|
||||||
|
|
||||||
|
.source-tip {
|
||||||
|
align-self: flex-start;
|
||||||
|
margin-left: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* 按钮移动端优化 */
|
||||||
|
.close-btn {
|
||||||
|
padding: 14px;
|
||||||
|
font-size: 1rem;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@media (max-width: 480px) {
|
||||||
|
header h1 {
|
||||||
|
font-size: 1.5rem;
|
||||||
|
letter-spacing: 1px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.welcome h2 {
|
||||||
|
font-size: 1.3rem;
|
||||||
|
}
|
||||||
|
|
||||||
|
.welcome p {
|
||||||
|
font-size: 0.9rem;
|
||||||
|
}
|
||||||
|
|
||||||
|
.modal-title {
|
||||||
|
font-size: 1.2rem;
|
||||||
|
}
|
||||||
|
|
||||||
|
.source-list a {
|
||||||
|
padding: 12px;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/* 动画效果 */
|
||||||
|
@keyframes pulse {
|
||||||
|
0% { box-shadow: 0 0 0 0 rgba(57, 162, 219, 0.4); }
|
||||||
|
70% { box-shadow: 0 0 0 10px rgba(57, 162, 219, 0); }
|
||||||
|
100% { box-shadow: 0 0 0 0 rgba(57, 162, 219, 0); }
|
||||||
|
}
|
||||||
|
|
||||||
|
.pulse {
|
||||||
|
animation: pulse 2s infinite;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* 软件项悬停动画 */
|
||||||
|
#resources-list li:hover {
|
||||||
|
animation: hoverPulse 0.5s;
|
||||||
|
}
|
||||||
|
|
||||||
|
@keyframes hoverPulse {
|
||||||
|
0% { transform: translateY(0); }
|
||||||
|
50% { transform: translateY(-5px); }
|
||||||
|
100% { transform: translateY(-3px); }
|
||||||
|
}
|
||||||
|
|
||||||
|
/* 加载动画 */
|
||||||
|
.loading {
|
||||||
|
display: inline-block;
|
||||||
|
width: 15px;
|
||||||
|
height: 15px;
|
||||||
|
border: 2px solid rgba(57, 162, 219, 0.3);
|
||||||
|
border-top: 2px solid #39a2db;
|
||||||
|
border-radius: 50%;
|
||||||
|
animation: spin 1s linear infinite;
|
||||||
|
margin-left: 10px;
|
||||||
|
vertical-align: middle;
|
||||||
|
}
|
||||||
|
|
||||||
|
@keyframes spin {
|
||||||
|
0% { transform: rotate(0deg); }
|
||||||
|
100% { transform: rotate(360deg); }
|
||||||
|
}
|
||||||
|
|
||||||
|
/* 防止 iOS 滚动穿透 */
|
||||||
|
body.modal-open {
|
||||||
|
overflow: hidden;
|
||||||
|
position: fixed;
|
||||||
|
width: 100%;
|
||||||
|
height: 100%;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* 卡片内容点击区域 */
|
||||||
|
.card-content {
|
||||||
|
width: 100%;
|
||||||
|
height: 100%;
|
||||||
|
}
|
||||||
|
</style>
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
<header>
|
||||||
|
<h1>虚舟实验室资源中心</h1>
|
||||||
|
</header>
|
||||||
|
<nav>
|
||||||
|
<a href="/games/" class="pulse">返回上一级</a>
|
||||||
|
</nav>
|
||||||
|
<div class="container">
|
||||||
|
<section id="online-resources" class="welcome">
|
||||||
|
<h2>Are You OK?</h2>
|
||||||
|
</section>
|
||||||
|
<section id="resources-list">
|
||||||
|
<h2>请选择版本</h2>
|
||||||
|
<ul>
|
||||||
|
<li onclick="openModal('1.1.1')">
|
||||||
|
<div class="card-content">
|
||||||
|
<div class="software-link">1.1.1</div>
|
||||||
|
<div class="software-desc">芜湖是新的版本号命名规则!<br>修复了一些bugs</div>
|
||||||
|
</div>
|
||||||
|
</li>
|
||||||
|
<li onclick="openModal('1.0.1.0')">
|
||||||
|
<div class="card-content">
|
||||||
|
<div class="software-link">1.0.1.0</div>
|
||||||
|
<div class="software-desc">新增了超级困难的world6!<br>新增了存档功能(自动保存!)。</div>
|
||||||
|
</div>
|
||||||
|
</li>
|
||||||
|
<li onclick="openModal('1.0.0.0')">
|
||||||
|
<div class="card-content">
|
||||||
|
<div class="software-link">1.0.0.0</div>
|
||||||
|
<div class="software-desc">更新并吃了一个奶酪块,终于变成了正式版啦!<br>更新若干。</div>
|
||||||
|
</div>
|
||||||
|
</li>
|
||||||
|
<li onclick="openModal('0.1.0.4')">
|
||||||
|
<div class="card-content">
|
||||||
|
<div class="software-link">0.1.0.5</div>
|
||||||
|
<div class="software-desc">增加彩带,修复了作弊bug。</div>
|
||||||
|
</div>
|
||||||
|
</li>
|
||||||
|
<li onclick="openModal('0.1.0.4')">
|
||||||
|
<div class="card-content">
|
||||||
|
<div class="software-link">0.1.0.4</div>
|
||||||
|
<div class="software-desc">欢迎体验全新版本</div>
|
||||||
|
</div>
|
||||||
|
</li>
|
||||||
|
<!-- 可以继续添加更多资源卡片 -->
|
||||||
|
</ul>
|
||||||
|
</section>
|
||||||
|
</div>
|
||||||
|
<footer>
|
||||||
|
<p>© 2025-Now 虚舟实验室(CaelLab). All rights reserved.</p>
|
||||||
|
</footer>
|
||||||
|
|
||||||
|
<!-- 资源选择弹窗 -->
|
||||||
|
<div class="modal-overlay" id="modal">
|
||||||
|
<div class="modal-container">
|
||||||
|
<h3 class="modal-title" id="modalTitle">选择下载源</h3>
|
||||||
|
<ul class="source-list" id="sourceList">
|
||||||
|
<!-- 内容由JS动态填充 -->
|
||||||
|
</ul>
|
||||||
|
<button class="close-btn" onclick="closeModal()">关闭</button>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
// 定义 软件名称 -> 各源链接 的映射表
|
||||||
|
const softwareSources = {
|
||||||
|
"1.1.1": {
|
||||||
|
"详情页":"https://gamets.caellab.com/areyouok/",
|
||||||
|
"虚舟实验室NAS": "https://ug.link/yunyun3782/filemgr/share-download/?id=1b784895a0034802ae97f0cf22c5ac6d",
|
||||||
|
"百度网盘": "https://pan.baidu.com/s/1W73IDhqrlBVPQTV7sxUmbw?pwd=0705",
|
||||||
|
},
|
||||||
|
|
||||||
|
"1.0.1.0": {
|
||||||
|
"虚舟实验室NAS": "https://ug.link/yunyun3782/filemgr/share-download/?id=58db8c1cdf4d411a99dfeff4a5807330",
|
||||||
|
"百度网盘": "https://pan.baidu.com/s/1u3IbNSGh0WUbKwCAUWf44g?pwd=0705",
|
||||||
|
"1.0.1.0": {
|
||||||
|
"详情页":"https://gamets.caellab.com/areyouok/",
|
||||||
|
"虚舟实验室NAS": "https://ug.link/yunyun3782/filemgr/share-download/?id=58db8c1cdf4d411a99dfeff4a5807330",
|
||||||
|
"百度网盘": "https://pan.baidu.com/s/1rNbSd5f6x-Xs6ZMaEQVPIg?pwd=0705",
|
||||||
|
},},
|
||||||
|
|
||||||
|
|
||||||
|
"1.0.0.0": {
|
||||||
|
"详情页":"https://gamets.caellab.com/areyouok/history/1.0.0.0",
|
||||||
|
"虚舟实验室NAS": "https://ug.link/yunyun3782/filemgr/share-download/?id=2c931fed92b0452fbf929b86a169a21a",
|
||||||
|
"百度网盘": "https://pan.baidu.com/s/1W73IDhqrlBVPQTV7sxUmbw?pwd=0705"
|
||||||
|
},
|
||||||
|
"0.1.0.4": {
|
||||||
|
"详情页":"https://www.caellab.com/2026/areyouok/history/0.1.0.4/",
|
||||||
|
"源服务器":"0",
|
||||||
|
"虚舟实验室NAS": "https://ug.link/yunyun3782/filemgr/share-download/?id=d1145cf1d95b4598a47d6109ae59f869",
|
||||||
|
"GitHub": "0",
|
||||||
|
"Gitee": "0",
|
||||||
|
"123云盘": "https://www.123865.com/s/T4nijv-UVjAH",
|
||||||
|
"蓝奏云": "0",
|
||||||
|
"百度网盘":"https://pan.baidu.com/e/1Lqm5sDrNTbIW1bYiEe4W7w?pwd=0705"
|
||||||
|
},
|
||||||
|
"0.1.0.5": {
|
||||||
|
"详情页":"https://www.caellab.com/2026/areyouok/",
|
||||||
|
"源服务器":"0",
|
||||||
|
"虚舟实验室NAS": "https://ug.link/yunyun3782/filemgr/share-download/?id=a876beb2c44948ffae4218d4e14489e0",
|
||||||
|
"GitHub": "0",
|
||||||
|
"Gitee": "0",
|
||||||
|
"123云盘": "https://www.123865.com/s/T4nijv-a3T9H",
|
||||||
|
"蓝奏云": "0",
|
||||||
|
"百度网盘":"https://pan.baidu.com/e/1rOf4lrl6Y5zEnNYNVRgydw?pwd=0705"
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
// 源对应的提示文本
|
||||||
|
const sourceTips = {
|
||||||
|
"详情页":"我要去看看!",
|
||||||
|
"源服务器":"₍₍Ϡ(੭•̀ω•́)੭✧不需要跳转页面直接下载",
|
||||||
|
"虚舟实验室NAS": "P2P节点",
|
||||||
|
"GitHub": "国内可能不稳定,备用",
|
||||||
|
"Gitee": "国内镜像稳定",
|
||||||
|
"123云盘": "小流量超高速稳定",
|
||||||
|
"蓝奏云": "纯净多线路自选,提取码0705",
|
||||||
|
"百度网盘":"稳定多年不掉线,提取码0705"
|
||||||
|
};
|
||||||
|
|
||||||
|
// 打开弹窗函数
|
||||||
|
function openModal(softwareName) {
|
||||||
|
const modalTitle = document.getElementById('modalTitle');
|
||||||
|
const sourceList = document.getElementById('sourceList');
|
||||||
|
const modalOverlay = document.getElementById('modal');
|
||||||
|
|
||||||
|
modalTitle.innerText = `Are You OK? ${softwareName}`;
|
||||||
|
|
||||||
|
// 清空原有列表
|
||||||
|
sourceList.innerHTML = '';
|
||||||
|
|
||||||
|
// 获取当前软件的所有源链接
|
||||||
|
const sources = softwareSources[softwareName];
|
||||||
|
let hasAvailableSource = false;
|
||||||
|
|
||||||
|
// 添加加载动画
|
||||||
|
const loadingDiv = document.createElement('div');
|
||||||
|
loadingDiv.style.textAlign = 'center';
|
||||||
|
loadingDiv.style.padding = '15px';
|
||||||
|
loadingDiv.innerHTML = '正在获取下载源<span class="loading"></span>';
|
||||||
|
sourceList.appendChild(loadingDiv);
|
||||||
|
|
||||||
|
// 模拟加载延迟 - 已加快到300ms
|
||||||
|
setTimeout(() => {
|
||||||
|
sourceList.innerHTML = '';
|
||||||
|
|
||||||
|
for (const [sourceName, url] of Object.entries(sources)) {
|
||||||
|
// 过滤掉链接为0的源
|
||||||
|
if (url === "0") continue;
|
||||||
|
|
||||||
|
hasAvailableSource = true;
|
||||||
|
const li = document.createElement('li');
|
||||||
|
// 只有当提示文本不为空时才显示
|
||||||
|
const tipText = sourceTips[sourceName] ? `<span class="source-tip">${sourceTips[sourceName]}</span>` : '';
|
||||||
|
// 关键修改:为弹窗中的外链添加rel="nofollow"
|
||||||
|
li.innerHTML = `<a href="${url}" target="_blank" rel="nofollow"><span class="source-name">${sourceName}</span> ${tipText}</a>`;
|
||||||
|
sourceList.appendChild(li);
|
||||||
|
}
|
||||||
|
|
||||||
|
// 如果没有可用源,显示提示
|
||||||
|
if (!hasAvailableSource) {
|
||||||
|
const li = document.createElement('div');
|
||||||
|
li.className = 'no-source';
|
||||||
|
li.innerHTML = '暂无可用下载源<br>请稍后再试';
|
||||||
|
sourceList.appendChild(li);
|
||||||
|
}
|
||||||
|
}, 300); // 加载速度加快到300ms
|
||||||
|
|
||||||
|
modalOverlay.style.display = 'flex';
|
||||||
|
document.body.classList.add('modal-open');
|
||||||
|
setTimeout(() => {
|
||||||
|
modalOverlay.classList.add('active');
|
||||||
|
}, 10);
|
||||||
|
}
|
||||||
|
|
||||||
|
// 关闭弹窗函数
|
||||||
|
function closeModal() {
|
||||||
|
const modalOverlay = document.getElementById('modal');
|
||||||
|
modalOverlay.classList.remove('active');
|
||||||
|
document.body.classList.remove('modal-open');
|
||||||
|
setTimeout(() => {
|
||||||
|
modalOverlay.style.display = 'none';
|
||||||
|
}, 300);
|
||||||
|
}
|
||||||
|
|
||||||
|
// 点击遮罩层关闭弹窗
|
||||||
|
document.getElementById('modal').addEventListener('click', function(e) {
|
||||||
|
if (e.target === this) {
|
||||||
|
closeModal();
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
// 按ESC键关闭弹窗
|
||||||
|
document.addEventListener('keydown', function(e) {
|
||||||
|
if (e.key === 'Escape') {
|
||||||
|
closeModal();
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
// 页面加载动画效果
|
||||||
|
window.addEventListener('DOMContentLoaded', () => {
|
||||||
|
const items = document.querySelectorAll('#resources-list li');
|
||||||
|
items.forEach((item, index) => {
|
||||||
|
item.style.opacity = '0';
|
||||||
|
item.style.transform = 'translateY(20px)';
|
||||||
|
setTimeout(() => {
|
||||||
|
item.style.transition = 'opacity 0.5s ease, transform 0.5s ease';
|
||||||
|
item.style.opacity = '1';
|
||||||
|
item.style.transform = 'translateY(0)';
|
||||||
|
}, 100 * index);
|
||||||
|
});
|
||||||
|
|
||||||
|
// 检查URL参数,如果包含资源名称,自动打开对应模态框
|
||||||
|
checkUrlForAutoOpen();
|
||||||
|
});
|
||||||
|
|
||||||
|
// 检查URL参数,自动打开对应资源
|
||||||
|
function checkUrlForAutoOpen() {
|
||||||
|
const url = window.location.href;
|
||||||
|
const queryString = url.split('?')[1];
|
||||||
|
|
||||||
|
if (queryString) {
|
||||||
|
// 去除可能的#符号
|
||||||
|
const cleanParam = queryString.split('#')[0];
|
||||||
|
|
||||||
|
// 检查是否存在这个资源
|
||||||
|
if (softwareSources[cleanParam]) {
|
||||||
|
// 延迟一点打开,确保页面加载完成
|
||||||
|
setTimeout(() => {
|
||||||
|
openModal(cleanParam);
|
||||||
|
}, 500);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</script>
|
||||||
|
</body>
|
||||||
|
</html>
|
||||||
|
|
@ -0,0 +1,881 @@
|
||||||
|
<!DOCTYPE html>
|
||||||
|
<html lang="zh-CN">
|
||||||
|
<head>
|
||||||
|
<meta charset="UTF-8">
|
||||||
|
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||||
|
<meta http-equiv="X-UA-Compatible" content="ie=edge">
|
||||||
|
<title>GoodPlanCraftLauncher - 游戏下载 - 虚舟实验室资源中心</title>
|
||||||
|
<!-- 添加SEO描述和关键词 -->
|
||||||
|
<link rel="canonical" href="https://dl.caellab.com/games/gpcl/">
|
||||||
|
<meta name="description" content="虚舟实验室资源中心提供打造的mc启动器游戏,不同版本均可在此找到哦。">
|
||||||
|
|
||||||
|
<style>
|
||||||
|
/* 全局样式重置与基础设置 */
|
||||||
|
* {
|
||||||
|
margin: 0;
|
||||||
|
padding: 0;
|
||||||
|
box-sizing: border-box;
|
||||||
|
font-family: "Microsoft YaHei", "Segoe UI", sans-serif;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* 背景与主体样式 - 科技风渐变背景 */
|
||||||
|
body {
|
||||||
|
background: linear-gradient(135deg, #0f1923 0%, #1a2938 50%, #2d4059 100%);
|
||||||
|
color: #e6e6e6;
|
||||||
|
min-height: 100vh;
|
||||||
|
padding-bottom: 50px;
|
||||||
|
background-attachment: fixed;
|
||||||
|
position: relative;
|
||||||
|
overflow-x: hidden;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* 科技风背景装饰 */
|
||||||
|
body::before {
|
||||||
|
content: "";
|
||||||
|
position: fixed;
|
||||||
|
top: 0;
|
||||||
|
left: 0;
|
||||||
|
width: 100%;
|
||||||
|
height: 100%;
|
||||||
|
background:
|
||||||
|
radial-gradient(circle at 20% 30%, rgba(57, 162, 219, 0.1) 0%, transparent 40%),
|
||||||
|
radial-gradient(circle at 80% 70%, rgba(57, 162, 219, 0.08) 0%, transparent 40%);
|
||||||
|
z-index: -1;
|
||||||
|
pointer-events: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* 头部样式 */
|
||||||
|
header {
|
||||||
|
background: rgba(0, 0, 0, 0.5);
|
||||||
|
padding: 20px 0;
|
||||||
|
text-align: center;
|
||||||
|
border-bottom: 2px solid #39a2db;
|
||||||
|
box-shadow: 0 0 15px rgba(57, 162, 219, 0.3);
|
||||||
|
position: relative;
|
||||||
|
backdrop-filter: blur(5px);
|
||||||
|
}
|
||||||
|
|
||||||
|
header h1 {
|
||||||
|
color: #39a2db;
|
||||||
|
font-size: 2.2rem;
|
||||||
|
letter-spacing: 2px;
|
||||||
|
text-shadow: 0 0 10px rgba(57, 162, 219, 0.5);
|
||||||
|
font-weight: 700;
|
||||||
|
position: relative;
|
||||||
|
display: inline-block;
|
||||||
|
}
|
||||||
|
|
||||||
|
header h1::after {
|
||||||
|
content: "";
|
||||||
|
position: absolute;
|
||||||
|
bottom: -5px;
|
||||||
|
left: 50%;
|
||||||
|
transform: translateX(-50%);
|
||||||
|
width: 100px;
|
||||||
|
height: 2px;
|
||||||
|
background: #39a2db;
|
||||||
|
box-shadow: 0 0 10px rgba(57, 162, 219, 0.8);
|
||||||
|
}
|
||||||
|
|
||||||
|
/* 导航栏样式 */
|
||||||
|
nav {
|
||||||
|
background: rgba(0, 0, 0, 0.5);
|
||||||
|
padding: 12px 0;
|
||||||
|
margin: 20px auto;
|
||||||
|
max-width: 1200px;
|
||||||
|
border-radius: 8px;
|
||||||
|
display: flex;
|
||||||
|
flex-wrap: wrap;
|
||||||
|
justify-content: center;
|
||||||
|
gap: 15px;
|
||||||
|
box-shadow: 0 4px 10px rgba(0, 0, 0, 0.3);
|
||||||
|
backdrop-filter: blur(5px);
|
||||||
|
border: 1px solid rgba(57, 162, 219, 0.2);
|
||||||
|
}
|
||||||
|
|
||||||
|
nav a {
|
||||||
|
color: #e6e6e6;
|
||||||
|
text-decoration: none;
|
||||||
|
padding: 8px 18px;
|
||||||
|
border-radius: 4px;
|
||||||
|
transition: all 0.3s ease;
|
||||||
|
border: 1px solid transparent;
|
||||||
|
position: relative;
|
||||||
|
overflow: hidden;
|
||||||
|
}
|
||||||
|
|
||||||
|
nav a::before {
|
||||||
|
content: "";
|
||||||
|
position: absolute;
|
||||||
|
top: 0;
|
||||||
|
left: -100%;
|
||||||
|
width: 100%;
|
||||||
|
height: 100%;
|
||||||
|
background: linear-gradient(90deg, transparent, rgba(57, 162, 219, 0.3), transparent);
|
||||||
|
transition: 0.5s;
|
||||||
|
}
|
||||||
|
|
||||||
|
nav a:hover {
|
||||||
|
background: #39a2db;
|
||||||
|
color: #0f1923;
|
||||||
|
transform: translateY(-2px);
|
||||||
|
box-shadow: 0 4px 8px rgba(57, 162, 219, 0.4);
|
||||||
|
border: 1px solid rgba(255, 255, 255, 0.2);
|
||||||
|
}
|
||||||
|
|
||||||
|
nav a:hover::before {
|
||||||
|
left: 100%;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* 容器样式 */
|
||||||
|
.container {
|
||||||
|
max-width: 1200px;
|
||||||
|
margin: 0 auto;
|
||||||
|
padding: 0 20px;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* 欢迎区域样式 */
|
||||||
|
.welcome {
|
||||||
|
background: rgba(0, 0, 0, 0.3);
|
||||||
|
padding: 30px;
|
||||||
|
border-radius: 10px;
|
||||||
|
margin-bottom: 30px;
|
||||||
|
border-left: 4px solid #39a2db;
|
||||||
|
backdrop-filter: blur(5px);
|
||||||
|
box-shadow: 0 4px 20px rgba(0, 0, 0, 0.2);
|
||||||
|
border: 1px solid rgba(57, 162, 219, 0.2);
|
||||||
|
position: relative;
|
||||||
|
overflow: hidden;
|
||||||
|
}
|
||||||
|
|
||||||
|
.welcome::before {
|
||||||
|
content: "";
|
||||||
|
position: absolute;
|
||||||
|
top: 0;
|
||||||
|
left: 0;
|
||||||
|
width: 100%;
|
||||||
|
height: 3px;
|
||||||
|
background: linear-gradient(90deg, #39a2db, transparent);
|
||||||
|
}
|
||||||
|
|
||||||
|
.welcome h2 {
|
||||||
|
color: #39a2db;
|
||||||
|
margin-bottom: 15px;
|
||||||
|
font-size: 1.8rem;
|
||||||
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
|
gap: 10px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.welcome h2::before {
|
||||||
|
content: "⚡";
|
||||||
|
font-size: 1.5rem;
|
||||||
|
}
|
||||||
|
|
||||||
|
.welcome p {
|
||||||
|
line-height: 1.6;
|
||||||
|
margin-bottom: 10px;
|
||||||
|
text-shadow: 0 1px 2px rgba(0,0,0,0.5);
|
||||||
|
}
|
||||||
|
|
||||||
|
.welcome p:last-child {
|
||||||
|
color: #ff6b6b;
|
||||||
|
font-weight: bold;
|
||||||
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
|
gap: 8px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.welcome p:last-child::before {
|
||||||
|
content: "⚠️";
|
||||||
|
}
|
||||||
|
|
||||||
|
/* 资源列表区域样式 */
|
||||||
|
#resources-list {
|
||||||
|
background: rgba(0, 0, 0, 0.3);
|
||||||
|
padding: 30px;
|
||||||
|
border-radius: 10px;
|
||||||
|
box-shadow: 0 4px 20px rgba(0, 0, 0, 0.2);
|
||||||
|
backdrop-filter: blur(5px);
|
||||||
|
border: 1px solid rgba(57, 162, 219, 0.2);
|
||||||
|
}
|
||||||
|
|
||||||
|
#resources-list h2 {
|
||||||
|
color: #39a2db;
|
||||||
|
margin-bottom: 20px;
|
||||||
|
font-size: 1.8rem;
|
||||||
|
text-align: center;
|
||||||
|
position: relative;
|
||||||
|
padding-bottom: 10px;
|
||||||
|
}
|
||||||
|
|
||||||
|
#resources-list h2::after {
|
||||||
|
content: "";
|
||||||
|
position: absolute;
|
||||||
|
bottom: 0;
|
||||||
|
left: 50%;
|
||||||
|
transform: translateX(-50%);
|
||||||
|
width: 120px;
|
||||||
|
height: 2px;
|
||||||
|
background: #39a2db;
|
||||||
|
box-shadow: 0 0 8px rgba(57, 162, 219, 0.6);
|
||||||
|
}
|
||||||
|
|
||||||
|
#resources-list ul {
|
||||||
|
list-style: none;
|
||||||
|
display: grid;
|
||||||
|
grid-template-columns: repeat(auto-fill, minmax(300px, 1fr));
|
||||||
|
gap: 15px;
|
||||||
|
}
|
||||||
|
|
||||||
|
#resources-list li {
|
||||||
|
background: rgba(255, 255, 255, 0.05);
|
||||||
|
padding: 20px;
|
||||||
|
border-radius: 8px;
|
||||||
|
transition: all 0.3s ease;
|
||||||
|
border: 1px solid rgba(57, 162, 219, 0.2);
|
||||||
|
position: relative;
|
||||||
|
overflow: hidden;
|
||||||
|
cursor: pointer; /* 整个卡片可点击 */
|
||||||
|
}
|
||||||
|
|
||||||
|
#resources-list li::before {
|
||||||
|
content: "";
|
||||||
|
position: absolute;
|
||||||
|
top: 0;
|
||||||
|
left: 0;
|
||||||
|
width: 3px;
|
||||||
|
height: 0;
|
||||||
|
background: #39a2db;
|
||||||
|
transition: height 0.3s ease;
|
||||||
|
}
|
||||||
|
|
||||||
|
#resources-list li:hover {
|
||||||
|
transform: translateY(-3px);
|
||||||
|
box-shadow: 0 6px 15px rgba(57, 162, 219, 0.3);
|
||||||
|
border-color: #39a2db;
|
||||||
|
background: rgba(57, 162, 219, 0.08);
|
||||||
|
}
|
||||||
|
|
||||||
|
#resources-list li:hover::before {
|
||||||
|
height: 100%;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* 软件链接样式 */
|
||||||
|
.software-link {
|
||||||
|
color: #e6e6e6;
|
||||||
|
text-decoration: none;
|
||||||
|
display: block;
|
||||||
|
padding: 8px 0;
|
||||||
|
cursor: pointer;
|
||||||
|
transition: color 0.3s ease;
|
||||||
|
font-weight: 600;
|
||||||
|
font-size: 1.1rem;
|
||||||
|
position: relative;
|
||||||
|
padding-left: 20px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.software-link::before {
|
||||||
|
content: "▸";
|
||||||
|
position: absolute;
|
||||||
|
left: 0;
|
||||||
|
color: #39a2db;
|
||||||
|
transition: transform 0.3s ease;
|
||||||
|
}
|
||||||
|
|
||||||
|
.software-link:hover {
|
||||||
|
color: #39a2db;
|
||||||
|
padding-left: 25px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.software-link:hover::before {
|
||||||
|
transform: translateX(5px);
|
||||||
|
}
|
||||||
|
|
||||||
|
/* 软件简介样式 */
|
||||||
|
.software-desc {
|
||||||
|
font-size: 0.9rem;
|
||||||
|
color: #999;
|
||||||
|
margin-top: 10px;
|
||||||
|
padding-left: 20px;
|
||||||
|
line-height: 1.5;
|
||||||
|
border-left: 2px solid rgba(57, 162, 219, 0.3);
|
||||||
|
}
|
||||||
|
|
||||||
|
/* 弹窗遮罩层 */
|
||||||
|
.modal-overlay {
|
||||||
|
position: fixed;
|
||||||
|
top: 0;
|
||||||
|
left: 0;
|
||||||
|
width: 100%;
|
||||||
|
height: 100%;
|
||||||
|
background: rgba(0, 0, 0, 0.8);
|
||||||
|
display: none;
|
||||||
|
justify-content: center;
|
||||||
|
align-items: center;
|
||||||
|
z-index: 9999;
|
||||||
|
backdrop-filter: blur(5px);
|
||||||
|
padding: 10px;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* 弹窗容器 */
|
||||||
|
.modal-container {
|
||||||
|
background: #1a2938;
|
||||||
|
width: 100%;
|
||||||
|
max-width: 500px;
|
||||||
|
border-radius: 10px;
|
||||||
|
padding: 20px;
|
||||||
|
border: 2px solid #39a2db;
|
||||||
|
box-shadow: 0 0 25px rgba(57, 162, 219, 0.6);
|
||||||
|
position: relative;
|
||||||
|
transform: scale(0.95);
|
||||||
|
transition: transform 0.3s ease;
|
||||||
|
max-height: 90vh;
|
||||||
|
overflow-y: auto;
|
||||||
|
-webkit-overflow-scrolling: touch;
|
||||||
|
}
|
||||||
|
|
||||||
|
.modal-overlay.active .modal-container {
|
||||||
|
transform: scale(1);
|
||||||
|
}
|
||||||
|
|
||||||
|
/* 弹窗标题 */
|
||||||
|
.modal-title {
|
||||||
|
color: #39a2db;
|
||||||
|
font-size: 1.5rem;
|
||||||
|
margin-bottom: 15px;
|
||||||
|
text-align: center;
|
||||||
|
position: relative;
|
||||||
|
padding-bottom: 10px;
|
||||||
|
word-break: break-word;
|
||||||
|
}
|
||||||
|
|
||||||
|
.modal-title::after {
|
||||||
|
content: "";
|
||||||
|
position: absolute;
|
||||||
|
bottom: 0;
|
||||||
|
left: 50%;
|
||||||
|
transform: translateX(-50%);
|
||||||
|
width: 80px;
|
||||||
|
height: 2px;
|
||||||
|
background: #39a2db;
|
||||||
|
box-shadow: 0 0 8px rgba(57, 162, 219, 0.6);
|
||||||
|
}
|
||||||
|
|
||||||
|
/* 资源列表样式 */
|
||||||
|
.source-list {
|
||||||
|
list-style: none;
|
||||||
|
margin-top: 15px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.source-list li {
|
||||||
|
margin: 12px 0;
|
||||||
|
padding: 0;
|
||||||
|
background: rgba(255, 255, 255, 0.05);
|
||||||
|
border-radius: 5px;
|
||||||
|
transition: all 0.3s ease;
|
||||||
|
border: 1px solid rgba(57, 162, 219, 0.1);
|
||||||
|
overflow: hidden;
|
||||||
|
}
|
||||||
|
|
||||||
|
.source-list li:hover {
|
||||||
|
background: rgba(57, 162, 219, 0.15);
|
||||||
|
transform: translateX(5px);
|
||||||
|
border-color: rgba(57, 162, 219, 0.4);
|
||||||
|
}
|
||||||
|
|
||||||
|
.source-list a {
|
||||||
|
color: #e6e6e6;
|
||||||
|
text-decoration: none;
|
||||||
|
display: flex;
|
||||||
|
justify-content: space-between;
|
||||||
|
align-items: center;
|
||||||
|
padding: 12px 15px;
|
||||||
|
width: 100%;
|
||||||
|
transition: all 0.2s ease;
|
||||||
|
white-space: nowrap;
|
||||||
|
overflow: hidden;
|
||||||
|
text-overflow: ellipsis;
|
||||||
|
min-height: 44px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.source-list a:hover {
|
||||||
|
color: #39a2db;
|
||||||
|
background: rgba(57, 162, 219, 0.1);
|
||||||
|
}
|
||||||
|
|
||||||
|
.source-name {
|
||||||
|
font-weight: 600;
|
||||||
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
|
gap: 8px;
|
||||||
|
flex: 1;
|
||||||
|
overflow: hidden;
|
||||||
|
text-overflow: ellipsis;
|
||||||
|
}
|
||||||
|
|
||||||
|
.source-name::before {
|
||||||
|
content: "";
|
||||||
|
font-size: 0.8rem;
|
||||||
|
}
|
||||||
|
|
||||||
|
.source-tip {
|
||||||
|
font-size: 0.75rem;
|
||||||
|
color: #ff6b6b;
|
||||||
|
background: rgba(255, 107, 107, 0.1);
|
||||||
|
padding: 3px 8px;
|
||||||
|
border-radius: 10px;
|
||||||
|
border: 1px solid rgba(255, 107, 107, 0.3);
|
||||||
|
white-space: nowrap;
|
||||||
|
flex-shrink: 0;
|
||||||
|
margin-left: 8px;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* 关闭按钮 */
|
||||||
|
.close-btn {
|
||||||
|
display: block;
|
||||||
|
width: 100%;
|
||||||
|
padding: 12px;
|
||||||
|
background: #39a2db;
|
||||||
|
color: #0f1923;
|
||||||
|
border: none;
|
||||||
|
border-radius: 5px;
|
||||||
|
margin-top: 20px;
|
||||||
|
cursor: pointer;
|
||||||
|
font-weight: bold;
|
||||||
|
transition: all 0.3s ease;
|
||||||
|
font-size: 1rem;
|
||||||
|
letter-spacing: 1px;
|
||||||
|
position: relative;
|
||||||
|
overflow: hidden;
|
||||||
|
min-height: 44px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.close-btn::before {
|
||||||
|
content: "";
|
||||||
|
position: absolute;
|
||||||
|
top: 0;
|
||||||
|
left: -100%;
|
||||||
|
width: 100%;
|
||||||
|
height: 100%;
|
||||||
|
background: linear-gradient(90deg, transparent, rgba(255, 255, 255, 0.3), transparent);
|
||||||
|
transition: 0.5s;
|
||||||
|
}
|
||||||
|
|
||||||
|
.close-btn:hover {
|
||||||
|
background: #287ca8;
|
||||||
|
transform: translateY(-2px);
|
||||||
|
box-shadow: 0 4px 10px rgba(57, 162, 219, 0.4);
|
||||||
|
}
|
||||||
|
|
||||||
|
.close-btn:hover::before {
|
||||||
|
left: 100%;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* 页脚样式 */
|
||||||
|
footer {
|
||||||
|
background: rgba(0, 0, 0, 0.6);
|
||||||
|
text-align: center;
|
||||||
|
padding: 15px 0;
|
||||||
|
margin-top: 40px;
|
||||||
|
color: #999;
|
||||||
|
font-size: 0.9rem;
|
||||||
|
position: relative;
|
||||||
|
bottom: 0;
|
||||||
|
width: 100%;
|
||||||
|
border-top: 1px solid rgba(57, 162, 219, 0.2);
|
||||||
|
backdrop-filter: blur(5px);
|
||||||
|
}
|
||||||
|
|
||||||
|
/* 无可用源提示 */
|
||||||
|
.no-source {
|
||||||
|
text-align: center;
|
||||||
|
padding: 20px;
|
||||||
|
color: #ff6b6b;
|
||||||
|
font-weight: bold;
|
||||||
|
background: rgba(255, 107, 107, 0.1);
|
||||||
|
border-radius: 8px;
|
||||||
|
border: 1px dashed rgba(255, 107, 107, 0.4);
|
||||||
|
}
|
||||||
|
|
||||||
|
/* 响应式设计 - 移动端优化 */
|
||||||
|
@media (max-width: 768px) {
|
||||||
|
header h1 {
|
||||||
|
font-size: 1.8rem;
|
||||||
|
}
|
||||||
|
|
||||||
|
nav {
|
||||||
|
gap: 10px;
|
||||||
|
}
|
||||||
|
|
||||||
|
nav a {
|
||||||
|
padding: 6px 12px;
|
||||||
|
font-size: 0.9rem;
|
||||||
|
}
|
||||||
|
|
||||||
|
.welcome {
|
||||||
|
padding: 20px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.welcome h2 {
|
||||||
|
font-size: 1.5rem;
|
||||||
|
}
|
||||||
|
|
||||||
|
#resources-list {
|
||||||
|
padding: 20px;
|
||||||
|
}
|
||||||
|
|
||||||
|
#resources-list ul {
|
||||||
|
grid-template-columns: 1fr;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* 移动端弹窗优化 */
|
||||||
|
.modal-overlay {
|
||||||
|
padding: 5px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.modal-container {
|
||||||
|
padding: 15px;
|
||||||
|
max-height: 92vh;
|
||||||
|
width: 95%;
|
||||||
|
}
|
||||||
|
|
||||||
|
.modal-title {
|
||||||
|
font-size: 1.3rem;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* 移动端源列表 - 垂直堆叠,允许换行 */
|
||||||
|
.source-list a {
|
||||||
|
flex-direction: column;
|
||||||
|
align-items: flex-start;
|
||||||
|
gap: 5px;
|
||||||
|
white-space: normal;
|
||||||
|
padding: 15px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.source-name {
|
||||||
|
width: 100%;
|
||||||
|
overflow: visible;
|
||||||
|
text-overflow: clip;
|
||||||
|
}
|
||||||
|
|
||||||
|
.source-tip {
|
||||||
|
align-self: flex-start;
|
||||||
|
margin-left: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* 按钮移动端优化 */
|
||||||
|
.close-btn {
|
||||||
|
padding: 14px;
|
||||||
|
font-size: 1rem;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@media (max-width: 480px) {
|
||||||
|
header h1 {
|
||||||
|
font-size: 1.5rem;
|
||||||
|
letter-spacing: 1px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.welcome h2 {
|
||||||
|
font-size: 1.3rem;
|
||||||
|
}
|
||||||
|
|
||||||
|
.welcome p {
|
||||||
|
font-size: 0.9rem;
|
||||||
|
}
|
||||||
|
|
||||||
|
.modal-title {
|
||||||
|
font-size: 1.2rem;
|
||||||
|
}
|
||||||
|
|
||||||
|
.source-list a {
|
||||||
|
padding: 12px;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/* 动画效果 */
|
||||||
|
@keyframes pulse {
|
||||||
|
0% { box-shadow: 0 0 0 0 rgba(57, 162, 219, 0.4); }
|
||||||
|
70% { box-shadow: 0 0 0 10px rgba(57, 162, 219, 0); }
|
||||||
|
100% { box-shadow: 0 0 0 0 rgba(57, 162, 219, 0); }
|
||||||
|
}
|
||||||
|
|
||||||
|
.pulse {
|
||||||
|
animation: pulse 2s infinite;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* 软件项悬停动画 */
|
||||||
|
#resources-list li:hover {
|
||||||
|
animation: hoverPulse 0.5s;
|
||||||
|
}
|
||||||
|
|
||||||
|
@keyframes hoverPulse {
|
||||||
|
0% { transform: translateY(0); }
|
||||||
|
50% { transform: translateY(-5px); }
|
||||||
|
100% { transform: translateY(-3px); }
|
||||||
|
}
|
||||||
|
|
||||||
|
/* 加载动画 */
|
||||||
|
.loading {
|
||||||
|
display: inline-block;
|
||||||
|
width: 15px;
|
||||||
|
height: 15px;
|
||||||
|
border: 2px solid rgba(57, 162, 219, 0.3);
|
||||||
|
border-top: 2px solid #39a2db;
|
||||||
|
border-radius: 50%;
|
||||||
|
animation: spin 1s linear infinite;
|
||||||
|
margin-left: 10px;
|
||||||
|
vertical-align: middle;
|
||||||
|
}
|
||||||
|
|
||||||
|
@keyframes spin {
|
||||||
|
0% { transform: rotate(0deg); }
|
||||||
|
100% { transform: rotate(360deg); }
|
||||||
|
}
|
||||||
|
|
||||||
|
/* 防止 iOS 滚动穿透 */
|
||||||
|
body.modal-open {
|
||||||
|
overflow: hidden;
|
||||||
|
position: fixed;
|
||||||
|
width: 100%;
|
||||||
|
height: 100%;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* 卡片内容点击区域 */
|
||||||
|
.card-content {
|
||||||
|
width: 100%;
|
||||||
|
height: 100%;
|
||||||
|
}
|
||||||
|
</style>
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
<header>
|
||||||
|
<h1>虚舟实验室资源中心</h1>
|
||||||
|
</header>
|
||||||
|
<nav>
|
||||||
|
<a href="/games/" class="pulse">返回上一级</a>
|
||||||
|
</nav>
|
||||||
|
<div class="container">
|
||||||
|
<section id="online-resources" class="welcome">
|
||||||
|
<h2>GPCL</h2>
|
||||||
|
</section>
|
||||||
|
<section id="resources-list">
|
||||||
|
<h2>请选择版本</h2>
|
||||||
|
<ul>
|
||||||
|
|
||||||
|
|
||||||
|
<li onclick="openModal('1.3.2')"><div class="card-content">
|
||||||
|
<div class="software-link">1.3.2</div>
|
||||||
|
<div class="software-desc">新增版本设置详细项目,并默认托管<br>版本设置允许删除游戏版本<br>适配浅色模式更多<br>将恢复默认设置移动至兼容性设置(新增),更新API<br>下拉框美化等多处细节
|
||||||
|
</div></div></li>
|
||||||
|
|
||||||
|
<li onclick="openModal('1.3.1')"><div class="card-content">
|
||||||
|
<div class="software-link">1.3.1</div>
|
||||||
|
<div class="software-desc">修复下载时无图表的问题(未在安装环境下调用)<br>将自动检查更新的设置踢到了关于<br>下载页面包含完整的Alpha、Beta、快照、正式版,修复了正式版因UI问题无法完整展示的问题。<br>重构启动页,重新设计布局,新增版本管理与优化版本选择,通过最后启动时间排序<br>启动时增加了"你知道吗?"(手动狗头)<br>新增自动清理日志,可在设置中更改时间,同时外观中的缩放也正式可以用了!
|
||||||
|
</div></div></li>
|
||||||
|
<li onclick="openModal('1.2.1')">
|
||||||
|
<div class="card-content">
|
||||||
|
<div class="software-link">1.2.1</div>
|
||||||
|
<div class="software-desc">将动态库本地化<br>新增防止重复启动/运行<br>去除无用的设置项<br>下载页面的各种东西可以折叠啦
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</li>
|
||||||
|
<li onclick="openModal('1.2.0')">
|
||||||
|
<div class="card-content">
|
||||||
|
<div class="software-link">1.2.0</div>
|
||||||
|
<div class="software-desc">新增滚动条<br>新增浅色模式<br>新增启动器整体启动动画,降低启动白屏时间<br>优化视觉体验,将左侧菜单栏移至顶端,同时放大UI(合适的)<br>优化下载页面观感,不会出现层级嵌套多层滚动条的问题,Java运行时增入<br>新增大量设置,将设置整理为游戏、下载、外观、高级、关于<br></div>
|
||||||
|
</div>
|
||||||
|
</li>
|
||||||
|
<li onclick="openModal('1.1.0')">
|
||||||
|
<div class="card-content">
|
||||||
|
<div class="software-link">1.1.0</div>
|
||||||
|
<div class="software-desc">新增Java自动补全,设置可设置源(谢谢清华!)<br>优化性能<br>下载列表修复大量bug(如无法取消,取消后有残留)<br>新增启动动画<br>完善日志排错功能</div>
|
||||||
|
</div>
|
||||||
|
</li>
|
||||||
|
<li onclick="openModal('1.0.0')">
|
||||||
|
<div class="card-content">
|
||||||
|
<div class="software-link">1.0.0</div>
|
||||||
|
<div class="software-desc">第一个正式版本!</div>
|
||||||
|
</div>
|
||||||
|
</li>
|
||||||
|
<!-- 可以继续添加更多资源卡片 -->
|
||||||
|
</ul>
|
||||||
|
</section>
|
||||||
|
</div>
|
||||||
|
<footer>
|
||||||
|
<p>© 2025-Now 虚舟实验室(CaelLab). All rights reserved.</p>
|
||||||
|
</footer>
|
||||||
|
|
||||||
|
<!-- 资源选择弹窗 -->
|
||||||
|
<div class="modal-overlay" id="modal">
|
||||||
|
<div class="modal-container">
|
||||||
|
<h3 class="modal-title" id="modalTitle">选择下载源</h3>
|
||||||
|
<ul class="source-list" id="sourceList">
|
||||||
|
<!-- 内容由JS动态填充 -->
|
||||||
|
</ul>
|
||||||
|
<button class="close-btn" onclick="closeModal()">关闭</button>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
// 定义 软件名称 -> 各源链接 的映射表
|
||||||
|
const softwareSources = {
|
||||||
|
"1.3.2": {
|
||||||
|
"详情页":"https://gamets.caellab.com/GoodPlanCraftLauncher/",
|
||||||
|
"虚舟实验室NAS":"https://ug.link/yunyun3782/filemgr/share-download/?id=c066ec5f6c614e738b5eca06cab00e2a",
|
||||||
|
"蓝奏云":"https://1213321.lanzouw.com/i9qwh3q4c51c",
|
||||||
|
},
|
||||||
|
"1.3.1": {
|
||||||
|
"虚舟实验室NAS":"https://ug.link/yunyun3782/filemgr/share-download/?id=8eeefbcec145428a90f9a6885ad99735",
|
||||||
|
"百度网盘":"https://pan.baidu.com/s/1JmgRGry7mvIizNwnDI-7Sw?pwd=0705",
|
||||||
|
"蓝奏云":"https://1213321.lanzouw.com/iT9MY3q3zd9a",
|
||||||
|
},
|
||||||
|
"1.2.1": {
|
||||||
|
"虚舟实验室NAS":"https://ug.link/yunyun3782/filemgr/share-download/?id=ddf37d9165fe41f88b51d4ea06f7a48e",
|
||||||
|
"百度网盘":"https://pan.baidu.com/s/15CUV2wjED3VnkQ6AZPy0WQ?pwd=0705",
|
||||||
|
},
|
||||||
|
"1.2.0": {
|
||||||
|
"虚舟实验室NAS":"https://ug.link/yunyun3782/filemgr/share-download/?id=3b0004d6f6b44291b6ab89394190d6dd",
|
||||||
|
"百度网盘":"https://pan.baidu.com/s/1rtHg1zFGL7gSnT8_lO713A?pwd=0705",
|
||||||
|
},
|
||||||
|
"1.1.0": {
|
||||||
|
"虚舟实验室NAS":"https://ug.link/yunyun3782/filemgr/share-download/?id=59a20d416037459f94fa484acb5c6812",
|
||||||
|
"百度网盘":"https://pan.baidu.com/s/1OS6pDv53Y6-K74pCqnxKMg?pwd=0705",
|
||||||
|
},
|
||||||
|
"1.0.0": {
|
||||||
|
"虚舟实验室NAS":"https://ug.link/yunyun3782/filemgr/share-download/?id=2f5c6a6054d74944927127389c7bb9ac",
|
||||||
|
"百度网盘":"https://pan.baidu.com/s/1rKxRC2QP8z0dfiCf5x6wBA?pwd=0705",
|
||||||
|
"蓝奏云":"https://1213321.lanzouw.com/ixOFQ3pvm5kh",
|
||||||
|
},
|
||||||
|
};
|
||||||
|
|
||||||
|
// 源对应的提示文本
|
||||||
|
const sourceTips = {
|
||||||
|
"详情页":"我要去看看!",
|
||||||
|
"源服务器":"₍₍Ϡ(੭•̀ω•́)੭✧不需要跳转页面直接下载",
|
||||||
|
"虚舟实验室NAS": "P2P节点",
|
||||||
|
"GitHub": "国内可能不稳定,备用",
|
||||||
|
"Gitee": "国内镜像稳定",
|
||||||
|
"123云盘": "小流量超高速稳定",
|
||||||
|
"蓝奏云": "纯净多线路自选,提取码0705",
|
||||||
|
"百度网盘":"稳定多年不掉线,提取码0705"
|
||||||
|
};
|
||||||
|
|
||||||
|
// 打开弹窗函数
|
||||||
|
function openModal(softwareName) {
|
||||||
|
const modalTitle = document.getElementById('modalTitle');
|
||||||
|
const sourceList = document.getElementById('sourceList');
|
||||||
|
const modalOverlay = document.getElementById('modal');
|
||||||
|
|
||||||
|
modalTitle.innerText = `GPCL ${softwareName}`;
|
||||||
|
|
||||||
|
// 清空原有列表
|
||||||
|
sourceList.innerHTML = '';
|
||||||
|
|
||||||
|
// 获取当前软件的所有源链接
|
||||||
|
const sources = softwareSources[softwareName];
|
||||||
|
let hasAvailableSource = false;
|
||||||
|
|
||||||
|
// 添加加载动画
|
||||||
|
const loadingDiv = document.createElement('div');
|
||||||
|
loadingDiv.style.textAlign = 'center';
|
||||||
|
loadingDiv.style.padding = '15px';
|
||||||
|
loadingDiv.innerHTML = '正在获取下载源<span class="loading"></span>';
|
||||||
|
sourceList.appendChild(loadingDiv);
|
||||||
|
|
||||||
|
// 模拟加载延迟 - 已加快到300ms
|
||||||
|
setTimeout(() => {
|
||||||
|
sourceList.innerHTML = '';
|
||||||
|
|
||||||
|
for (const [sourceName, url] of Object.entries(sources)) {
|
||||||
|
// 过滤掉链接为0的源
|
||||||
|
if (url === "0") continue;
|
||||||
|
|
||||||
|
hasAvailableSource = true;
|
||||||
|
const li = document.createElement('li');
|
||||||
|
// 只有当提示文本不为空时才显示
|
||||||
|
const tipText = sourceTips[sourceName] ? `<span class="source-tip">${sourceTips[sourceName]}</span>` : '';
|
||||||
|
// 关键修改:为弹窗中的外链添加rel="nofollow"
|
||||||
|
li.innerHTML = `<a href="${url}" target="_blank" rel="nofollow"><span class="source-name">${sourceName}</span> ${tipText}</a>`;
|
||||||
|
sourceList.appendChild(li);
|
||||||
|
}
|
||||||
|
|
||||||
|
// 如果没有可用源,显示提示
|
||||||
|
if (!hasAvailableSource) {
|
||||||
|
const li = document.createElement('div');
|
||||||
|
li.className = 'no-source';
|
||||||
|
li.innerHTML = '暂无可用下载源<br>请稍后再试';
|
||||||
|
sourceList.appendChild(li);
|
||||||
|
}
|
||||||
|
}, 300); // 加载速度加快到300ms
|
||||||
|
|
||||||
|
modalOverlay.style.display = 'flex';
|
||||||
|
document.body.classList.add('modal-open');
|
||||||
|
setTimeout(() => {
|
||||||
|
modalOverlay.classList.add('active');
|
||||||
|
}, 10);
|
||||||
|
}
|
||||||
|
|
||||||
|
// 关闭弹窗函数
|
||||||
|
function closeModal() {
|
||||||
|
const modalOverlay = document.getElementById('modal');
|
||||||
|
modalOverlay.classList.remove('active');
|
||||||
|
document.body.classList.remove('modal-open');
|
||||||
|
setTimeout(() => {
|
||||||
|
modalOverlay.style.display = 'none';
|
||||||
|
}, 300);
|
||||||
|
}
|
||||||
|
|
||||||
|
// 点击遮罩层关闭弹窗
|
||||||
|
document.getElementById('modal').addEventListener('click', function(e) {
|
||||||
|
if (e.target === this) {
|
||||||
|
closeModal();
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
// 按ESC键关闭弹窗
|
||||||
|
document.addEventListener('keydown', function(e) {
|
||||||
|
if (e.key === 'Escape') {
|
||||||
|
closeModal();
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
// 页面加载动画效果
|
||||||
|
window.addEventListener('DOMContentLoaded', () => {
|
||||||
|
const items = document.querySelectorAll('#resources-list li');
|
||||||
|
items.forEach((item, index) => {
|
||||||
|
item.style.opacity = '0';
|
||||||
|
item.style.transform = 'translateY(20px)';
|
||||||
|
setTimeout(() => {
|
||||||
|
item.style.transition = 'opacity 0.5s ease, transform 0.5s ease';
|
||||||
|
item.style.opacity = '1';
|
||||||
|
item.style.transform = 'translateY(0)';
|
||||||
|
}, 100 * index);
|
||||||
|
});
|
||||||
|
|
||||||
|
// 检查URL参数,如果包含资源名称,自动打开对应模态框
|
||||||
|
checkUrlForAutoOpen();
|
||||||
|
});
|
||||||
|
|
||||||
|
// 检查URL参数,自动打开对应资源
|
||||||
|
function checkUrlForAutoOpen() {
|
||||||
|
const url = window.location.href;
|
||||||
|
const queryString = url.split('?')[1];
|
||||||
|
|
||||||
|
if (queryString) {
|
||||||
|
// 去除可能的#符号
|
||||||
|
const cleanParam = queryString.split('#')[0];
|
||||||
|
|
||||||
|
// 检查是否存在这个资源
|
||||||
|
if (softwareSources[cleanParam]) {
|
||||||
|
// 延迟一点打开,确保页面加载完成
|
||||||
|
setTimeout(() => {
|
||||||
|
openModal(cleanParam);
|
||||||
|
}, 500);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</script>
|
||||||
|
</body>
|
||||||
|
</html>
|
||||||
|
|
@ -0,0 +1,432 @@
|
||||||
|
<!DOCTYPE html>
|
||||||
|
<html lang="zh-CN">
|
||||||
|
<head>
|
||||||
|
<meta charset="UTF-8">
|
||||||
|
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||||
|
<meta http-equiv="X-UA-Compatible" content="ie=edge">
|
||||||
|
<title>游戏下载 - 虚舟实验室资源中心</title>
|
||||||
|
<link rel="canonical" href="https://dl.caellab.com/games/">
|
||||||
|
<meta name="description" content="虚舟实验室资源中心提供虚舟实验室开发的游戏,安全可靠,专为技术爱好者打造。">
|
||||||
|
<meta name="keywords" content="虚舟实验室,资源中心,下载站,游戏,areyouok">
|
||||||
|
|
||||||
|
<style>
|
||||||
|
/* 全局样式重置与基础设置 */
|
||||||
|
* {
|
||||||
|
margin: 0;
|
||||||
|
padding: 0;
|
||||||
|
box-sizing: border-box;
|
||||||
|
font-family: "Microsoft YaHei", "Segoe UI", sans-serif;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* 背景与主体样式 - 科技风渐变背景 */
|
||||||
|
body {
|
||||||
|
background: linear-gradient(135deg, #0f1923 0%, #1a2938 50%, #2d4059 100%);
|
||||||
|
color: #e6e6e6;
|
||||||
|
min-height: 100vh;
|
||||||
|
padding-bottom: 50px;
|
||||||
|
background-attachment: fixed;
|
||||||
|
position: relative;
|
||||||
|
overflow-x: hidden;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* 科技风背景装饰 */
|
||||||
|
body::before {
|
||||||
|
content: "";
|
||||||
|
position: fixed;
|
||||||
|
top: 0;
|
||||||
|
left: 0;
|
||||||
|
width: 100%;
|
||||||
|
height: 100%;
|
||||||
|
background:
|
||||||
|
radial-gradient(circle at 20% 30%, rgba(57, 162, 219, 0.1) 0%, transparent 40%),
|
||||||
|
radial-gradient(circle at 80% 70%, rgba(57, 162, 219, 0.08) 0%, transparent 40%);
|
||||||
|
z-index: -1;
|
||||||
|
pointer-events: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* 头部样式 */
|
||||||
|
header {
|
||||||
|
background: rgba(0, 0, 0, 0.5);
|
||||||
|
padding: 20px 0;
|
||||||
|
text-align: center;
|
||||||
|
border-bottom: 2px solid #39a2db;
|
||||||
|
box-shadow: 0 0 15px rgba(57, 162, 219, 0.3);
|
||||||
|
position: relative;
|
||||||
|
backdrop-filter: blur(5px);
|
||||||
|
}
|
||||||
|
|
||||||
|
header h1 {
|
||||||
|
color: #39a2db;
|
||||||
|
font-size: 2.2rem;
|
||||||
|
letter-spacing: 2px;
|
||||||
|
text-shadow: 0 0 10px rgba(57, 162, 219, 0.5);
|
||||||
|
font-weight: 700;
|
||||||
|
position: relative;
|
||||||
|
display: inline-block;
|
||||||
|
}
|
||||||
|
|
||||||
|
header h1::after {
|
||||||
|
content: "";
|
||||||
|
position: absolute;
|
||||||
|
bottom: -5px;
|
||||||
|
left: 50%;
|
||||||
|
transform: translateX(-50%);
|
||||||
|
width: 100px;
|
||||||
|
height: 2px;
|
||||||
|
background: #39a2db;
|
||||||
|
box-shadow: 0 0 10px rgba(57, 162, 219, 0.8);
|
||||||
|
}
|
||||||
|
|
||||||
|
/* 导航栏样式 */
|
||||||
|
nav {
|
||||||
|
background: rgba(0, 0, 0, 0.5);
|
||||||
|
padding: 12px 0;
|
||||||
|
margin: 20px auto;
|
||||||
|
max-width: 1200px;
|
||||||
|
border-radius: 8px;
|
||||||
|
display: flex;
|
||||||
|
flex-wrap: wrap;
|
||||||
|
justify-content: center;
|
||||||
|
gap: 15px;
|
||||||
|
box-shadow: 0 4px 10px rgba(0, 0, 0, 0.3);
|
||||||
|
backdrop-filter: blur(5px);
|
||||||
|
border: 1px solid rgba(57, 162, 219, 0.2);
|
||||||
|
}
|
||||||
|
|
||||||
|
nav a {
|
||||||
|
color: #e6e6e6;
|
||||||
|
text-decoration: none;
|
||||||
|
padding: 8px 18px;
|
||||||
|
border-radius: 4px;
|
||||||
|
transition: all 0.3s ease;
|
||||||
|
border: 1px solid transparent;
|
||||||
|
position: relative;
|
||||||
|
overflow: hidden;
|
||||||
|
}
|
||||||
|
|
||||||
|
nav a::before {
|
||||||
|
content: "";
|
||||||
|
position: absolute;
|
||||||
|
top: 0;
|
||||||
|
left: -100%;
|
||||||
|
width: 100%;
|
||||||
|
height: 100%;
|
||||||
|
background: linear-gradient(90deg, transparent, rgba(57, 162, 219, 0.3), transparent);
|
||||||
|
transition: 0.5s;
|
||||||
|
}
|
||||||
|
|
||||||
|
nav a:hover {
|
||||||
|
background: #39a2db;
|
||||||
|
color: #0f1923;
|
||||||
|
transform: translateY(-2px);
|
||||||
|
box-shadow: 0 4px 8px rgba(57, 162, 219, 0.4);
|
||||||
|
border: 1px solid rgba(255, 255, 255, 0.2);
|
||||||
|
}
|
||||||
|
|
||||||
|
nav a:hover::before {
|
||||||
|
left: 100%;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* 容器样式 */
|
||||||
|
.container {
|
||||||
|
max-width: 1200px;
|
||||||
|
margin: 0 auto;
|
||||||
|
padding: 0 20px;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* 欢迎区域样式 */
|
||||||
|
.welcome {
|
||||||
|
background: rgba(0, 0, 0, 0.3);
|
||||||
|
padding: 30px;
|
||||||
|
border-radius: 10px;
|
||||||
|
margin-bottom: 30px;
|
||||||
|
border-left: 4px solid #39a2db;
|
||||||
|
backdrop-filter: blur(5px);
|
||||||
|
box-shadow: 0 4px 20px rgba(0, 0, 0, 0.2);
|
||||||
|
border: 1px solid rgba(57, 162, 219, 0.2);
|
||||||
|
position: relative;
|
||||||
|
overflow: hidden;
|
||||||
|
}
|
||||||
|
|
||||||
|
.welcome::before {
|
||||||
|
content: "";
|
||||||
|
position: absolute;
|
||||||
|
top: 0;
|
||||||
|
left: 0;
|
||||||
|
width: 100%;
|
||||||
|
height: 3px;
|
||||||
|
background: linear-gradient(90deg, #39a2db, transparent);
|
||||||
|
}
|
||||||
|
|
||||||
|
.welcome h2 {
|
||||||
|
color: #39a2db;
|
||||||
|
margin-bottom: 15px;
|
||||||
|
font-size: 1.8rem;
|
||||||
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
|
gap: 10px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.welcome h2::before {
|
||||||
|
content: "⚡";
|
||||||
|
font-size: 1.5rem;
|
||||||
|
}
|
||||||
|
|
||||||
|
.welcome p {
|
||||||
|
line-height: 1.6;
|
||||||
|
margin-bottom: 10px;
|
||||||
|
text-shadow: 0 1px 2px rgba(0,0,0,0.5);
|
||||||
|
}
|
||||||
|
|
||||||
|
.welcome p:last-child {
|
||||||
|
color: #ff6b6b;
|
||||||
|
font-weight: bold;
|
||||||
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
|
gap: 8px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.welcome p:last-child::before {
|
||||||
|
content: "⚠️";
|
||||||
|
}
|
||||||
|
|
||||||
|
/* 资源列表区域样式 */
|
||||||
|
#resources-list {
|
||||||
|
background: rgba(0, 0, 0, 0.3);
|
||||||
|
padding: 30px;
|
||||||
|
border-radius: 10px;
|
||||||
|
box-shadow: 0 4px 20px rgba(0, 0, 0, 0.2);
|
||||||
|
backdrop-filter: blur(5px);
|
||||||
|
border: 1px solid rgba(57, 162, 219, 0.2);
|
||||||
|
}
|
||||||
|
|
||||||
|
#resources-list h2 {
|
||||||
|
color: #39a2db;
|
||||||
|
margin-bottom: 20px;
|
||||||
|
font-size: 1.8rem;
|
||||||
|
text-align: center;
|
||||||
|
position: relative;
|
||||||
|
padding-bottom: 10px;
|
||||||
|
}
|
||||||
|
|
||||||
|
#resources-list h2::after {
|
||||||
|
content: "";
|
||||||
|
position: absolute;
|
||||||
|
bottom: 0;
|
||||||
|
left: 50%;
|
||||||
|
transform: translateX(-50%);
|
||||||
|
width: 120px;
|
||||||
|
height: 2px;
|
||||||
|
background: #39a2db;
|
||||||
|
box-shadow: 0 0 8px rgba(57, 162, 219, 0.6);
|
||||||
|
}
|
||||||
|
|
||||||
|
#resources-list ul {
|
||||||
|
list-style: none;
|
||||||
|
display: grid;
|
||||||
|
grid-template-columns: repeat(auto-fill, minmax(300px, 1fr));
|
||||||
|
gap: 15px;
|
||||||
|
}
|
||||||
|
|
||||||
|
#resources-list li {
|
||||||
|
background: rgba(255, 255, 255, 0.05);
|
||||||
|
padding: 20px;
|
||||||
|
border-radius: 8px;
|
||||||
|
transition: all 0.3s ease;
|
||||||
|
border: 1px solid rgba(57, 162, 219, 0.2);
|
||||||
|
position: relative;
|
||||||
|
overflow: hidden;
|
||||||
|
cursor: pointer;
|
||||||
|
}
|
||||||
|
|
||||||
|
#resources-list li::before {
|
||||||
|
content: "";
|
||||||
|
position: absolute;
|
||||||
|
top: 0;
|
||||||
|
left: 0;
|
||||||
|
width: 3px;
|
||||||
|
height: 0;
|
||||||
|
background: #39a2db;
|
||||||
|
transition: height 0.3s ease;
|
||||||
|
}
|
||||||
|
|
||||||
|
#resources-list li:hover {
|
||||||
|
transform: translateY(-3px);
|
||||||
|
box-shadow: 0 6px 15px rgba(57, 162, 219, 0.3);
|
||||||
|
border-color: #39a2db;
|
||||||
|
background: rgba(57, 162, 219, 0.08);
|
||||||
|
}
|
||||||
|
|
||||||
|
#resources-list li:hover::before {
|
||||||
|
height: 100%;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* 软件链接样式 */
|
||||||
|
.software-link {
|
||||||
|
color: #e6e6e6;
|
||||||
|
text-decoration: none;
|
||||||
|
display: block;
|
||||||
|
padding: 8px 0;
|
||||||
|
cursor: pointer;
|
||||||
|
transition: color 0.3s ease;
|
||||||
|
font-weight: 600;
|
||||||
|
font-size: 1.1rem;
|
||||||
|
position: relative;
|
||||||
|
padding-left: 20px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.software-link::before {
|
||||||
|
content: "▸";
|
||||||
|
position: absolute;
|
||||||
|
left: 0;
|
||||||
|
color: #39a2db;
|
||||||
|
transition: transform 0.3s ease;
|
||||||
|
}
|
||||||
|
|
||||||
|
.software-link:hover {
|
||||||
|
color: #39a2db;
|
||||||
|
padding-left: 25px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.software-link:hover::before {
|
||||||
|
transform: translateX(5px);
|
||||||
|
}
|
||||||
|
|
||||||
|
/* 软件简介样式 */
|
||||||
|
.software-desc {
|
||||||
|
font-size: 0.9rem;
|
||||||
|
color: #999;
|
||||||
|
margin-top: 10px;
|
||||||
|
padding-left: 20px;
|
||||||
|
line-height: 1.5;
|
||||||
|
border-left: 2px solid rgba(57, 162, 219, 0.3);
|
||||||
|
}
|
||||||
|
|
||||||
|
/* 页脚样式 */
|
||||||
|
footer {
|
||||||
|
background: rgba(0, 0, 0, 0.6);
|
||||||
|
text-align: center;
|
||||||
|
padding: 15px 0;
|
||||||
|
margin-top: 40px;
|
||||||
|
color: #999;
|
||||||
|
font-size: 0.9rem;
|
||||||
|
position: relative;
|
||||||
|
bottom: 0;
|
||||||
|
width: 100%;
|
||||||
|
border-top: 1px solid rgba(57, 162, 219, 0.2);
|
||||||
|
backdrop-filter: blur(5px);
|
||||||
|
}
|
||||||
|
|
||||||
|
/* 响应式设计 - 移动端优化 */
|
||||||
|
@media (max-width: 768px) {
|
||||||
|
header h1 {
|
||||||
|
font-size: 1.8rem;
|
||||||
|
}
|
||||||
|
|
||||||
|
nav {
|
||||||
|
gap: 10px;
|
||||||
|
}
|
||||||
|
|
||||||
|
nav a {
|
||||||
|
padding: 6px 12px;
|
||||||
|
font-size: 0.9rem;
|
||||||
|
}
|
||||||
|
|
||||||
|
.welcome {
|
||||||
|
padding: 20px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.welcome h2 {
|
||||||
|
font-size: 1.5rem;
|
||||||
|
}
|
||||||
|
|
||||||
|
#resources-list {
|
||||||
|
padding: 20px;
|
||||||
|
}
|
||||||
|
|
||||||
|
#resources-list ul {
|
||||||
|
grid-template-columns: 1fr;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@media (max-width: 480px) {
|
||||||
|
header h1 {
|
||||||
|
font-size: 1.5rem;
|
||||||
|
letter-spacing: 1px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.welcome h2 {
|
||||||
|
font-size: 1.3rem;
|
||||||
|
}
|
||||||
|
|
||||||
|
.welcome p {
|
||||||
|
font-size: 0.9rem;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/* 卡片悬停动画 */
|
||||||
|
@keyframes hoverPulse {
|
||||||
|
0% { transform: translateY(0); }
|
||||||
|
50% { transform: translateY(-5px); }
|
||||||
|
100% { transform: translateY(-3px); }
|
||||||
|
}
|
||||||
|
|
||||||
|
#resources-list li:hover {
|
||||||
|
animation: hoverPulse 0.5s;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* 卡片内容点击区域 */
|
||||||
|
.card-content {
|
||||||
|
width: 100%;
|
||||||
|
height: 100%;
|
||||||
|
}
|
||||||
|
</style>
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
<header>
|
||||||
|
<h1>虚舟实验室资源中心</h1>
|
||||||
|
</header>
|
||||||
|
<nav>
|
||||||
|
<a href="/" class="pulse">主页</a>
|
||||||
|
|
||||||
|
</nav>
|
||||||
|
<div class="container">
|
||||||
|
<section id="online-resources" class="welcome">
|
||||||
|
<h2>游戏下载</h2>
|
||||||
|
<p>这里提供各种由虚舟实验室开发的游戏的资源。</p>
|
||||||
|
<p style="color: #ff6b6b;">请注意,这些文件仅供学习和研究使用,经过虚舟实验室同意后才可修改,严禁商用。</p>
|
||||||
|
</section>
|
||||||
|
<section id="resources-list">
|
||||||
|
<h2>资源列表</h2>
|
||||||
|
<ul>
|
||||||
|
<li onclick="window.location.href='/games/areyouok/'">
|
||||||
|
<div class="card-content">
|
||||||
|
<div class="software-link">Are You OK?</div>
|
||||||
|
<div class="software-desc">Are You OK?是CaelLabGameTS开发的一款平台跳跃游戏,充满挑战与乐趣。</div>
|
||||||
|
</div>
|
||||||
|
</li>
|
||||||
|
<!-- 可以继续添加更多资源卡片 -->
|
||||||
|
</ul>
|
||||||
|
</section>
|
||||||
|
</div>
|
||||||
|
<footer>
|
||||||
|
<p>© 2025-2099 虚舟实验室(CaelLab). All rights reserved.</p>
|
||||||
|
</footer>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
// 页面加载动画效果 - 卡片淡入
|
||||||
|
window.addEventListener('DOMContentLoaded', () => {
|
||||||
|
const items = document.querySelectorAll('#resources-list li');
|
||||||
|
items.forEach((item, index) => {
|
||||||
|
item.style.opacity = '0';
|
||||||
|
item.style.transform = 'translateY(20px)';
|
||||||
|
setTimeout(() => {
|
||||||
|
item.style.transition = 'opacity 0.5s ease, transform 0.5s ease';
|
||||||
|
item.style.opacity = '1';
|
||||||
|
item.style.transform = 'translateY(0)';
|
||||||
|
}, 100 * index);
|
||||||
|
});
|
||||||
|
});
|
||||||
|
</script>
|
||||||
|
</body>
|
||||||
|
</html>
|
||||||
|
|
@ -0,0 +1,828 @@
|
||||||
|
<!DOCTYPE html>
|
||||||
|
<html lang="zh-CN">
|
||||||
|
<head>
|
||||||
|
<meta charset="UTF-8">
|
||||||
|
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||||
|
<meta http-equiv="X-UA-Compatible" content="ie=edge">
|
||||||
|
<title>无尽长廊 The Endless Corridor - 游戏下载 - 虚舟实验室资源中心</title>
|
||||||
|
<!-- 添加SEO描述和关键词 -->
|
||||||
|
<link rel="canonical" href="https://dl.caellab.com/games/The-Endless-Corridor/">
|
||||||
|
<meta name="description" content="虚舟实验室资源中心提供打造的无尽长廊游戏,不同版本均可在此找到哦。">
|
||||||
|
|
||||||
|
<style>
|
||||||
|
/* 全局样式重置与基础设置 */
|
||||||
|
* {
|
||||||
|
margin: 0;
|
||||||
|
padding: 0;
|
||||||
|
box-sizing: border-box;
|
||||||
|
font-family: "Microsoft YaHei", "Segoe UI", sans-serif;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* 背景与主体样式 - 科技风渐变背景 */
|
||||||
|
body {
|
||||||
|
background: linear-gradient(135deg, #0f1923 0%, #1a2938 50%, #2d4059 100%);
|
||||||
|
color: #e6e6e6;
|
||||||
|
min-height: 100vh;
|
||||||
|
padding-bottom: 50px;
|
||||||
|
background-attachment: fixed;
|
||||||
|
position: relative;
|
||||||
|
overflow-x: hidden;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* 科技风背景装饰 */
|
||||||
|
body::before {
|
||||||
|
content: "";
|
||||||
|
position: fixed;
|
||||||
|
top: 0;
|
||||||
|
left: 0;
|
||||||
|
width: 100%;
|
||||||
|
height: 100%;
|
||||||
|
background:
|
||||||
|
radial-gradient(circle at 20% 30%, rgba(57, 162, 219, 0.1) 0%, transparent 40%),
|
||||||
|
radial-gradient(circle at 80% 70%, rgba(57, 162, 219, 0.08) 0%, transparent 40%);
|
||||||
|
z-index: -1;
|
||||||
|
pointer-events: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* 头部样式 */
|
||||||
|
header {
|
||||||
|
background: rgba(0, 0, 0, 0.5);
|
||||||
|
padding: 20px 0;
|
||||||
|
text-align: center;
|
||||||
|
border-bottom: 2px solid #39a2db;
|
||||||
|
box-shadow: 0 0 15px rgba(57, 162, 219, 0.3);
|
||||||
|
position: relative;
|
||||||
|
backdrop-filter: blur(5px);
|
||||||
|
}
|
||||||
|
|
||||||
|
header h1 {
|
||||||
|
color: #39a2db;
|
||||||
|
font-size: 2.2rem;
|
||||||
|
letter-spacing: 2px;
|
||||||
|
text-shadow: 0 0 10px rgba(57, 162, 219, 0.5);
|
||||||
|
font-weight: 700;
|
||||||
|
position: relative;
|
||||||
|
display: inline-block;
|
||||||
|
}
|
||||||
|
|
||||||
|
header h1::after {
|
||||||
|
content: "";
|
||||||
|
position: absolute;
|
||||||
|
bottom: -5px;
|
||||||
|
left: 50%;
|
||||||
|
transform: translateX(-50%);
|
||||||
|
width: 100px;
|
||||||
|
height: 2px;
|
||||||
|
background: #39a2db;
|
||||||
|
box-shadow: 0 0 10px rgba(57, 162, 219, 0.8);
|
||||||
|
}
|
||||||
|
|
||||||
|
/* 导航栏样式 */
|
||||||
|
nav {
|
||||||
|
background: rgba(0, 0, 0, 0.5);
|
||||||
|
padding: 12px 0;
|
||||||
|
margin: 20px auto;
|
||||||
|
max-width: 1200px;
|
||||||
|
border-radius: 8px;
|
||||||
|
display: flex;
|
||||||
|
flex-wrap: wrap;
|
||||||
|
justify-content: center;
|
||||||
|
gap: 15px;
|
||||||
|
box-shadow: 0 4px 10px rgba(0, 0, 0, 0.3);
|
||||||
|
backdrop-filter: blur(5px);
|
||||||
|
border: 1px solid rgba(57, 162, 219, 0.2);
|
||||||
|
}
|
||||||
|
|
||||||
|
nav a {
|
||||||
|
color: #e6e6e6;
|
||||||
|
text-decoration: none;
|
||||||
|
padding: 8px 18px;
|
||||||
|
border-radius: 4px;
|
||||||
|
transition: all 0.3s ease;
|
||||||
|
border: 1px solid transparent;
|
||||||
|
position: relative;
|
||||||
|
overflow: hidden;
|
||||||
|
}
|
||||||
|
|
||||||
|
nav a::before {
|
||||||
|
content: "";
|
||||||
|
position: absolute;
|
||||||
|
top: 0;
|
||||||
|
left: -100%;
|
||||||
|
width: 100%;
|
||||||
|
height: 100%;
|
||||||
|
background: linear-gradient(90deg, transparent, rgba(57, 162, 219, 0.3), transparent);
|
||||||
|
transition: 0.5s;
|
||||||
|
}
|
||||||
|
|
||||||
|
nav a:hover {
|
||||||
|
background: #39a2db;
|
||||||
|
color: #0f1923;
|
||||||
|
transform: translateY(-2px);
|
||||||
|
box-shadow: 0 4px 8px rgba(57, 162, 219, 0.4);
|
||||||
|
border: 1px solid rgba(255, 255, 255, 0.2);
|
||||||
|
}
|
||||||
|
|
||||||
|
nav a:hover::before {
|
||||||
|
left: 100%;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* 容器样式 */
|
||||||
|
.container {
|
||||||
|
max-width: 1200px;
|
||||||
|
margin: 0 auto;
|
||||||
|
padding: 0 20px;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* 欢迎区域样式 */
|
||||||
|
.welcome {
|
||||||
|
background: rgba(0, 0, 0, 0.3);
|
||||||
|
padding: 30px;
|
||||||
|
border-radius: 10px;
|
||||||
|
margin-bottom: 30px;
|
||||||
|
border-left: 4px solid #39a2db;
|
||||||
|
backdrop-filter: blur(5px);
|
||||||
|
box-shadow: 0 4px 20px rgba(0, 0, 0, 0.2);
|
||||||
|
border: 1px solid rgba(57, 162, 219, 0.2);
|
||||||
|
position: relative;
|
||||||
|
overflow: hidden;
|
||||||
|
}
|
||||||
|
|
||||||
|
.welcome::before {
|
||||||
|
content: "";
|
||||||
|
position: absolute;
|
||||||
|
top: 0;
|
||||||
|
left: 0;
|
||||||
|
width: 100%;
|
||||||
|
height: 3px;
|
||||||
|
background: linear-gradient(90deg, #39a2db, transparent);
|
||||||
|
}
|
||||||
|
|
||||||
|
.welcome h2 {
|
||||||
|
color: #39a2db;
|
||||||
|
margin-bottom: 15px;
|
||||||
|
font-size: 1.8rem;
|
||||||
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
|
gap: 10px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.welcome h2::before {
|
||||||
|
content: "⚡";
|
||||||
|
font-size: 1.5rem;
|
||||||
|
}
|
||||||
|
|
||||||
|
.welcome p {
|
||||||
|
line-height: 1.6;
|
||||||
|
margin-bottom: 10px;
|
||||||
|
text-shadow: 0 1px 2px rgba(0,0,0,0.5);
|
||||||
|
}
|
||||||
|
|
||||||
|
.welcome p:last-child {
|
||||||
|
color: #ff6b6b;
|
||||||
|
font-weight: bold;
|
||||||
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
|
gap: 8px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.welcome p:last-child::before {
|
||||||
|
content: "⚠️";
|
||||||
|
}
|
||||||
|
|
||||||
|
/* 资源列表区域样式 */
|
||||||
|
#resources-list {
|
||||||
|
background: rgba(0, 0, 0, 0.3);
|
||||||
|
padding: 30px;
|
||||||
|
border-radius: 10px;
|
||||||
|
box-shadow: 0 4px 20px rgba(0, 0, 0, 0.2);
|
||||||
|
backdrop-filter: blur(5px);
|
||||||
|
border: 1px solid rgba(57, 162, 219, 0.2);
|
||||||
|
}
|
||||||
|
|
||||||
|
#resources-list h2 {
|
||||||
|
color: #39a2db;
|
||||||
|
margin-bottom: 20px;
|
||||||
|
font-size: 1.8rem;
|
||||||
|
text-align: center;
|
||||||
|
position: relative;
|
||||||
|
padding-bottom: 10px;
|
||||||
|
}
|
||||||
|
|
||||||
|
#resources-list h2::after {
|
||||||
|
content: "";
|
||||||
|
position: absolute;
|
||||||
|
bottom: 0;
|
||||||
|
left: 50%;
|
||||||
|
transform: translateX(-50%);
|
||||||
|
width: 120px;
|
||||||
|
height: 2px;
|
||||||
|
background: #39a2db;
|
||||||
|
box-shadow: 0 0 8px rgba(57, 162, 219, 0.6);
|
||||||
|
}
|
||||||
|
|
||||||
|
#resources-list ul {
|
||||||
|
list-style: none;
|
||||||
|
display: grid;
|
||||||
|
grid-template-columns: repeat(auto-fill, minmax(300px, 1fr));
|
||||||
|
gap: 15px;
|
||||||
|
}
|
||||||
|
|
||||||
|
#resources-list li {
|
||||||
|
background: rgba(255, 255, 255, 0.05);
|
||||||
|
padding: 20px;
|
||||||
|
border-radius: 8px;
|
||||||
|
transition: all 0.3s ease;
|
||||||
|
border: 1px solid rgba(57, 162, 219, 0.2);
|
||||||
|
position: relative;
|
||||||
|
overflow: hidden;
|
||||||
|
cursor: pointer; /* 整个卡片可点击 */
|
||||||
|
}
|
||||||
|
|
||||||
|
#resources-list li::before {
|
||||||
|
content: "";
|
||||||
|
position: absolute;
|
||||||
|
top: 0;
|
||||||
|
left: 0;
|
||||||
|
width: 3px;
|
||||||
|
height: 0;
|
||||||
|
background: #39a2db;
|
||||||
|
transition: height 0.3s ease;
|
||||||
|
}
|
||||||
|
|
||||||
|
#resources-list li:hover {
|
||||||
|
transform: translateY(-3px);
|
||||||
|
box-shadow: 0 6px 15px rgba(57, 162, 219, 0.3);
|
||||||
|
border-color: #39a2db;
|
||||||
|
background: rgba(57, 162, 219, 0.08);
|
||||||
|
}
|
||||||
|
|
||||||
|
#resources-list li:hover::before {
|
||||||
|
height: 100%;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* 软件链接样式 */
|
||||||
|
.software-link {
|
||||||
|
color: #e6e6e6;
|
||||||
|
text-decoration: none;
|
||||||
|
display: block;
|
||||||
|
padding: 8px 0;
|
||||||
|
cursor: pointer;
|
||||||
|
transition: color 0.3s ease;
|
||||||
|
font-weight: 600;
|
||||||
|
font-size: 1.1rem;
|
||||||
|
position: relative;
|
||||||
|
padding-left: 20px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.software-link::before {
|
||||||
|
content: "▸";
|
||||||
|
position: absolute;
|
||||||
|
left: 0;
|
||||||
|
color: #39a2db;
|
||||||
|
transition: transform 0.3s ease;
|
||||||
|
}
|
||||||
|
|
||||||
|
.software-link:hover {
|
||||||
|
color: #39a2db;
|
||||||
|
padding-left: 25px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.software-link:hover::before {
|
||||||
|
transform: translateX(5px);
|
||||||
|
}
|
||||||
|
|
||||||
|
/* 软件简介样式 */
|
||||||
|
.software-desc {
|
||||||
|
font-size: 0.9rem;
|
||||||
|
color: #999;
|
||||||
|
margin-top: 10px;
|
||||||
|
padding-left: 20px;
|
||||||
|
line-height: 1.5;
|
||||||
|
border-left: 2px solid rgba(57, 162, 219, 0.3);
|
||||||
|
}
|
||||||
|
|
||||||
|
/* 弹窗遮罩层 */
|
||||||
|
.modal-overlay {
|
||||||
|
position: fixed;
|
||||||
|
top: 0;
|
||||||
|
left: 0;
|
||||||
|
width: 100%;
|
||||||
|
height: 100%;
|
||||||
|
background: rgba(0, 0, 0, 0.8);
|
||||||
|
display: none;
|
||||||
|
justify-content: center;
|
||||||
|
align-items: center;
|
||||||
|
z-index: 9999;
|
||||||
|
backdrop-filter: blur(5px);
|
||||||
|
padding: 10px;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* 弹窗容器 */
|
||||||
|
.modal-container {
|
||||||
|
background: #1a2938;
|
||||||
|
width: 100%;
|
||||||
|
max-width: 500px;
|
||||||
|
border-radius: 10px;
|
||||||
|
padding: 20px;
|
||||||
|
border: 2px solid #39a2db;
|
||||||
|
box-shadow: 0 0 25px rgba(57, 162, 219, 0.6);
|
||||||
|
position: relative;
|
||||||
|
transform: scale(0.95);
|
||||||
|
transition: transform 0.3s ease;
|
||||||
|
max-height: 90vh;
|
||||||
|
overflow-y: auto;
|
||||||
|
-webkit-overflow-scrolling: touch;
|
||||||
|
}
|
||||||
|
|
||||||
|
.modal-overlay.active .modal-container {
|
||||||
|
transform: scale(1);
|
||||||
|
}
|
||||||
|
|
||||||
|
/* 弹窗标题 */
|
||||||
|
.modal-title {
|
||||||
|
color: #39a2db;
|
||||||
|
font-size: 1.5rem;
|
||||||
|
margin-bottom: 15px;
|
||||||
|
text-align: center;
|
||||||
|
position: relative;
|
||||||
|
padding-bottom: 10px;
|
||||||
|
word-break: break-word;
|
||||||
|
}
|
||||||
|
|
||||||
|
.modal-title::after {
|
||||||
|
content: "";
|
||||||
|
position: absolute;
|
||||||
|
bottom: 0;
|
||||||
|
left: 50%;
|
||||||
|
transform: translateX(-50%);
|
||||||
|
width: 80px;
|
||||||
|
height: 2px;
|
||||||
|
background: #39a2db;
|
||||||
|
box-shadow: 0 0 8px rgba(57, 162, 219, 0.6);
|
||||||
|
}
|
||||||
|
|
||||||
|
/* 资源列表样式 */
|
||||||
|
.source-list {
|
||||||
|
list-style: none;
|
||||||
|
margin-top: 15px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.source-list li {
|
||||||
|
margin: 12px 0;
|
||||||
|
padding: 0;
|
||||||
|
background: rgba(255, 255, 255, 0.05);
|
||||||
|
border-radius: 5px;
|
||||||
|
transition: all 0.3s ease;
|
||||||
|
border: 1px solid rgba(57, 162, 219, 0.1);
|
||||||
|
overflow: hidden;
|
||||||
|
}
|
||||||
|
|
||||||
|
.source-list li:hover {
|
||||||
|
background: rgba(57, 162, 219, 0.15);
|
||||||
|
transform: translateX(5px);
|
||||||
|
border-color: rgba(57, 162, 219, 0.4);
|
||||||
|
}
|
||||||
|
|
||||||
|
.source-list a {
|
||||||
|
color: #e6e6e6;
|
||||||
|
text-decoration: none;
|
||||||
|
display: flex;
|
||||||
|
justify-content: space-between;
|
||||||
|
align-items: center;
|
||||||
|
padding: 12px 15px;
|
||||||
|
width: 100%;
|
||||||
|
transition: all 0.2s ease;
|
||||||
|
white-space: nowrap;
|
||||||
|
overflow: hidden;
|
||||||
|
text-overflow: ellipsis;
|
||||||
|
min-height: 44px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.source-list a:hover {
|
||||||
|
color: #39a2db;
|
||||||
|
background: rgba(57, 162, 219, 0.1);
|
||||||
|
}
|
||||||
|
|
||||||
|
.source-name {
|
||||||
|
font-weight: 600;
|
||||||
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
|
gap: 8px;
|
||||||
|
flex: 1;
|
||||||
|
overflow: hidden;
|
||||||
|
text-overflow: ellipsis;
|
||||||
|
}
|
||||||
|
|
||||||
|
.source-name::before {
|
||||||
|
content: "";
|
||||||
|
font-size: 0.8rem;
|
||||||
|
}
|
||||||
|
|
||||||
|
.source-tip {
|
||||||
|
font-size: 0.75rem;
|
||||||
|
color: #ff6b6b;
|
||||||
|
background: rgba(255, 107, 107, 0.1);
|
||||||
|
padding: 3px 8px;
|
||||||
|
border-radius: 10px;
|
||||||
|
border: 1px solid rgba(255, 107, 107, 0.3);
|
||||||
|
white-space: nowrap;
|
||||||
|
flex-shrink: 0;
|
||||||
|
margin-left: 8px;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* 关闭按钮 */
|
||||||
|
.close-btn {
|
||||||
|
display: block;
|
||||||
|
width: 100%;
|
||||||
|
padding: 12px;
|
||||||
|
background: #39a2db;
|
||||||
|
color: #0f1923;
|
||||||
|
border: none;
|
||||||
|
border-radius: 5px;
|
||||||
|
margin-top: 20px;
|
||||||
|
cursor: pointer;
|
||||||
|
font-weight: bold;
|
||||||
|
transition: all 0.3s ease;
|
||||||
|
font-size: 1rem;
|
||||||
|
letter-spacing: 1px;
|
||||||
|
position: relative;
|
||||||
|
overflow: hidden;
|
||||||
|
min-height: 44px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.close-btn::before {
|
||||||
|
content: "";
|
||||||
|
position: absolute;
|
||||||
|
top: 0;
|
||||||
|
left: -100%;
|
||||||
|
width: 100%;
|
||||||
|
height: 100%;
|
||||||
|
background: linear-gradient(90deg, transparent, rgba(255, 255, 255, 0.3), transparent);
|
||||||
|
transition: 0.5s;
|
||||||
|
}
|
||||||
|
|
||||||
|
.close-btn:hover {
|
||||||
|
background: #287ca8;
|
||||||
|
transform: translateY(-2px);
|
||||||
|
box-shadow: 0 4px 10px rgba(57, 162, 219, 0.4);
|
||||||
|
}
|
||||||
|
|
||||||
|
.close-btn:hover::before {
|
||||||
|
left: 100%;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* 页脚样式 */
|
||||||
|
footer {
|
||||||
|
background: rgba(0, 0, 0, 0.6);
|
||||||
|
text-align: center;
|
||||||
|
padding: 15px 0;
|
||||||
|
margin-top: 40px;
|
||||||
|
color: #999;
|
||||||
|
font-size: 0.9rem;
|
||||||
|
position: relative;
|
||||||
|
bottom: 0;
|
||||||
|
width: 100%;
|
||||||
|
border-top: 1px solid rgba(57, 162, 219, 0.2);
|
||||||
|
backdrop-filter: blur(5px);
|
||||||
|
}
|
||||||
|
|
||||||
|
/* 无可用源提示 */
|
||||||
|
.no-source {
|
||||||
|
text-align: center;
|
||||||
|
padding: 20px;
|
||||||
|
color: #ff6b6b;
|
||||||
|
font-weight: bold;
|
||||||
|
background: rgba(255, 107, 107, 0.1);
|
||||||
|
border-radius: 8px;
|
||||||
|
border: 1px dashed rgba(255, 107, 107, 0.4);
|
||||||
|
}
|
||||||
|
|
||||||
|
/* 响应式设计 - 移动端优化 */
|
||||||
|
@media (max-width: 768px) {
|
||||||
|
header h1 {
|
||||||
|
font-size: 1.8rem;
|
||||||
|
}
|
||||||
|
|
||||||
|
nav {
|
||||||
|
gap: 10px;
|
||||||
|
}
|
||||||
|
|
||||||
|
nav a {
|
||||||
|
padding: 6px 12px;
|
||||||
|
font-size: 0.9rem;
|
||||||
|
}
|
||||||
|
|
||||||
|
.welcome {
|
||||||
|
padding: 20px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.welcome h2 {
|
||||||
|
font-size: 1.5rem;
|
||||||
|
}
|
||||||
|
|
||||||
|
#resources-list {
|
||||||
|
padding: 20px;
|
||||||
|
}
|
||||||
|
|
||||||
|
#resources-list ul {
|
||||||
|
grid-template-columns: 1fr;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* 移动端弹窗优化 */
|
||||||
|
.modal-overlay {
|
||||||
|
padding: 5px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.modal-container {
|
||||||
|
padding: 15px;
|
||||||
|
max-height: 92vh;
|
||||||
|
width: 95%;
|
||||||
|
}
|
||||||
|
|
||||||
|
.modal-title {
|
||||||
|
font-size: 1.3rem;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* 移动端源列表 - 垂直堆叠,允许换行 */
|
||||||
|
.source-list a {
|
||||||
|
flex-direction: column;
|
||||||
|
align-items: flex-start;
|
||||||
|
gap: 5px;
|
||||||
|
white-space: normal;
|
||||||
|
padding: 15px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.source-name {
|
||||||
|
width: 100%;
|
||||||
|
overflow: visible;
|
||||||
|
text-overflow: clip;
|
||||||
|
}
|
||||||
|
|
||||||
|
.source-tip {
|
||||||
|
align-self: flex-start;
|
||||||
|
margin-left: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* 按钮移动端优化 */
|
||||||
|
.close-btn {
|
||||||
|
padding: 14px;
|
||||||
|
font-size: 1rem;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@media (max-width: 480px) {
|
||||||
|
header h1 {
|
||||||
|
font-size: 1.5rem;
|
||||||
|
letter-spacing: 1px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.welcome h2 {
|
||||||
|
font-size: 1.3rem;
|
||||||
|
}
|
||||||
|
|
||||||
|
.welcome p {
|
||||||
|
font-size: 0.9rem;
|
||||||
|
}
|
||||||
|
|
||||||
|
.modal-title {
|
||||||
|
font-size: 1.2rem;
|
||||||
|
}
|
||||||
|
|
||||||
|
.source-list a {
|
||||||
|
padding: 12px;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/* 动画效果 */
|
||||||
|
@keyframes pulse {
|
||||||
|
0% { box-shadow: 0 0 0 0 rgba(57, 162, 219, 0.4); }
|
||||||
|
70% { box-shadow: 0 0 0 10px rgba(57, 162, 219, 0); }
|
||||||
|
100% { box-shadow: 0 0 0 0 rgba(57, 162, 219, 0); }
|
||||||
|
}
|
||||||
|
|
||||||
|
.pulse {
|
||||||
|
animation: pulse 2s infinite;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* 软件项悬停动画 */
|
||||||
|
#resources-list li:hover {
|
||||||
|
animation: hoverPulse 0.5s;
|
||||||
|
}
|
||||||
|
|
||||||
|
@keyframes hoverPulse {
|
||||||
|
0% { transform: translateY(0); }
|
||||||
|
50% { transform: translateY(-5px); }
|
||||||
|
100% { transform: translateY(-3px); }
|
||||||
|
}
|
||||||
|
|
||||||
|
/* 加载动画 */
|
||||||
|
.loading {
|
||||||
|
display: inline-block;
|
||||||
|
width: 15px;
|
||||||
|
height: 15px;
|
||||||
|
border: 2px solid rgba(57, 162, 219, 0.3);
|
||||||
|
border-top: 2px solid #39a2db;
|
||||||
|
border-radius: 50%;
|
||||||
|
animation: spin 1s linear infinite;
|
||||||
|
margin-left: 10px;
|
||||||
|
vertical-align: middle;
|
||||||
|
}
|
||||||
|
|
||||||
|
@keyframes spin {
|
||||||
|
0% { transform: rotate(0deg); }
|
||||||
|
100% { transform: rotate(360deg); }
|
||||||
|
}
|
||||||
|
|
||||||
|
/* 防止 iOS 滚动穿透 */
|
||||||
|
body.modal-open {
|
||||||
|
overflow: hidden;
|
||||||
|
position: fixed;
|
||||||
|
width: 100%;
|
||||||
|
height: 100%;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* 卡片内容点击区域 */
|
||||||
|
.card-content {
|
||||||
|
width: 100%;
|
||||||
|
height: 100%;
|
||||||
|
}
|
||||||
|
</style>
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
<header>
|
||||||
|
<h1>虚舟实验室资源中心</h1>
|
||||||
|
</header>
|
||||||
|
<nav>
|
||||||
|
<a href="/games/" class="pulse">返回上一级</a>
|
||||||
|
</nav>
|
||||||
|
<div class="container">
|
||||||
|
<section id="online-resources" class="welcome">
|
||||||
|
<h2>Are You OK?</h2>
|
||||||
|
</section>
|
||||||
|
<section id="resources-list">
|
||||||
|
<h2>请选择版本</h2>
|
||||||
|
<ul>
|
||||||
|
<li onclick="openModal('1.0.0')">
|
||||||
|
<div class="card-content">
|
||||||
|
<div class="software-link">1.0.0</div>
|
||||||
|
<div class="software-desc">游戏正式版发布。</div>
|
||||||
|
</div>
|
||||||
|
</li>
|
||||||
|
<!-- 可以继续添加更多资源卡片 -->
|
||||||
|
</ul>
|
||||||
|
</section>
|
||||||
|
</div>
|
||||||
|
<footer>
|
||||||
|
<p>© 2025-Now 虚舟实验室(CaelLab). All rights reserved.</p>
|
||||||
|
</footer>
|
||||||
|
|
||||||
|
<!-- 资源选择弹窗 -->
|
||||||
|
<div class="modal-overlay" id="modal">
|
||||||
|
<div class="modal-container">
|
||||||
|
<h3 class="modal-title" id="modalTitle">选择下载源</h3>
|
||||||
|
<ul class="source-list" id="sourceList">
|
||||||
|
<!-- 内容由JS动态填充 -->
|
||||||
|
</ul>
|
||||||
|
<button class="close-btn" onclick="closeModal()">关闭</button>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
// 定义 软件名称 -> 各源链接 的映射表
|
||||||
|
const softwareSources = {
|
||||||
|
|
||||||
|
"1.0.0": {
|
||||||
|
"详情页":"https://gamets.caellab.com/the-endless-corridor/",
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
// 源对应的提示文本
|
||||||
|
const sourceTips = {
|
||||||
|
"详情页":"我要去看看!",
|
||||||
|
"源服务器":"₍₍Ϡ(੭•̀ω•́)੭✧不需要跳转页面直接下载",
|
||||||
|
"虚舟实验室NAS": "P2P节点",
|
||||||
|
"GitHub": "国内可能不稳定,备用",
|
||||||
|
"Gitee": "国内镜像稳定",
|
||||||
|
"123云盘": "小流量超高速稳定",
|
||||||
|
"蓝奏云": "纯净多线路自选,提取码0705",
|
||||||
|
"百度网盘":"稳定多年不掉线,提取码0705"
|
||||||
|
};
|
||||||
|
|
||||||
|
// 打开弹窗函数
|
||||||
|
function openModal(softwareName) {
|
||||||
|
const modalTitle = document.getElementById('modalTitle');
|
||||||
|
const sourceList = document.getElementById('sourceList');
|
||||||
|
const modalOverlay = document.getElementById('modal');
|
||||||
|
|
||||||
|
modalTitle.innerText = `Are You OK? ${softwareName}`;
|
||||||
|
|
||||||
|
// 清空原有列表
|
||||||
|
sourceList.innerHTML = '';
|
||||||
|
|
||||||
|
// 获取当前软件的所有源链接
|
||||||
|
const sources = softwareSources[softwareName];
|
||||||
|
let hasAvailableSource = false;
|
||||||
|
|
||||||
|
// 添加加载动画
|
||||||
|
const loadingDiv = document.createElement('div');
|
||||||
|
loadingDiv.style.textAlign = 'center';
|
||||||
|
loadingDiv.style.padding = '15px';
|
||||||
|
loadingDiv.innerHTML = '正在获取下载源<span class="loading"></span>';
|
||||||
|
sourceList.appendChild(loadingDiv);
|
||||||
|
|
||||||
|
// 模拟加载延迟 - 已加快到300ms
|
||||||
|
setTimeout(() => {
|
||||||
|
sourceList.innerHTML = '';
|
||||||
|
|
||||||
|
for (const [sourceName, url] of Object.entries(sources)) {
|
||||||
|
// 过滤掉链接为0的源
|
||||||
|
if (url === "0") continue;
|
||||||
|
|
||||||
|
hasAvailableSource = true;
|
||||||
|
const li = document.createElement('li');
|
||||||
|
// 只有当提示文本不为空时才显示
|
||||||
|
const tipText = sourceTips[sourceName] ? `<span class="source-tip">${sourceTips[sourceName]}</span>` : '';
|
||||||
|
// 关键修改:为弹窗中的外链添加rel="nofollow"
|
||||||
|
li.innerHTML = `<a href="${url}" target="_blank" rel="nofollow"><span class="source-name">${sourceName}</span> ${tipText}</a>`;
|
||||||
|
sourceList.appendChild(li);
|
||||||
|
}
|
||||||
|
|
||||||
|
// 如果没有可用源,显示提示
|
||||||
|
if (!hasAvailableSource) {
|
||||||
|
const li = document.createElement('div');
|
||||||
|
li.className = 'no-source';
|
||||||
|
li.innerHTML = '暂无可用下载源<br>请稍后再试';
|
||||||
|
sourceList.appendChild(li);
|
||||||
|
}
|
||||||
|
}, 300); // 加载速度加快到300ms
|
||||||
|
|
||||||
|
modalOverlay.style.display = 'flex';
|
||||||
|
document.body.classList.add('modal-open');
|
||||||
|
setTimeout(() => {
|
||||||
|
modalOverlay.classList.add('active');
|
||||||
|
}, 10);
|
||||||
|
}
|
||||||
|
|
||||||
|
// 关闭弹窗函数
|
||||||
|
function closeModal() {
|
||||||
|
const modalOverlay = document.getElementById('modal');
|
||||||
|
modalOverlay.classList.remove('active');
|
||||||
|
document.body.classList.remove('modal-open');
|
||||||
|
setTimeout(() => {
|
||||||
|
modalOverlay.style.display = 'none';
|
||||||
|
}, 300);
|
||||||
|
}
|
||||||
|
|
||||||
|
// 点击遮罩层关闭弹窗
|
||||||
|
document.getElementById('modal').addEventListener('click', function(e) {
|
||||||
|
if (e.target === this) {
|
||||||
|
closeModal();
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
// 按ESC键关闭弹窗
|
||||||
|
document.addEventListener('keydown', function(e) {
|
||||||
|
if (e.key === 'Escape') {
|
||||||
|
closeModal();
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
// 页面加载动画效果
|
||||||
|
window.addEventListener('DOMContentLoaded', () => {
|
||||||
|
const items = document.querySelectorAll('#resources-list li');
|
||||||
|
items.forEach((item, index) => {
|
||||||
|
item.style.opacity = '0';
|
||||||
|
item.style.transform = 'translateY(20px)';
|
||||||
|
setTimeout(() => {
|
||||||
|
item.style.transition = 'opacity 0.5s ease, transform 0.5s ease';
|
||||||
|
item.style.opacity = '1';
|
||||||
|
item.style.transform = 'translateY(0)';
|
||||||
|
}, 100 * index);
|
||||||
|
});
|
||||||
|
|
||||||
|
// 检查URL参数,如果包含资源名称,自动打开对应模态框
|
||||||
|
checkUrlForAutoOpen();
|
||||||
|
});
|
||||||
|
|
||||||
|
// 检查URL参数,自动打开对应资源
|
||||||
|
function checkUrlForAutoOpen() {
|
||||||
|
const url = window.location.href;
|
||||||
|
const queryString = url.split('?')[1];
|
||||||
|
|
||||||
|
if (queryString) {
|
||||||
|
// 去除可能的#符号
|
||||||
|
const cleanParam = queryString.split('#')[0];
|
||||||
|
|
||||||
|
// 检查是否存在这个资源
|
||||||
|
if (softwareSources[cleanParam]) {
|
||||||
|
// 延迟一点打开,确保页面加载完成
|
||||||
|
setTimeout(() => {
|
||||||
|
openModal(cleanParam);
|
||||||
|
}, 500);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</script>
|
||||||
|
</body>
|
||||||
|
</html>
|
||||||
|
|
@ -0,0 +1,529 @@
|
||||||
|
<!DOCTYPE html>
|
||||||
|
<html lang="zh-CN">
|
||||||
|
<head>
|
||||||
|
<meta charset="UTF-8">
|
||||||
|
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||||
|
<meta http-equiv="X-UA-Compatible" content="ie=edge">
|
||||||
|
<title>虚舟实验室资源中心 (下载站)</title>
|
||||||
|
|
||||||
|
<!-- 核心SEO元标签优化 -->
|
||||||
|
<meta name="description" content="虚舟实验室官方资源中心,提供安全审核的工具、软件镜像和开发者资源下载。支持多源高速下载,助力编程学习与项目开发。">
|
||||||
|
<meta name="keywords" content="虚舟实验室,下载站,资源中心,开发者资源,编程学习资源,软件镜像站,Scratch打包器,安全资源平台,青少年编程,虚舟实验室">
|
||||||
|
<meta name="author" content="虚舟实验室(CealLab)">
|
||||||
|
<meta name="robots" content="index, follow">
|
||||||
|
|
||||||
|
<style>
|
||||||
|
/* 全局样式重置与基础设置 */
|
||||||
|
* {
|
||||||
|
margin: 0;
|
||||||
|
padding: 0;
|
||||||
|
box-sizing: border-box;
|
||||||
|
font-family: "Microsoft YaHei", "Segoe UI", sans-serif;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* 背景与主体样式 - 科技风渐变背景 */
|
||||||
|
body {
|
||||||
|
background: linear-gradient(135deg, #0f1923 0%, #1a2938 50%, #2d4059 100%);
|
||||||
|
color: #e6e6e6;
|
||||||
|
min-height: 100vh;
|
||||||
|
padding-bottom: 50px;
|
||||||
|
background-attachment: fixed;
|
||||||
|
position: relative;
|
||||||
|
overflow-x: hidden;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* 科技风背景装饰 */
|
||||||
|
body::before {
|
||||||
|
content: "";
|
||||||
|
position: fixed;
|
||||||
|
top: 0;
|
||||||
|
left: 0;
|
||||||
|
width: 100%;
|
||||||
|
height: 100%;
|
||||||
|
background:
|
||||||
|
radial-gradient(circle at 20% 30%, rgba(57, 162, 219, 0.1) 0%, transparent 40%),
|
||||||
|
radial-gradient(circle at 80% 70%, rgba(57, 162, 219, 0.08) 0%, transparent 40%);
|
||||||
|
z-index: -1;
|
||||||
|
pointer-events: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* 头部样式 */
|
||||||
|
header {
|
||||||
|
background: rgba(0, 0, 0, 0.5);
|
||||||
|
padding: 20px 0;
|
||||||
|
text-align: center;
|
||||||
|
border-bottom: 2px solid #39a2db;
|
||||||
|
box-shadow: 0 0 15px rgba(57, 162, 219, 0.3);
|
||||||
|
position: relative;
|
||||||
|
backdrop-filter: blur(5px);
|
||||||
|
}
|
||||||
|
|
||||||
|
header h1 {
|
||||||
|
color: #39a2db;
|
||||||
|
font-size: 2.2rem;
|
||||||
|
letter-spacing: 2px;
|
||||||
|
text-shadow: 0 0 10px rgba(57, 162, 219, 0.5);
|
||||||
|
font-weight: 700;
|
||||||
|
position: relative;
|
||||||
|
display: inline-block;
|
||||||
|
}
|
||||||
|
|
||||||
|
header h1::after {
|
||||||
|
content: "";
|
||||||
|
position: absolute;
|
||||||
|
bottom: -5px;
|
||||||
|
left: 50%;
|
||||||
|
transform: translateX(-50%);
|
||||||
|
width: 100px;
|
||||||
|
height: 2px;
|
||||||
|
background: #39a2db;
|
||||||
|
box-shadow: 0 0 10px rgba(57, 162, 219, 0.8);
|
||||||
|
}
|
||||||
|
|
||||||
|
/* 导航栏样式 */
|
||||||
|
nav {
|
||||||
|
background: rgba(0, 0, 0, 0.5);
|
||||||
|
padding: 12px 0;
|
||||||
|
margin: 20px auto;
|
||||||
|
max-width: 1200px;
|
||||||
|
border-radius: 8px;
|
||||||
|
display: flex;
|
||||||
|
flex-wrap: wrap;
|
||||||
|
justify-content: center;
|
||||||
|
gap: 15px;
|
||||||
|
box-shadow: 0 4px 10px rgba(0, 0, 0, 0.3);
|
||||||
|
backdrop-filter: blur(5px);
|
||||||
|
border: 1px solid rgba(57, 162, 219, 0.2);
|
||||||
|
}
|
||||||
|
|
||||||
|
nav a {
|
||||||
|
color: #e6e6e6;
|
||||||
|
text-decoration: none;
|
||||||
|
padding: 8px 18px;
|
||||||
|
border-radius: 4px;
|
||||||
|
transition: all 0.3s ease;
|
||||||
|
border: 1px solid transparent;
|
||||||
|
position: relative;
|
||||||
|
overflow: hidden;
|
||||||
|
}
|
||||||
|
|
||||||
|
nav a::before {
|
||||||
|
content: "";
|
||||||
|
position: absolute;
|
||||||
|
top: 0;
|
||||||
|
left: -100%;
|
||||||
|
width: 100%;
|
||||||
|
height: 100%;
|
||||||
|
background: linear-gradient(90deg, transparent, rgba(57, 162, 219, 0.3), transparent);
|
||||||
|
transition: 0.5s;
|
||||||
|
}
|
||||||
|
|
||||||
|
nav a:hover {
|
||||||
|
background: #39a2db;
|
||||||
|
color: #0f1923;
|
||||||
|
transform: translateY(-2px);
|
||||||
|
box-shadow: 0 4px 8px rgba(57, 162, 219, 0.4);
|
||||||
|
border: 1px solid rgba(255, 255, 255, 0.2);
|
||||||
|
}
|
||||||
|
|
||||||
|
nav a:hover::before {
|
||||||
|
left: 100%;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* 容器样式 */
|
||||||
|
.container {
|
||||||
|
max-width: 1200px;
|
||||||
|
margin: 0 auto;
|
||||||
|
padding: 0 20px;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* 欢迎区域样式 - 首页专用 */
|
||||||
|
.hero-section {
|
||||||
|
background: rgba(0, 0, 0, 0.3);
|
||||||
|
padding: 40px 30px;
|
||||||
|
border-radius: 10px;
|
||||||
|
margin-bottom: 30px;
|
||||||
|
border-left: 4px solid #39a2db;
|
||||||
|
backdrop-filter: blur(5px);
|
||||||
|
box-shadow: 0 4px 20px rgba(0, 0, 0, 0.2);
|
||||||
|
border: 1px solid rgba(57, 162, 219, 0.2);
|
||||||
|
position: relative;
|
||||||
|
overflow: hidden;
|
||||||
|
text-align: center;
|
||||||
|
}
|
||||||
|
|
||||||
|
.hero-section::before {
|
||||||
|
content: "";
|
||||||
|
position: absolute;
|
||||||
|
top: 0;
|
||||||
|
left: 0;
|
||||||
|
width: 100%;
|
||||||
|
height: 3px;
|
||||||
|
background: linear-gradient(90deg, #39a2db, transparent);
|
||||||
|
}
|
||||||
|
|
||||||
|
.hero-section h2 {
|
||||||
|
color: #39a2db;
|
||||||
|
margin-bottom: 20px;
|
||||||
|
font-size: 2rem;
|
||||||
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
|
justify-content: center;
|
||||||
|
gap: 10px;
|
||||||
|
position: relative;
|
||||||
|
}
|
||||||
|
|
||||||
|
.hero-section h2::before {
|
||||||
|
content: "⚡";
|
||||||
|
font-size: 1.8rem;
|
||||||
|
}
|
||||||
|
|
||||||
|
.hero-section p {
|
||||||
|
line-height: 1.8;
|
||||||
|
margin-bottom: 15px;
|
||||||
|
text-shadow: 0 1px 2px rgba(0,0,0,0.5);
|
||||||
|
font-size: 1.05rem;
|
||||||
|
color: #d0d0d0;
|
||||||
|
}
|
||||||
|
|
||||||
|
.hero-section .highlight {
|
||||||
|
color: #39a2db;
|
||||||
|
font-weight: bold;
|
||||||
|
text-shadow: 0 0 8px rgba(57, 162, 219, 0.5);
|
||||||
|
}
|
||||||
|
|
||||||
|
/* 内容区块样式 */
|
||||||
|
.content-section {
|
||||||
|
background: rgba(0, 0, 0, 0.25);
|
||||||
|
padding: 30px;
|
||||||
|
border-radius: 10px;
|
||||||
|
margin-bottom: 20px;
|
||||||
|
border: 1px solid rgba(57, 162, 219, 0.15);
|
||||||
|
backdrop-filter: blur(5px);
|
||||||
|
transition: all 0.3s ease;
|
||||||
|
}
|
||||||
|
|
||||||
|
.content-section:hover {
|
||||||
|
border-color: rgba(57, 162, 219, 0.3);
|
||||||
|
background: rgba(57, 162, 219, 0.05);
|
||||||
|
transform: translateY(-2px);
|
||||||
|
box-shadow: 0 6px 15px rgba(57, 162, 219, 0.2);
|
||||||
|
}
|
||||||
|
|
||||||
|
.content-section h3 {
|
||||||
|
color: #39a2db;
|
||||||
|
margin-bottom: 15px;
|
||||||
|
font-size: 1.5rem;
|
||||||
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
|
gap: 8px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.content-section h3::before {
|
||||||
|
content: "◆";
|
||||||
|
font-size: 1.2rem;
|
||||||
|
}
|
||||||
|
|
||||||
|
.content-section p {
|
||||||
|
line-height: 1.7;
|
||||||
|
color: #ccc;
|
||||||
|
margin-bottom: 10px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.content-section ul {
|
||||||
|
list-style: none;
|
||||||
|
padding-left: 10px;
|
||||||
|
margin-top: 10px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.content-section li {
|
||||||
|
padding: 8px 0;
|
||||||
|
color: #b0b0b0;
|
||||||
|
position: relative;
|
||||||
|
padding-left: 20px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.content-section li::before {
|
||||||
|
content: "▸";
|
||||||
|
position: absolute;
|
||||||
|
left: 0;
|
||||||
|
color: #39a2db;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* 功能卡片网格 */
|
||||||
|
.feature-grid {
|
||||||
|
display: grid;
|
||||||
|
grid-template-columns: repeat(auto-fit, minmax(280px, 1fr));
|
||||||
|
gap: 15px;
|
||||||
|
margin-top: 20px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.feature-card {
|
||||||
|
background: rgba(255, 255, 255, 0.05);
|
||||||
|
padding: 20px;
|
||||||
|
border-radius: 8px;
|
||||||
|
border: 1px solid rgba(57, 162, 219, 0.2);
|
||||||
|
transition: all 0.3s ease;
|
||||||
|
position: relative;
|
||||||
|
overflow: hidden;
|
||||||
|
}
|
||||||
|
|
||||||
|
.feature-card::before {
|
||||||
|
content: "";
|
||||||
|
position: absolute;
|
||||||
|
top: 0;
|
||||||
|
left: 0;
|
||||||
|
width: 3px;
|
||||||
|
height: 0;
|
||||||
|
background: #39a2db;
|
||||||
|
transition: height 0.3s ease;
|
||||||
|
}
|
||||||
|
|
||||||
|
.feature-card:hover {
|
||||||
|
transform: translateY(-3px);
|
||||||
|
box-shadow: 0 6px 15px rgba(57, 162, 219, 0.3);
|
||||||
|
border-color: #39a2db;
|
||||||
|
background: rgba(57, 162, 219, 0.08);
|
||||||
|
}
|
||||||
|
|
||||||
|
.feature-card:hover::before {
|
||||||
|
height: 100%;
|
||||||
|
}
|
||||||
|
|
||||||
|
.feature-card h4 {
|
||||||
|
color: #39a2db;
|
||||||
|
margin-bottom: 10px;
|
||||||
|
font-size: 1.1rem;
|
||||||
|
}
|
||||||
|
|
||||||
|
.feature-card p {
|
||||||
|
font-size: 0.9rem;
|
||||||
|
color: #999;
|
||||||
|
line-height: 1.5;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* 页脚样式 */
|
||||||
|
footer {
|
||||||
|
background: rgba(0, 0, 0, 0.6);
|
||||||
|
text-align: center;
|
||||||
|
padding: 15px 0;
|
||||||
|
margin-top: 40px;
|
||||||
|
color: #999;
|
||||||
|
font-size: 0.9rem;
|
||||||
|
position: relative;
|
||||||
|
bottom: 0;
|
||||||
|
width: 100%;
|
||||||
|
border-top: 1px solid rgba(57, 162, 219, 0.2);
|
||||||
|
backdrop-filter: blur(5px);
|
||||||
|
}
|
||||||
|
|
||||||
|
/* 响应式设计 */
|
||||||
|
@media (max-width: 768px) {
|
||||||
|
header h1 {
|
||||||
|
font-size: 1.8rem;
|
||||||
|
}
|
||||||
|
|
||||||
|
nav {
|
||||||
|
gap: 10px;
|
||||||
|
}
|
||||||
|
|
||||||
|
nav a {
|
||||||
|
padding: 6px 12px;
|
||||||
|
font-size: 0.9rem;
|
||||||
|
}
|
||||||
|
|
||||||
|
.hero-section {
|
||||||
|
padding: 30px 20px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.hero-section h2 {
|
||||||
|
font-size: 1.6rem;
|
||||||
|
}
|
||||||
|
|
||||||
|
.hero-section p {
|
||||||
|
font-size: 0.95rem;
|
||||||
|
}
|
||||||
|
|
||||||
|
.content-section {
|
||||||
|
padding: 20px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.content-section h3 {
|
||||||
|
font-size: 1.3rem;
|
||||||
|
}
|
||||||
|
|
||||||
|
.feature-grid {
|
||||||
|
grid-template-columns: 1fr;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@media (max-width: 480px) {
|
||||||
|
header h1 {
|
||||||
|
font-size: 1.5rem;
|
||||||
|
letter-spacing: 1px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.hero-section h2 {
|
||||||
|
font-size: 1.4rem;
|
||||||
|
}
|
||||||
|
|
||||||
|
.hero-section {
|
||||||
|
padding: 25px 15px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.content-section {
|
||||||
|
padding: 15px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.content-section h3 {
|
||||||
|
font-size: 1.2rem;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/* 动画效果 */
|
||||||
|
@keyframes pulse {
|
||||||
|
0% { box-shadow: 0 0 0 0 rgba(57, 162, 219, 0.4); }
|
||||||
|
70% { box-shadow: 0 0 0 10px rgba(57, 162, 219, 0); }
|
||||||
|
100% { box-shadow: 0 0 0 0 rgba(57, 162, 219, 0); }
|
||||||
|
}
|
||||||
|
|
||||||
|
.pulse {
|
||||||
|
animation: pulse 2s infinite;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* 内容区块入场动画 */
|
||||||
|
.content-section {
|
||||||
|
opacity: 0;
|
||||||
|
transform: translateY(20px);
|
||||||
|
transition: all 0.6s ease;
|
||||||
|
}
|
||||||
|
|
||||||
|
.content-section.visible {
|
||||||
|
opacity: 1;
|
||||||
|
transform: translateY(0);
|
||||||
|
}
|
||||||
|
|
||||||
|
/* 加载动画 */
|
||||||
|
.loading {
|
||||||
|
display: inline-block;
|
||||||
|
width: 15px;
|
||||||
|
height: 15px;
|
||||||
|
border: 2px solid rgba(57, 162, 219, 0.3);
|
||||||
|
border-top: 2px solid #39a2db;
|
||||||
|
border-radius: 50%;
|
||||||
|
animation: spin 1s linear infinite;
|
||||||
|
margin-left: 10px;
|
||||||
|
vertical-align: middle;
|
||||||
|
}
|
||||||
|
|
||||||
|
@keyframes spin {
|
||||||
|
0% { transform: rotate(0deg); }
|
||||||
|
100% { transform: rotate(360deg); }
|
||||||
|
}
|
||||||
|
</style>
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
<header>
|
||||||
|
<h1>虚舟实验室资源中心</h1>
|
||||||
|
</header>
|
||||||
|
<nav>
|
||||||
|
<a href="https://www.caellab.com/" class="pulse">返回主站</a>
|
||||||
|
<a href="/" class="pulse">主页</a>
|
||||||
|
<a href="/pack/" class="pulse">打包</a>
|
||||||
|
<a href="/games/" class="pulse">游戏</a>
|
||||||
|
</nav>
|
||||||
|
<div class="container">
|
||||||
|
<section class="hero-section">
|
||||||
|
<h2>欢迎来到虚舟实验室资源中心</h2>
|
||||||
|
<p>我们致力于为开发者、研究人员和学习者提供<span class="highlight">高质量</span>的工具与资源。</p>
|
||||||
|
<p>所有资源均经过严格审核,确保安全可靠。</p>
|
||||||
|
<p style="margin-top: 20px; color: #ff6b6b; font-weight: bold;">⚠️ 请仅用于学习与研究目的。</p>
|
||||||
|
</section>
|
||||||
|
|
||||||
|
<section class="content-section" id="about">
|
||||||
|
<h3>关于我们</h3>
|
||||||
|
<p>虚舟实验室是一个专注于技术研究与贡献的团队。我们收集、整理并审核各类实用工具,帮助用户快速找到所需的资源。</p>
|
||||||
|
<p>我们的使命是:让技术资源更透明、更易获取,同时尊重原作者的权益。</p>
|
||||||
|
</section>
|
||||||
|
|
||||||
|
<section class="content-section" id="features">
|
||||||
|
<h3>核心特点</h3>
|
||||||
|
<div class="feature-grid">
|
||||||
|
<div class="feature-card">
|
||||||
|
<h4>精选资源</h4>
|
||||||
|
<p>所有资源都经过人工审核,确保无毒、无害、无捆绑。</p>
|
||||||
|
</div>
|
||||||
|
<div class="feature-card">
|
||||||
|
<h4>多源下载</h4>
|
||||||
|
<p>提供多个下载源,包括自建节点和第三方镜像,确保下载稳定性。</p>
|
||||||
|
</div>
|
||||||
|
<div class="feature-card">
|
||||||
|
<h4>持续更新</h4>
|
||||||
|
<p>定期更新资源库,确保您获取到最新版本的工具。</p>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</section>
|
||||||
|
|
||||||
|
<section class="content-section" id="guidelines">
|
||||||
|
<h3>使用指南</h3>
|
||||||
|
<ul>
|
||||||
|
<li>浏览资源列表,找到您需要的软件</li>
|
||||||
|
<li>点击软件名称,查看可用的下载源</li>
|
||||||
|
<li>选择合适的下载源进行下载</li>
|
||||||
|
<li>如有问题,可通过主站联系我们</li>
|
||||||
|
</ul>
|
||||||
|
</section>
|
||||||
|
|
||||||
|
<section class="content-section" id="disclaimer">
|
||||||
|
<h3>免责声明</h3>
|
||||||
|
<p>本平台提供的所有资源均来自网络或原作者授权,仅供学习和研究使用。</p>
|
||||||
|
<p>严禁将这些资源用于任何商业用途或非法活动。</p>
|
||||||
|
<p style="color: #ff6b6b; margin-top: 10px;">使用本平台即表示您已阅读并同意上述条款。</p>
|
||||||
|
</section>
|
||||||
|
</div>
|
||||||
|
<footer>
|
||||||
|
<p>© 2025-2099 虚舟实验室(CaelLab). All rights reserved.</p>
|
||||||
|
</footer>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
// 页面滚动动画效果
|
||||||
|
const observerOptions = {
|
||||||
|
threshold: 0.1,
|
||||||
|
rootMargin: '0px 0px -50px 0px'
|
||||||
|
};
|
||||||
|
|
||||||
|
const observer = new IntersectionObserver((entries) => {
|
||||||
|
entries.forEach(entry => {
|
||||||
|
if (entry.isIntersecting) {
|
||||||
|
entry.target.classList.add('visible');
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}, observerOptions);
|
||||||
|
|
||||||
|
// 观察所有内容区块
|
||||||
|
document.addEventListener('DOMContentLoaded', () => {
|
||||||
|
const sections = document.querySelectorAll('.content-section');
|
||||||
|
sections.forEach(section => {
|
||||||
|
observer.observe(section);
|
||||||
|
});
|
||||||
|
|
||||||
|
// 导航链接平滑滚动
|
||||||
|
document.querySelectorAll('nav a[href^="#"]').forEach(link => {
|
||||||
|
link.addEventListener('click', function(e) {
|
||||||
|
e.preventDefault();
|
||||||
|
const targetId = this.getAttribute('href');
|
||||||
|
if (targetId === '#') return;
|
||||||
|
|
||||||
|
const targetElement = document.querySelector(targetId);
|
||||||
|
if (targetElement) {
|
||||||
|
targetElement.scrollIntoView({
|
||||||
|
behavior: 'smooth',
|
||||||
|
block: 'start'
|
||||||
|
});
|
||||||
|
}
|
||||||
|
});
|
||||||
|
});
|
||||||
|
});
|
||||||
|
</script>
|
||||||
|
</body>
|
||||||
|
</html>
|
||||||
|
|
@ -0,0 +1,836 @@
|
||||||
|
<!DOCTYPE html>
|
||||||
|
<html lang="zh-CN">
|
||||||
|
<head>
|
||||||
|
<meta charset="UTF-8">
|
||||||
|
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||||
|
<meta http-equiv="X-UA-Compatible" content="ie=edge">
|
||||||
|
<title>打包资源 - 虚舟实验室资源中心</title>
|
||||||
|
<link rel="canonical" href="https://dl.caellab.com/pack/">
|
||||||
|
<!-- 添加SEO描述和关键词 -->
|
||||||
|
<meta name="description" content="虚舟实验室资源中心提供精心封装的无广告资源,安全可靠,专为技术爱好者打造。">
|
||||||
|
<meta name="keywords" content="虚舟实验室,资源中心,下载站,打包资源,xiaomimimo,XiaomiMiMo打包版">
|
||||||
|
|
||||||
|
<style>
|
||||||
|
/* 全局样式重置与基础设置 */
|
||||||
|
* {
|
||||||
|
margin: 0;
|
||||||
|
padding: 0;
|
||||||
|
box-sizing: border-box;
|
||||||
|
font-family: "Microsoft YaHei", "Segoe UI", sans-serif;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* 背景与主体样式 - 科技风渐变背景 */
|
||||||
|
body {
|
||||||
|
background: linear-gradient(135deg, #0f1923 0%, #1a2938 50%, #2d4059 100%);
|
||||||
|
color: #e6e6e6;
|
||||||
|
min-height: 100vh;
|
||||||
|
padding-bottom: 50px;
|
||||||
|
background-attachment: fixed;
|
||||||
|
position: relative;
|
||||||
|
overflow-x: hidden;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* 科技风背景装饰 */
|
||||||
|
body::before {
|
||||||
|
content: "";
|
||||||
|
position: fixed;
|
||||||
|
top: 0;
|
||||||
|
left: 0;
|
||||||
|
width: 100%;
|
||||||
|
height: 100%;
|
||||||
|
background:
|
||||||
|
radial-gradient(circle at 20% 30%, rgba(57, 162, 219, 0.1) 0%, transparent 40%),
|
||||||
|
radial-gradient(circle at 80% 70%, rgba(57, 162, 219, 0.08) 0%, transparent 40%);
|
||||||
|
z-index: -1;
|
||||||
|
pointer-events: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* 头部样式 */
|
||||||
|
header {
|
||||||
|
background: rgba(0, 0, 0, 0.5);
|
||||||
|
padding: 20px 0;
|
||||||
|
text-align: center;
|
||||||
|
border-bottom: 2px solid #39a2db;
|
||||||
|
box-shadow: 0 0 15px rgba(57, 162, 219, 0.3);
|
||||||
|
position: relative;
|
||||||
|
backdrop-filter: blur(5px);
|
||||||
|
}
|
||||||
|
|
||||||
|
header h1 {
|
||||||
|
color: #39a2db;
|
||||||
|
font-size: 2.2rem;
|
||||||
|
letter-spacing: 2px;
|
||||||
|
text-shadow: 0 0 10px rgba(57, 162, 219, 0.5);
|
||||||
|
font-weight: 700;
|
||||||
|
position: relative;
|
||||||
|
display: inline-block;
|
||||||
|
}
|
||||||
|
|
||||||
|
header h1::after {
|
||||||
|
content: "";
|
||||||
|
position: absolute;
|
||||||
|
bottom: -5px;
|
||||||
|
left: 50%;
|
||||||
|
transform: translateX(-50%);
|
||||||
|
width: 100px;
|
||||||
|
height: 2px;
|
||||||
|
background: #39a2db;
|
||||||
|
box-shadow: 0 0 10px rgba(57, 162, 219, 0.8);
|
||||||
|
}
|
||||||
|
|
||||||
|
/* 导航栏样式 */
|
||||||
|
nav {
|
||||||
|
background: rgba(0, 0, 0, 0.5);
|
||||||
|
padding: 12px 0;
|
||||||
|
margin: 20px auto;
|
||||||
|
max-width: 1200px;
|
||||||
|
border-radius: 8px;
|
||||||
|
display: flex;
|
||||||
|
flex-wrap: wrap;
|
||||||
|
justify-content: center;
|
||||||
|
gap: 15px;
|
||||||
|
box-shadow: 0 4px 10px rgba(0, 0, 0, 0.3);
|
||||||
|
backdrop-filter: blur(5px);
|
||||||
|
border: 1px solid rgba(57, 162, 219, 0.2);
|
||||||
|
}
|
||||||
|
|
||||||
|
nav a {
|
||||||
|
color: #e6e6e6;
|
||||||
|
text-decoration: none;
|
||||||
|
padding: 8px 18px;
|
||||||
|
border-radius: 4px;
|
||||||
|
transition: all 0.3s ease;
|
||||||
|
border: 1px solid transparent;
|
||||||
|
position: relative;
|
||||||
|
overflow: hidden;
|
||||||
|
}
|
||||||
|
|
||||||
|
nav a::before {
|
||||||
|
content: "";
|
||||||
|
position: absolute;
|
||||||
|
top: 0;
|
||||||
|
left: -100%;
|
||||||
|
width: 100%;
|
||||||
|
height: 100%;
|
||||||
|
background: linear-gradient(90deg, transparent, rgba(57, 162, 219, 0.3), transparent);
|
||||||
|
transition: 0.5s;
|
||||||
|
}
|
||||||
|
|
||||||
|
nav a:hover {
|
||||||
|
background: #39a2db;
|
||||||
|
color: #0f1923;
|
||||||
|
transform: translateY(-2px);
|
||||||
|
box-shadow: 0 4px 8px rgba(57, 162, 219, 0.4);
|
||||||
|
border: 1px solid rgba(255, 255, 255, 0.2);
|
||||||
|
}
|
||||||
|
|
||||||
|
nav a:hover::before {
|
||||||
|
left: 100%;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* 容器样式 */
|
||||||
|
.container {
|
||||||
|
max-width: 1200px;
|
||||||
|
margin: 0 auto;
|
||||||
|
padding: 0 20px;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* 欢迎区域样式 */
|
||||||
|
.welcome {
|
||||||
|
background: rgba(0, 0, 0, 0.3);
|
||||||
|
padding: 30px;
|
||||||
|
border-radius: 10px;
|
||||||
|
margin-bottom: 30px;
|
||||||
|
border-left: 4px solid #39a2db;
|
||||||
|
backdrop-filter: blur(5px);
|
||||||
|
box-shadow: 0 4px 20px rgba(0, 0, 0, 0.2);
|
||||||
|
border: 1px solid rgba(57, 162, 219, 0.2);
|
||||||
|
position: relative;
|
||||||
|
overflow: hidden;
|
||||||
|
}
|
||||||
|
|
||||||
|
.welcome::before {
|
||||||
|
content: "";
|
||||||
|
position: absolute;
|
||||||
|
top: 0;
|
||||||
|
left: 0;
|
||||||
|
width: 100%;
|
||||||
|
height: 3px;
|
||||||
|
background: linear-gradient(90deg, #39a2db, transparent);
|
||||||
|
}
|
||||||
|
|
||||||
|
.welcome h2 {
|
||||||
|
color: #39a2db;
|
||||||
|
margin-bottom: 15px;
|
||||||
|
font-size: 1.8rem;
|
||||||
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
|
gap: 10px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.welcome h2::before {
|
||||||
|
content: "⚡";
|
||||||
|
font-size: 1.5rem;
|
||||||
|
}
|
||||||
|
|
||||||
|
.welcome p {
|
||||||
|
line-height: 1.6;
|
||||||
|
margin-bottom: 10px;
|
||||||
|
text-shadow: 0 1px 2px rgba(0,0,0,0.5);
|
||||||
|
}
|
||||||
|
|
||||||
|
.welcome p:last-child {
|
||||||
|
color: #ff6b6b;
|
||||||
|
font-weight: bold;
|
||||||
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
|
gap: 8px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.welcome p:last-child::before {
|
||||||
|
content: "⚠️";
|
||||||
|
}
|
||||||
|
|
||||||
|
/* 资源列表区域样式 */
|
||||||
|
#resources-list {
|
||||||
|
background: rgba(0, 0, 0, 0.3);
|
||||||
|
padding: 30px;
|
||||||
|
border-radius: 10px;
|
||||||
|
box-shadow: 0 4px 20px rgba(0, 0, 0, 0.2);
|
||||||
|
backdrop-filter: blur(5px);
|
||||||
|
border: 1px solid rgba(57, 162, 219, 0.2);
|
||||||
|
}
|
||||||
|
|
||||||
|
#resources-list h2 {
|
||||||
|
color: #39a2db;
|
||||||
|
margin-bottom: 20px;
|
||||||
|
font-size: 1.8rem;
|
||||||
|
text-align: center;
|
||||||
|
position: relative;
|
||||||
|
padding-bottom: 10px;
|
||||||
|
}
|
||||||
|
|
||||||
|
#resources-list h2::after {
|
||||||
|
content: "";
|
||||||
|
position: absolute;
|
||||||
|
bottom: 0;
|
||||||
|
left: 50%;
|
||||||
|
transform: translateX(-50%);
|
||||||
|
width: 120px;
|
||||||
|
height: 2px;
|
||||||
|
background: #39a2db;
|
||||||
|
box-shadow: 0 0 8px rgba(57, 162, 219, 0.6);
|
||||||
|
}
|
||||||
|
|
||||||
|
#resources-list ul {
|
||||||
|
list-style: none;
|
||||||
|
display: grid;
|
||||||
|
grid-template-columns: repeat(auto-fill, minmax(300px, 1fr));
|
||||||
|
gap: 15px;
|
||||||
|
}
|
||||||
|
|
||||||
|
#resources-list li {
|
||||||
|
background: rgba(255, 255, 255, 0.05);
|
||||||
|
padding: 20px;
|
||||||
|
border-radius: 8px;
|
||||||
|
transition: all 0.3s ease;
|
||||||
|
border: 1px solid rgba(57, 162, 219, 0.2);
|
||||||
|
position: relative;
|
||||||
|
overflow: hidden;
|
||||||
|
cursor: pointer; /* 整个卡片可点击 */
|
||||||
|
}
|
||||||
|
|
||||||
|
#resources-list li::before {
|
||||||
|
content: "";
|
||||||
|
position: absolute;
|
||||||
|
top: 0;
|
||||||
|
left: 0;
|
||||||
|
width: 3px;
|
||||||
|
height: 0;
|
||||||
|
background: #39a2db;
|
||||||
|
transition: height 0.3s ease;
|
||||||
|
}
|
||||||
|
|
||||||
|
#resources-list li:hover {
|
||||||
|
transform: translateY(-3px);
|
||||||
|
box-shadow: 0 6px 15px rgba(57, 162, 219, 0.3);
|
||||||
|
border-color: #39a2db;
|
||||||
|
background: rgba(57, 162, 219, 0.08);
|
||||||
|
}
|
||||||
|
|
||||||
|
#resources-list li:hover::before {
|
||||||
|
height: 100%;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* 软件链接样式 */
|
||||||
|
.software-link {
|
||||||
|
color: #e6e6e6;
|
||||||
|
text-decoration: none;
|
||||||
|
display: block;
|
||||||
|
padding: 8px 0;
|
||||||
|
cursor: pointer;
|
||||||
|
transition: color 0.3s ease;
|
||||||
|
font-weight: 600;
|
||||||
|
font-size: 1.1rem;
|
||||||
|
position: relative;
|
||||||
|
padding-left: 20px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.software-link::before {
|
||||||
|
content: "▸";
|
||||||
|
position: absolute;
|
||||||
|
left: 0;
|
||||||
|
color: #39a2db;
|
||||||
|
transition: transform 0.3s ease;
|
||||||
|
}
|
||||||
|
|
||||||
|
.software-link:hover {
|
||||||
|
color: #39a2db;
|
||||||
|
padding-left: 25px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.software-link:hover::before {
|
||||||
|
transform: translateX(5px);
|
||||||
|
}
|
||||||
|
|
||||||
|
/* 软件简介样式 */
|
||||||
|
.software-desc {
|
||||||
|
font-size: 0.9rem;
|
||||||
|
color: #999;
|
||||||
|
margin-top: 10px;
|
||||||
|
padding-left: 20px;
|
||||||
|
line-height: 1.5;
|
||||||
|
border-left: 2px solid rgba(57, 162, 219, 0.3);
|
||||||
|
}
|
||||||
|
|
||||||
|
/* 弹窗遮罩层 */
|
||||||
|
.modal-overlay {
|
||||||
|
position: fixed;
|
||||||
|
top: 0;
|
||||||
|
left: 0;
|
||||||
|
width: 100%;
|
||||||
|
height: 100%;
|
||||||
|
background: rgba(0, 0, 0, 0.8);
|
||||||
|
display: none;
|
||||||
|
justify-content: center;
|
||||||
|
align-items: center;
|
||||||
|
z-index: 9999;
|
||||||
|
backdrop-filter: blur(5px);
|
||||||
|
padding: 10px;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* 弹窗容器 */
|
||||||
|
.modal-container {
|
||||||
|
background: #1a2938;
|
||||||
|
width: 100%;
|
||||||
|
max-width: 500px;
|
||||||
|
border-radius: 10px;
|
||||||
|
padding: 20px;
|
||||||
|
border: 2px solid #39a2db;
|
||||||
|
box-shadow: 0 0 25px rgba(57, 162, 219, 0.6);
|
||||||
|
position: relative;
|
||||||
|
transform: scale(0.95);
|
||||||
|
transition: transform 0.3s ease;
|
||||||
|
max-height: 90vh;
|
||||||
|
overflow-y: auto;
|
||||||
|
-webkit-overflow-scrolling: touch;
|
||||||
|
}
|
||||||
|
|
||||||
|
.modal-overlay.active .modal-container {
|
||||||
|
transform: scale(1);
|
||||||
|
}
|
||||||
|
|
||||||
|
/* 弹窗标题 */
|
||||||
|
.modal-title {
|
||||||
|
color: #39a2db;
|
||||||
|
font-size: 1.5rem;
|
||||||
|
margin-bottom: 15px;
|
||||||
|
text-align: center;
|
||||||
|
position: relative;
|
||||||
|
padding-bottom: 10px;
|
||||||
|
word-break: break-word;
|
||||||
|
}
|
||||||
|
|
||||||
|
.modal-title::after {
|
||||||
|
content: "";
|
||||||
|
position: absolute;
|
||||||
|
bottom: 0;
|
||||||
|
left: 50%;
|
||||||
|
transform: translateX(-50%);
|
||||||
|
width: 80px;
|
||||||
|
height: 2px;
|
||||||
|
background: #39a2db;
|
||||||
|
box-shadow: 0 0 8px rgba(57, 162, 219, 0.6);
|
||||||
|
}
|
||||||
|
|
||||||
|
/* 资源列表样式 */
|
||||||
|
.source-list {
|
||||||
|
list-style: none;
|
||||||
|
margin-top: 15px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.source-list li {
|
||||||
|
margin: 12px 0;
|
||||||
|
padding: 0;
|
||||||
|
background: rgba(255, 255, 255, 0.05);
|
||||||
|
border-radius: 5px;
|
||||||
|
transition: all 0.3s ease;
|
||||||
|
border: 1px solid rgba(57, 162, 219, 0.1);
|
||||||
|
overflow: hidden;
|
||||||
|
}
|
||||||
|
|
||||||
|
.source-list li:hover {
|
||||||
|
background: rgba(57, 162, 219, 0.15);
|
||||||
|
transform: translateX(5px);
|
||||||
|
border-color: rgba(57, 162, 219, 0.4);
|
||||||
|
}
|
||||||
|
|
||||||
|
.source-list a {
|
||||||
|
color: #e6e6e6;
|
||||||
|
text-decoration: none;
|
||||||
|
display: flex;
|
||||||
|
justify-content: space-between;
|
||||||
|
align-items: center;
|
||||||
|
padding: 12px 15px;
|
||||||
|
width: 100%;
|
||||||
|
transition: all 0.2s ease;
|
||||||
|
white-space: nowrap;
|
||||||
|
overflow: hidden;
|
||||||
|
text-overflow: ellipsis;
|
||||||
|
min-height: 44px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.source-list a:hover {
|
||||||
|
color: #39a2db;
|
||||||
|
background: rgba(57, 162, 219, 0.1);
|
||||||
|
}
|
||||||
|
|
||||||
|
.source-name {
|
||||||
|
font-weight: 600;
|
||||||
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
|
gap: 8px;
|
||||||
|
flex: 1;
|
||||||
|
overflow: hidden;
|
||||||
|
text-overflow: ellipsis;
|
||||||
|
}
|
||||||
|
|
||||||
|
.source-name::before {
|
||||||
|
content: "";
|
||||||
|
font-size: 0.8rem;
|
||||||
|
}
|
||||||
|
|
||||||
|
.source-tip {
|
||||||
|
font-size: 0.75rem;
|
||||||
|
color: #ff6b6b;
|
||||||
|
background: rgba(255, 107, 107, 0.1);
|
||||||
|
padding: 3px 8px;
|
||||||
|
border-radius: 10px;
|
||||||
|
border: 1px solid rgba(255, 107, 107, 0.3);
|
||||||
|
white-space: nowrap;
|
||||||
|
flex-shrink: 0;
|
||||||
|
margin-left: 8px;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* 关闭按钮 */
|
||||||
|
.close-btn {
|
||||||
|
display: block;
|
||||||
|
width: 100%;
|
||||||
|
padding: 12px;
|
||||||
|
background: #39a2db;
|
||||||
|
color: #0f1923;
|
||||||
|
border: none;
|
||||||
|
border-radius: 5px;
|
||||||
|
margin-top: 20px;
|
||||||
|
cursor: pointer;
|
||||||
|
font-weight: bold;
|
||||||
|
transition: all 0.3s ease;
|
||||||
|
font-size: 1rem;
|
||||||
|
letter-spacing: 1px;
|
||||||
|
position: relative;
|
||||||
|
overflow: hidden;
|
||||||
|
min-height: 44px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.close-btn::before {
|
||||||
|
content: "";
|
||||||
|
position: absolute;
|
||||||
|
top: 0;
|
||||||
|
left: -100%;
|
||||||
|
width: 100%;
|
||||||
|
height: 100%;
|
||||||
|
background: linear-gradient(90deg, transparent, rgba(255, 255, 255, 0.3), transparent);
|
||||||
|
transition: 0.5s;
|
||||||
|
}
|
||||||
|
|
||||||
|
.close-btn:hover {
|
||||||
|
background: #287ca8;
|
||||||
|
transform: translateY(-2px);
|
||||||
|
box-shadow: 0 4px 10px rgba(57, 162, 219, 0.4);
|
||||||
|
}
|
||||||
|
|
||||||
|
.close-btn:hover::before {
|
||||||
|
left: 100%;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* 页脚样式 */
|
||||||
|
footer {
|
||||||
|
background: rgba(0, 0, 0, 0.6);
|
||||||
|
text-align: center;
|
||||||
|
padding: 15px 0;
|
||||||
|
margin-top: 40px;
|
||||||
|
color: #999;
|
||||||
|
font-size: 0.9rem;
|
||||||
|
position: relative;
|
||||||
|
bottom: 0;
|
||||||
|
width: 100%;
|
||||||
|
border-top: 1px solid rgba(57, 162, 219, 0.2);
|
||||||
|
backdrop-filter: blur(5px);
|
||||||
|
}
|
||||||
|
|
||||||
|
/* 无可用源提示 */
|
||||||
|
.no-source {
|
||||||
|
text-align: center;
|
||||||
|
padding: 20px;
|
||||||
|
color: #ff6b6b;
|
||||||
|
font-weight: bold;
|
||||||
|
background: rgba(255, 107, 107, 0.1);
|
||||||
|
border-radius: 8px;
|
||||||
|
border: 1px dashed rgba(255, 107, 107, 0.4);
|
||||||
|
}
|
||||||
|
|
||||||
|
/* 响应式设计 - 移动端优化 */
|
||||||
|
@media (max-width: 768px) {
|
||||||
|
header h1 {
|
||||||
|
font-size: 1.8rem;
|
||||||
|
}
|
||||||
|
|
||||||
|
nav {
|
||||||
|
gap: 10px;
|
||||||
|
}
|
||||||
|
|
||||||
|
nav a {
|
||||||
|
padding: 6px 12px;
|
||||||
|
font-size: 0.9rem;
|
||||||
|
}
|
||||||
|
|
||||||
|
.welcome {
|
||||||
|
padding: 20px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.welcome h2 {
|
||||||
|
font-size: 1.5rem;
|
||||||
|
}
|
||||||
|
|
||||||
|
#resources-list {
|
||||||
|
padding: 20px;
|
||||||
|
}
|
||||||
|
|
||||||
|
#resources-list ul {
|
||||||
|
grid-template-columns: 1fr;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* 移动端弹窗优化 */
|
||||||
|
.modal-overlay {
|
||||||
|
padding: 5px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.modal-container {
|
||||||
|
padding: 15px;
|
||||||
|
max-height: 92vh;
|
||||||
|
width: 95%;
|
||||||
|
}
|
||||||
|
|
||||||
|
.modal-title {
|
||||||
|
font-size: 1.3rem;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* 移动端源列表 - 垂直堆叠,允许换行 */
|
||||||
|
.source-list a {
|
||||||
|
flex-direction: column;
|
||||||
|
align-items: flex-start;
|
||||||
|
gap: 5px;
|
||||||
|
white-space: normal;
|
||||||
|
padding: 15px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.source-name {
|
||||||
|
width: 100%;
|
||||||
|
overflow: visible;
|
||||||
|
text-overflow: clip;
|
||||||
|
}
|
||||||
|
|
||||||
|
.source-tip {
|
||||||
|
align-self: flex-start;
|
||||||
|
margin-left: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* 按钮移动端优化 */
|
||||||
|
.close-btn {
|
||||||
|
padding: 14px;
|
||||||
|
font-size: 1rem;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@media (max-width: 480px) {
|
||||||
|
header h1 {
|
||||||
|
font-size: 1.5rem;
|
||||||
|
letter-spacing: 1px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.welcome h2 {
|
||||||
|
font-size: 1.3rem;
|
||||||
|
}
|
||||||
|
|
||||||
|
.welcome p {
|
||||||
|
font-size: 0.9rem;
|
||||||
|
}
|
||||||
|
|
||||||
|
.modal-title {
|
||||||
|
font-size: 1.2rem;
|
||||||
|
}
|
||||||
|
|
||||||
|
.source-list a {
|
||||||
|
padding: 12px;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/* 动画效果 */
|
||||||
|
@keyframes pulse {
|
||||||
|
0% { box-shadow: 0 0 0 0 rgba(57, 162, 219, 0.4); }
|
||||||
|
70% { box-shadow: 0 0 0 10px rgba(57, 162, 219, 0); }
|
||||||
|
100% { box-shadow: 0 0 0 0 rgba(57, 162, 219, 0); }
|
||||||
|
}
|
||||||
|
|
||||||
|
.pulse {
|
||||||
|
animation: pulse 2s infinite;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* 软件项悬停动画 */
|
||||||
|
#resources-list li:hover {
|
||||||
|
animation: hoverPulse 0.5s;
|
||||||
|
}
|
||||||
|
|
||||||
|
@keyframes hoverPulse {
|
||||||
|
0% { transform: translateY(0); }
|
||||||
|
50% { transform: translateY(-5px); }
|
||||||
|
100% { transform: translateY(-3px); }
|
||||||
|
}
|
||||||
|
|
||||||
|
/* 加载动画 */
|
||||||
|
.loading {
|
||||||
|
display: inline-block;
|
||||||
|
width: 15px;
|
||||||
|
height: 15px;
|
||||||
|
border: 2px solid rgba(57, 162, 219, 0.3);
|
||||||
|
border-top: 2px solid #39a2db;
|
||||||
|
border-radius: 50%;
|
||||||
|
animation: spin 1s linear infinite;
|
||||||
|
margin-left: 10px;
|
||||||
|
vertical-align: middle;
|
||||||
|
}
|
||||||
|
|
||||||
|
@keyframes spin {
|
||||||
|
0% { transform: rotate(0deg); }
|
||||||
|
100% { transform: rotate(360deg); }
|
||||||
|
}
|
||||||
|
|
||||||
|
/* 防止 iOS 滚动穿透 */
|
||||||
|
body.modal-open {
|
||||||
|
overflow: hidden;
|
||||||
|
position: fixed;
|
||||||
|
width: 100%;
|
||||||
|
height: 100%;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* 卡片内容点击区域 */
|
||||||
|
.card-content {
|
||||||
|
width: 100%;
|
||||||
|
height: 100%;
|
||||||
|
}
|
||||||
|
</style>
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
<header>
|
||||||
|
<h1>虚舟实验室资源中心</h1>
|
||||||
|
</header>
|
||||||
|
<nav>
|
||||||
|
<a href="/" class="pulse">主页</a>
|
||||||
|
|
||||||
|
</nav>
|
||||||
|
<div class="container">
|
||||||
|
<section id="online-resources" class="welcome">
|
||||||
|
<h2>打包资源</h2>
|
||||||
|
<p>这里提供各种由虚舟实验室精心封装打包的资源。</p>
|
||||||
|
<p style="color: #ff6b6b;">请注意,这些文件仅供学习和研究使用,经过著作人同意后才可修改,严禁商用。</p>
|
||||||
|
</section>
|
||||||
|
<section id="resources-list">
|
||||||
|
<h2>资源列表</h2>
|
||||||
|
<ul>
|
||||||
|
<li onclick="openModal('xiaomimimo')">
|
||||||
|
<div class="card-content">
|
||||||
|
<div class="software-link">XiaomiMiMo 打包版</div>
|
||||||
|
<div class="software-desc">XiaomiMimo由小米开发,虚舟实验室精心封装打包,全程无广告干扰,网络安全守护保障对话安全,为移动设备带来流畅稳定的使用体验</div>
|
||||||
|
</div>
|
||||||
|
</li>
|
||||||
|
<!-- 可以继续添加更多资源卡片 -->
|
||||||
|
</ul>
|
||||||
|
</section>
|
||||||
|
</div>
|
||||||
|
<footer>
|
||||||
|
<p>© 2025-2099 虚舟实验室(CaelLab). All rights reserved.</p>
|
||||||
|
</footer>
|
||||||
|
|
||||||
|
<!-- 资源选择弹窗 -->
|
||||||
|
<div class="modal-overlay" id="modal">
|
||||||
|
<div class="modal-container">
|
||||||
|
<h3 class="modal-title" id="modalTitle">选择下载源</h3>
|
||||||
|
<ul class="source-list" id="sourceList">
|
||||||
|
<!-- 内容由JS动态填充 -->
|
||||||
|
</ul>
|
||||||
|
<button class="close-btn" onclick="closeModal()">关闭</button>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
// 定义 软件名称 -> 各源链接 的映射表
|
||||||
|
const softwareSources = {
|
||||||
|
"xiaomimimo": {
|
||||||
|
"源服务器":"https://dl.caellab.com/pack/XiaomiMiMo.apk",
|
||||||
|
"虚舟实验室NAS": "http://ug.link/yunyun3782/filemgr/share-download/?id=4939ade8faae417190442ac12176516c",
|
||||||
|
"GitHub": "https://raw.githubusercontent.com/yunyun-3782/CaelLab-dlgitee/refs/heads/main/pack/XiaomiMiMo.apk",
|
||||||
|
"Gitee": "https://gitee.com/yunyun-3782/cael-lab-dlgitee/raw/master/pack/XiaomiMiMo.apk",
|
||||||
|
"123云盘": "https://www.123865.com/s/T4nijv-5BjAH",
|
||||||
|
"蓝奏云": "0",
|
||||||
|
"百度网盘":"https://pan.baidu.com/s/1X_TrJg3tbTHbQ8lg17__JQ?pwd=0705"
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
// 源对应的提示文本
|
||||||
|
const sourceTips = {
|
||||||
|
"源服务器":"₍₍Ϡ(੭•̀ω•́)੭✧不需要跳转页面直接下载",
|
||||||
|
"虚舟实验室NAS": "P2P节点",
|
||||||
|
"GitHub": "国内可能不稳定,备用",
|
||||||
|
"Gitee": "国内镜像稳定",
|
||||||
|
"123云盘": "小流量超高速稳定",
|
||||||
|
"蓝奏云": "纯净多线路自选",
|
||||||
|
"百度网盘":"稳定多年不掉线,提取码0705"
|
||||||
|
};
|
||||||
|
|
||||||
|
// 打开弹窗函数
|
||||||
|
function openModal(softwareName) {
|
||||||
|
const modalTitle = document.getElementById('modalTitle');
|
||||||
|
const sourceList = document.getElementById('sourceList');
|
||||||
|
const modalOverlay = document.getElementById('modal');
|
||||||
|
|
||||||
|
modalTitle.innerText = `${softwareName}`;
|
||||||
|
|
||||||
|
// 清空原有列表
|
||||||
|
sourceList.innerHTML = '';
|
||||||
|
|
||||||
|
// 获取当前软件的所有源链接
|
||||||
|
const sources = softwareSources[softwareName];
|
||||||
|
let hasAvailableSource = false;
|
||||||
|
|
||||||
|
// 添加加载动画
|
||||||
|
const loadingDiv = document.createElement('div');
|
||||||
|
loadingDiv.style.textAlign = 'center';
|
||||||
|
loadingDiv.style.padding = '15px';
|
||||||
|
loadingDiv.innerHTML = '正在获取下载源<span class="loading"></span>';
|
||||||
|
sourceList.appendChild(loadingDiv);
|
||||||
|
|
||||||
|
// 模拟加载延迟 - 已加快到300ms
|
||||||
|
setTimeout(() => {
|
||||||
|
sourceList.innerHTML = '';
|
||||||
|
|
||||||
|
for (const [sourceName, url] of Object.entries(sources)) {
|
||||||
|
// 过滤掉链接为0的源
|
||||||
|
if (url === "0") continue;
|
||||||
|
|
||||||
|
hasAvailableSource = true;
|
||||||
|
const li = document.createElement('li');
|
||||||
|
// 只有当提示文本不为空时才显示
|
||||||
|
const tipText = sourceTips[sourceName] ? `<span class="source-tip">${sourceTips[sourceName]}</span>` : '';
|
||||||
|
// 关键修改:为弹窗中的外链添加rel="nofollow"
|
||||||
|
li.innerHTML = `<a href="${url}" target="_blank" rel="nofollow"><span class="source-name">${sourceName}</span> ${tipText}</a>`;
|
||||||
|
sourceList.appendChild(li);
|
||||||
|
}
|
||||||
|
|
||||||
|
// 如果没有可用源,显示提示
|
||||||
|
if (!hasAvailableSource) {
|
||||||
|
const li = document.createElement('div');
|
||||||
|
li.className = 'no-source';
|
||||||
|
li.innerHTML = '暂无可用下载源<br>请稍后再试';
|
||||||
|
sourceList.appendChild(li);
|
||||||
|
}
|
||||||
|
}, 300); // 加载速度加快到300ms
|
||||||
|
|
||||||
|
modalOverlay.style.display = 'flex';
|
||||||
|
document.body.classList.add('modal-open');
|
||||||
|
setTimeout(() => {
|
||||||
|
modalOverlay.classList.add('active');
|
||||||
|
}, 10);
|
||||||
|
}
|
||||||
|
|
||||||
|
// 关闭弹窗函数
|
||||||
|
function closeModal() {
|
||||||
|
const modalOverlay = document.getElementById('modal');
|
||||||
|
modalOverlay.classList.remove('active');
|
||||||
|
document.body.classList.remove('modal-open');
|
||||||
|
setTimeout(() => {
|
||||||
|
modalOverlay.style.display = 'none';
|
||||||
|
}, 300);
|
||||||
|
}
|
||||||
|
|
||||||
|
// 点击遮罩层关闭弹窗
|
||||||
|
document.getElementById('modal').addEventListener('click', function(e) {
|
||||||
|
if (e.target === this) {
|
||||||
|
closeModal();
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
// 按ESC键关闭弹窗
|
||||||
|
document.addEventListener('keydown', function(e) {
|
||||||
|
if (e.key === 'Escape') {
|
||||||
|
closeModal();
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
// 页面加载动画效果
|
||||||
|
window.addEventListener('DOMContentLoaded', () => {
|
||||||
|
const items = document.querySelectorAll('#resources-list li');
|
||||||
|
items.forEach((item, index) => {
|
||||||
|
item.style.opacity = '0';
|
||||||
|
item.style.transform = 'translateY(20px)';
|
||||||
|
setTimeout(() => {
|
||||||
|
item.style.transition = 'opacity 0.5s ease, transform 0.5s ease';
|
||||||
|
item.style.opacity = '1';
|
||||||
|
item.style.transform = 'translateY(0)';
|
||||||
|
}, 100 * index);
|
||||||
|
});
|
||||||
|
|
||||||
|
// 检查URL参数,如果包含资源名称,自动打开对应模态框
|
||||||
|
checkUrlForAutoOpen();
|
||||||
|
});
|
||||||
|
|
||||||
|
// 检查URL参数,自动打开对应资源
|
||||||
|
function checkUrlForAutoOpen() {
|
||||||
|
const url = window.location.href;
|
||||||
|
const queryString = url.split('?')[1];
|
||||||
|
|
||||||
|
if (queryString) {
|
||||||
|
// 去除可能的#符号
|
||||||
|
const cleanParam = queryString.split('#')[0];
|
||||||
|
|
||||||
|
// 检查是否存在这个资源
|
||||||
|
if (softwareSources[cleanParam]) {
|
||||||
|
// 延迟一点打开,确保页面加载完成
|
||||||
|
setTimeout(() => {
|
||||||
|
openModal(cleanParam);
|
||||||
|
}, 500);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</script>
|
||||||
|
</body>
|
||||||
|
</html>
|
||||||
|
|
@ -0,0 +1,3 @@
|
||||||
|
User-agent: *
|
||||||
|
Allow: /
|
||||||
|
Disallow: /user-js/
|
||||||
|
|
@ -0,0 +1,826 @@
|
||||||
|
<!DOCTYPE html>
|
||||||
|
<html lang="zh-CN">
|
||||||
|
<head>
|
||||||
|
<meta charset="UTF-8">
|
||||||
|
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||||
|
<meta http-equiv="X-UA-Compatible" content="ie=edge">
|
||||||
|
<title>user-js(油猴脚本) - 虚舟实验室资源中心</title>
|
||||||
|
<link rel="canonical" href="https://dl.caellab.com/user-js/">
|
||||||
|
<!-- 添加SEO描述和关键词 -->
|
||||||
|
<meta name="description" content="虚舟实验室资源中心提供精心制作的油猴脚本,安全可靠,专为技术爱好者打造。">
|
||||||
|
<meta name="keywords" content="虚舟实验室,资源中心,user-js,油猴脚本,bing-clean,必应搜索强制纯净无参数">
|
||||||
|
|
||||||
|
<style>
|
||||||
|
/* 全局样式重置与基础设置 */
|
||||||
|
* {
|
||||||
|
margin: 0;
|
||||||
|
padding: 0;
|
||||||
|
box-sizing: border-box;
|
||||||
|
font-family: "Microsoft YaHei", "Segoe UI", sans-serif;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* 背景与主体样式 - 科技风渐变背景 */
|
||||||
|
body {
|
||||||
|
background: linear-gradient(135deg, #0f1923 0%, #1a2938 50%, #2d4059 100%);
|
||||||
|
color: #e6e6e6;
|
||||||
|
min-height: 100vh;
|
||||||
|
padding-bottom: 50px;
|
||||||
|
background-attachment: fixed;
|
||||||
|
position: relative;
|
||||||
|
overflow-x: hidden;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* 科技风背景装饰 */
|
||||||
|
body::before {
|
||||||
|
content: "";
|
||||||
|
position: fixed;
|
||||||
|
top: 0;
|
||||||
|
left: 0;
|
||||||
|
width: 100%;
|
||||||
|
height: 100%;
|
||||||
|
background:
|
||||||
|
radial-gradient(circle at 20% 30%, rgba(57, 162, 219, 0.1) 0%, transparent 40%),
|
||||||
|
radial-gradient(circle at 80% 70%, rgba(57, 162, 219, 0.08) 0%, transparent 40%);
|
||||||
|
z-index: -1;
|
||||||
|
pointer-events: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* 头部样式 */
|
||||||
|
header {
|
||||||
|
background: rgba(0, 0, 0, 0.5);
|
||||||
|
padding: 20px 0;
|
||||||
|
text-align: center;
|
||||||
|
border-bottom: 2px solid #39a2db;
|
||||||
|
box-shadow: 0 0 15px rgba(57, 162, 219, 0.3);
|
||||||
|
position: relative;
|
||||||
|
backdrop-filter: blur(5px);
|
||||||
|
}
|
||||||
|
|
||||||
|
header h1 {
|
||||||
|
color: #39a2db;
|
||||||
|
font-size: 2.2rem;
|
||||||
|
letter-spacing: 2px;
|
||||||
|
text-shadow: 0 0 10px rgba(57, 162, 219, 0.5);
|
||||||
|
font-weight: 700;
|
||||||
|
position: relative;
|
||||||
|
display: inline-block;
|
||||||
|
}
|
||||||
|
|
||||||
|
header h1::after {
|
||||||
|
content: "";
|
||||||
|
position: absolute;
|
||||||
|
bottom: -5px;
|
||||||
|
left: 50%;
|
||||||
|
transform: translateX(-50%);
|
||||||
|
width: 100px;
|
||||||
|
height: 2px;
|
||||||
|
background: #39a2db;
|
||||||
|
box-shadow: 0 0 10px rgba(57, 162, 219, 0.8);
|
||||||
|
}
|
||||||
|
|
||||||
|
/* 导航栏样式 */
|
||||||
|
nav {
|
||||||
|
background: rgba(0, 0, 0, 0.5);
|
||||||
|
padding: 12px 0;
|
||||||
|
margin: 20px auto;
|
||||||
|
max-width: 1200px;
|
||||||
|
border-radius: 8px;
|
||||||
|
display: flex;
|
||||||
|
flex-wrap: wrap;
|
||||||
|
justify-content: center;
|
||||||
|
gap: 15px;
|
||||||
|
box-shadow: 0 4px 10px rgba(0, 0, 0, 0.3);
|
||||||
|
backdrop-filter: blur(5px);
|
||||||
|
border: 1px solid rgba(57, 162, 219, 0.2);
|
||||||
|
}
|
||||||
|
|
||||||
|
nav a {
|
||||||
|
color: #e6e6e6;
|
||||||
|
text-decoration: none;
|
||||||
|
padding: 8px 18px;
|
||||||
|
border-radius: 4px;
|
||||||
|
transition: all 0.3s ease;
|
||||||
|
border: 1px solid transparent;
|
||||||
|
position: relative;
|
||||||
|
overflow: hidden;
|
||||||
|
}
|
||||||
|
|
||||||
|
nav a::before {
|
||||||
|
content: "";
|
||||||
|
position: absolute;
|
||||||
|
top: 0;
|
||||||
|
left: -100%;
|
||||||
|
width: 100%;
|
||||||
|
height: 100%;
|
||||||
|
background: linear-gradient(90deg, transparent, rgba(57, 162, 219, 0.3), transparent);
|
||||||
|
transition: 0.5s;
|
||||||
|
}
|
||||||
|
|
||||||
|
nav a:hover {
|
||||||
|
background: #39a2db;
|
||||||
|
color: #0f1923;
|
||||||
|
transform: translateY(-2px);
|
||||||
|
box-shadow: 0 4px 8px rgba(57, 162, 219, 0.4);
|
||||||
|
border: 1px solid rgba(255, 255, 255, 0.2);
|
||||||
|
}
|
||||||
|
|
||||||
|
nav a:hover::before {
|
||||||
|
left: 100%;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* 容器样式 */
|
||||||
|
.container {
|
||||||
|
max-width: 1200px;
|
||||||
|
margin: 0 auto;
|
||||||
|
padding: 0 20px;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* 欢迎区域样式 */
|
||||||
|
.welcome {
|
||||||
|
background: rgba(0, 0, 0, 0.3);
|
||||||
|
padding: 30px;
|
||||||
|
border-radius: 10px;
|
||||||
|
margin-bottom: 30px;
|
||||||
|
border-left: 4px solid #39a2db;
|
||||||
|
backdrop-filter: blur(5px);
|
||||||
|
box-shadow: 0 4px 20px rgba(0, 0, 0, 0.2);
|
||||||
|
border: 1px solid rgba(57, 162, 219, 0.2);
|
||||||
|
position: relative;
|
||||||
|
overflow: hidden;
|
||||||
|
}
|
||||||
|
|
||||||
|
.welcome::before {
|
||||||
|
content: "";
|
||||||
|
position: absolute;
|
||||||
|
top: 0;
|
||||||
|
left: 0;
|
||||||
|
width: 100%;
|
||||||
|
height: 3px;
|
||||||
|
background: linear-gradient(90deg, #39a2db, transparent);
|
||||||
|
}
|
||||||
|
|
||||||
|
.welcome h2 {
|
||||||
|
color: #39a2db;
|
||||||
|
margin-bottom: 15px;
|
||||||
|
font-size: 1.8rem;
|
||||||
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
|
gap: 10px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.welcome h2::before {
|
||||||
|
content: "⚡";
|
||||||
|
font-size: 1.5rem;
|
||||||
|
}
|
||||||
|
|
||||||
|
.welcome p {
|
||||||
|
line-height: 1.6;
|
||||||
|
margin-bottom: 10px;
|
||||||
|
text-shadow: 0 1px 2px rgba(0,0,0,0.5);
|
||||||
|
}
|
||||||
|
|
||||||
|
.welcome p:last-child {
|
||||||
|
color: #ff6b6b;
|
||||||
|
font-weight: bold;
|
||||||
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
|
gap: 8px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.welcome p:last-child::before {
|
||||||
|
content: "⚠️";
|
||||||
|
}
|
||||||
|
|
||||||
|
/* 资源列表区域样式 */
|
||||||
|
#resources-list {
|
||||||
|
background: rgba(0, 0, 0, 0.3);
|
||||||
|
padding: 30px;
|
||||||
|
border-radius: 10px;
|
||||||
|
box-shadow: 0 4px 20px rgba(0, 0, 0, 0.2);
|
||||||
|
backdrop-filter: blur(5px);
|
||||||
|
border: 1px solid rgba(57, 162, 219, 0.2);
|
||||||
|
}
|
||||||
|
|
||||||
|
#resources-list h2 {
|
||||||
|
color: #39a2db;
|
||||||
|
margin-bottom: 20px;
|
||||||
|
font-size: 1.8rem;
|
||||||
|
text-align: center;
|
||||||
|
position: relative;
|
||||||
|
padding-bottom: 10px;
|
||||||
|
}
|
||||||
|
|
||||||
|
#resources-list h2::after {
|
||||||
|
content: "";
|
||||||
|
position: absolute;
|
||||||
|
bottom: 0;
|
||||||
|
left: 50%;
|
||||||
|
transform: translateX(-50%);
|
||||||
|
width: 120px;
|
||||||
|
height: 2px;
|
||||||
|
background: #39a2db;
|
||||||
|
box-shadow: 0 0 8px rgba(57, 162, 219, 0.6);
|
||||||
|
}
|
||||||
|
|
||||||
|
#resources-list ul {
|
||||||
|
list-style: none;
|
||||||
|
display: grid;
|
||||||
|
grid-template-columns: repeat(auto-fill, minmax(300px, 1fr));
|
||||||
|
gap: 15px;
|
||||||
|
}
|
||||||
|
|
||||||
|
#resources-list li {
|
||||||
|
background: rgba(255, 255, 255, 0.05);
|
||||||
|
padding: 20px;
|
||||||
|
border-radius: 8px;
|
||||||
|
transition: all 0.3s ease;
|
||||||
|
border: 1px solid rgba(57, 162, 219, 0.2);
|
||||||
|
position: relative;
|
||||||
|
overflow: hidden;
|
||||||
|
cursor: pointer; /* 整个卡片可点击 */
|
||||||
|
}
|
||||||
|
|
||||||
|
#resources-list li::before {
|
||||||
|
content: "";
|
||||||
|
position: absolute;
|
||||||
|
top: 0;
|
||||||
|
left: 0;
|
||||||
|
width: 3px;
|
||||||
|
height: 0;
|
||||||
|
background: #39a2db;
|
||||||
|
transition: height 0.3s ease;
|
||||||
|
}
|
||||||
|
|
||||||
|
#resources-list li:hover {
|
||||||
|
transform: translateY(-3px);
|
||||||
|
box-shadow: 0 6px 15px rgba(57, 162, 219, 0.3);
|
||||||
|
border-color: #39a2db;
|
||||||
|
background: rgba(57, 162, 219, 0.08);
|
||||||
|
}
|
||||||
|
|
||||||
|
#resources-list li:hover::before {
|
||||||
|
height: 100%;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* 软件链接样式 */
|
||||||
|
.software-link {
|
||||||
|
color: #e6e6e6;
|
||||||
|
text-decoration: none;
|
||||||
|
display: block;
|
||||||
|
padding: 8px 0;
|
||||||
|
cursor: pointer;
|
||||||
|
transition: color 0.3s ease;
|
||||||
|
font-weight: 600;
|
||||||
|
font-size: 1.1rem;
|
||||||
|
position: relative;
|
||||||
|
padding-left: 20px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.software-link::before {
|
||||||
|
content: "▸";
|
||||||
|
position: absolute;
|
||||||
|
left: 0;
|
||||||
|
color: #39a2db;
|
||||||
|
transition: transform 0.3s ease;
|
||||||
|
}
|
||||||
|
|
||||||
|
.software-link:hover {
|
||||||
|
color: #39a2db;
|
||||||
|
padding-left: 25px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.software-link:hover::before {
|
||||||
|
transform: translateX(5px);
|
||||||
|
}
|
||||||
|
|
||||||
|
/* 软件简介样式 */
|
||||||
|
.software-desc {
|
||||||
|
font-size: 0.9rem;
|
||||||
|
color: #999;
|
||||||
|
margin-top: 10px;
|
||||||
|
padding-left: 20px;
|
||||||
|
line-height: 1.5;
|
||||||
|
border-left: 2px solid rgba(57, 162, 219, 0.3);
|
||||||
|
}
|
||||||
|
|
||||||
|
/* 弹窗遮罩层 */
|
||||||
|
.modal-overlay {
|
||||||
|
position: fixed;
|
||||||
|
top: 0;
|
||||||
|
left: 0;
|
||||||
|
width: 100%;
|
||||||
|
height: 100%;
|
||||||
|
background: rgba(0, 0, 0, 0.8);
|
||||||
|
display: none;
|
||||||
|
justify-content: center;
|
||||||
|
align-items: center;
|
||||||
|
z-index: 9999;
|
||||||
|
backdrop-filter: blur(5px);
|
||||||
|
padding: 10px;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* 弹窗容器 */
|
||||||
|
.modal-container {
|
||||||
|
background: #1a2938;
|
||||||
|
width: 100%;
|
||||||
|
max-width: 500px;
|
||||||
|
border-radius: 10px;
|
||||||
|
padding: 20px;
|
||||||
|
border: 2px solid #39a2db;
|
||||||
|
box-shadow: 0 0 25px rgba(57, 162, 219, 0.6);
|
||||||
|
position: relative;
|
||||||
|
transform: scale(0.95);
|
||||||
|
transition: transform 0.3s ease;
|
||||||
|
max-height: 90vh;
|
||||||
|
overflow-y: auto;
|
||||||
|
-webkit-overflow-scrolling: touch;
|
||||||
|
}
|
||||||
|
|
||||||
|
.modal-overlay.active .modal-container {
|
||||||
|
transform: scale(1);
|
||||||
|
}
|
||||||
|
|
||||||
|
/* 弹窗标题 */
|
||||||
|
.modal-title {
|
||||||
|
color: #39a2db;
|
||||||
|
font-size: 1.5rem;
|
||||||
|
margin-bottom: 15px;
|
||||||
|
text-align: center;
|
||||||
|
position: relative;
|
||||||
|
padding-bottom: 10px;
|
||||||
|
word-break: break-word;
|
||||||
|
}
|
||||||
|
|
||||||
|
.modal-title::after {
|
||||||
|
content: "";
|
||||||
|
position: absolute;
|
||||||
|
bottom: 0;
|
||||||
|
left: 50%;
|
||||||
|
transform: translateX(-50%);
|
||||||
|
width: 80px;
|
||||||
|
height: 2px;
|
||||||
|
background: #39a2db;
|
||||||
|
box-shadow: 0 0 8px rgba(57, 162, 219, 0.6);
|
||||||
|
}
|
||||||
|
|
||||||
|
/* 资源列表样式 */
|
||||||
|
.source-list {
|
||||||
|
list-style: none;
|
||||||
|
margin-top: 15px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.source-list li {
|
||||||
|
margin: 12px 0;
|
||||||
|
padding: 0;
|
||||||
|
background: rgba(255, 255, 255, 0.05);
|
||||||
|
border-radius: 5px;
|
||||||
|
transition: all 0.3s ease;
|
||||||
|
border: 1px solid rgba(57, 162, 219, 0.1);
|
||||||
|
overflow: hidden;
|
||||||
|
}
|
||||||
|
|
||||||
|
.source-list li:hover {
|
||||||
|
background: rgba(57, 162, 219, 0.15);
|
||||||
|
transform: translateX(5px);
|
||||||
|
border-color: rgba(57, 162, 219, 0.4);
|
||||||
|
}
|
||||||
|
|
||||||
|
.source-list a {
|
||||||
|
color: #e6e6e6;
|
||||||
|
text-decoration: none;
|
||||||
|
display: flex;
|
||||||
|
justify-content: space-between;
|
||||||
|
align-items: center;
|
||||||
|
padding: 12px 15px;
|
||||||
|
width: 100%;
|
||||||
|
transition: all 0.2s ease;
|
||||||
|
white-space: nowrap;
|
||||||
|
overflow: hidden;
|
||||||
|
text-overflow: ellipsis;
|
||||||
|
min-height: 44px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.source-list a:hover {
|
||||||
|
color: #39a2db;
|
||||||
|
background: rgba(57, 162, 219, 0.1);
|
||||||
|
}
|
||||||
|
|
||||||
|
.source-name {
|
||||||
|
font-weight: 600;
|
||||||
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
|
gap: 8px;
|
||||||
|
flex: 1;
|
||||||
|
overflow: hidden;
|
||||||
|
text-overflow: ellipsis;
|
||||||
|
}
|
||||||
|
|
||||||
|
.source-name::before {
|
||||||
|
content: "";
|
||||||
|
font-size: 0.8rem;
|
||||||
|
}
|
||||||
|
|
||||||
|
.source-tip {
|
||||||
|
font-size: 0.75rem;
|
||||||
|
color: #ff6b6b;
|
||||||
|
background: rgba(255, 107, 107, 0.1);
|
||||||
|
padding: 3px 8px;
|
||||||
|
border-radius: 10px;
|
||||||
|
border: 1px solid rgba(255, 107, 107, 0.3);
|
||||||
|
white-space: nowrap;
|
||||||
|
flex-shrink: 0;
|
||||||
|
margin-left: 8px;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* 关闭按钮 */
|
||||||
|
.close-btn {
|
||||||
|
display: block;
|
||||||
|
width: 100%;
|
||||||
|
padding: 12px;
|
||||||
|
background: #39a2db;
|
||||||
|
color: #0f1923;
|
||||||
|
border: none;
|
||||||
|
border-radius: 5px;
|
||||||
|
margin-top: 20px;
|
||||||
|
cursor: pointer;
|
||||||
|
font-weight: bold;
|
||||||
|
transition: all 0.3s ease;
|
||||||
|
font-size: 1rem;
|
||||||
|
letter-spacing: 1px;
|
||||||
|
position: relative;
|
||||||
|
overflow: hidden;
|
||||||
|
min-height: 44px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.close-btn::before {
|
||||||
|
content: "";
|
||||||
|
position: absolute;
|
||||||
|
top: 0;
|
||||||
|
left: -100%;
|
||||||
|
width: 100%;
|
||||||
|
height: 100%;
|
||||||
|
background: linear-gradient(90deg, transparent, rgba(255, 255, 255, 0.3), transparent);
|
||||||
|
transition: 0.5s;
|
||||||
|
}
|
||||||
|
|
||||||
|
.close-btn:hover {
|
||||||
|
background: #287ca8;
|
||||||
|
transform: translateY(-2px);
|
||||||
|
box-shadow: 0 4px 10px rgba(57, 162, 219, 0.4);
|
||||||
|
}
|
||||||
|
|
||||||
|
.close-btn:hover::before {
|
||||||
|
left: 100%;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* 页脚样式 */
|
||||||
|
footer {
|
||||||
|
background: rgba(0, 0, 0, 0.6);
|
||||||
|
text-align: center;
|
||||||
|
padding: 15px 0;
|
||||||
|
margin-top: 40px;
|
||||||
|
color: #999;
|
||||||
|
font-size: 0.9rem;
|
||||||
|
position: relative;
|
||||||
|
bottom: 0;
|
||||||
|
width: 100%;
|
||||||
|
border-top: 1px solid rgba(57, 162, 219, 0.2);
|
||||||
|
backdrop-filter: blur(5px);
|
||||||
|
}
|
||||||
|
|
||||||
|
/* 无可用源提示 */
|
||||||
|
.no-source {
|
||||||
|
text-align: center;
|
||||||
|
padding: 20px;
|
||||||
|
color: #ff6b6b;
|
||||||
|
font-weight: bold;
|
||||||
|
background: rgba(255, 107, 107, 0.1);
|
||||||
|
border-radius: 8px;
|
||||||
|
border: 1px dashed rgba(255, 107, 107, 0.4);
|
||||||
|
}
|
||||||
|
|
||||||
|
/* 响应式设计 - 移动端优化 */
|
||||||
|
@media (max-width: 768px) {
|
||||||
|
header h1 {
|
||||||
|
font-size: 1.8rem;
|
||||||
|
}
|
||||||
|
|
||||||
|
nav {
|
||||||
|
gap: 10px;
|
||||||
|
}
|
||||||
|
|
||||||
|
nav a {
|
||||||
|
padding: 6px 12px;
|
||||||
|
font-size: 0.9rem;
|
||||||
|
}
|
||||||
|
|
||||||
|
.welcome {
|
||||||
|
padding: 20px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.welcome h2 {
|
||||||
|
font-size: 1.5rem;
|
||||||
|
}
|
||||||
|
|
||||||
|
#resources-list {
|
||||||
|
padding: 20px;
|
||||||
|
}
|
||||||
|
|
||||||
|
#resources-list ul {
|
||||||
|
grid-template-columns: 1fr;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* 移动端弹窗优化 */
|
||||||
|
.modal-overlay {
|
||||||
|
padding: 5px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.modal-container {
|
||||||
|
padding: 15px;
|
||||||
|
max-height: 92vh;
|
||||||
|
width: 95%;
|
||||||
|
}
|
||||||
|
|
||||||
|
.modal-title {
|
||||||
|
font-size: 1.3rem;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* 移动端源列表 - 垂直堆叠,允许换行 */
|
||||||
|
.source-list a {
|
||||||
|
flex-direction: column;
|
||||||
|
align-items: flex-start;
|
||||||
|
gap: 5px;
|
||||||
|
white-space: normal;
|
||||||
|
padding: 15px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.source-name {
|
||||||
|
width: 100%;
|
||||||
|
overflow: visible;
|
||||||
|
text-overflow: clip;
|
||||||
|
}
|
||||||
|
|
||||||
|
.source-tip {
|
||||||
|
align-self: flex-start;
|
||||||
|
margin-left: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* 按钮移动端优化 */
|
||||||
|
.close-btn {
|
||||||
|
padding: 14px;
|
||||||
|
font-size: 1rem;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@media (max-width: 480px) {
|
||||||
|
header h1 {
|
||||||
|
font-size: 1.5rem;
|
||||||
|
letter-spacing: 1px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.welcome h2 {
|
||||||
|
font-size: 1.3rem;
|
||||||
|
}
|
||||||
|
|
||||||
|
.welcome p {
|
||||||
|
font-size: 0.9rem;
|
||||||
|
}
|
||||||
|
|
||||||
|
.modal-title {
|
||||||
|
font-size: 1.2rem;
|
||||||
|
}
|
||||||
|
|
||||||
|
.source-list a {
|
||||||
|
padding: 12px;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/* 动画效果 */
|
||||||
|
@keyframes pulse {
|
||||||
|
0% { box-shadow: 0 0 0 0 rgba(57, 162, 219, 0.4); }
|
||||||
|
70% { box-shadow: 0 0 0 10px rgba(57, 162, 219, 0); }
|
||||||
|
100% { box-shadow: 0 0 0 0 rgba(57, 162, 219, 0); }
|
||||||
|
}
|
||||||
|
|
||||||
|
.pulse {
|
||||||
|
animation: pulse 2s infinite;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* 软件项悬停动画 */
|
||||||
|
#resources-list li:hover {
|
||||||
|
animation: hoverPulse 0.5s;
|
||||||
|
}
|
||||||
|
|
||||||
|
@keyframes hoverPulse {
|
||||||
|
0% { transform: translateY(0); }
|
||||||
|
50% { transform: translateY(-5px); }
|
||||||
|
100% { transform: translateY(-3px); }
|
||||||
|
}
|
||||||
|
|
||||||
|
/* 加载动画 */
|
||||||
|
.loading {
|
||||||
|
display: inline-block;
|
||||||
|
width: 15px;
|
||||||
|
height: 15px;
|
||||||
|
border: 2px solid rgba(57, 162, 219, 0.3);
|
||||||
|
border-top: 2px solid #39a2db;
|
||||||
|
border-radius: 50%;
|
||||||
|
animation: spin 1s linear infinite;
|
||||||
|
margin-left: 10px;
|
||||||
|
vertical-align: middle;
|
||||||
|
}
|
||||||
|
|
||||||
|
@keyframes spin {
|
||||||
|
0% { transform: rotate(0deg); }
|
||||||
|
100% { transform: rotate(360deg); }
|
||||||
|
}
|
||||||
|
|
||||||
|
/* 防止 iOS 滚动穿透 */
|
||||||
|
body.modal-open {
|
||||||
|
overflow: hidden;
|
||||||
|
position: fixed;
|
||||||
|
width: 100%;
|
||||||
|
height: 100%;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* 卡片内容点击区域 */
|
||||||
|
.card-content {
|
||||||
|
width: 100%;
|
||||||
|
height: 100%;
|
||||||
|
}
|
||||||
|
</style>
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
<header>
|
||||||
|
<h1>虚舟实验室资源中心</h1>
|
||||||
|
</header>
|
||||||
|
<nav>
|
||||||
|
<a href="/" class="pulse">主页</a>
|
||||||
|
|
||||||
|
</nav>
|
||||||
|
<div class="container">
|
||||||
|
<section id="online-resources" class="welcome">
|
||||||
|
<h2>user-js</h2>
|
||||||
|
<p style="color: #ffffff;">请先安装「篡改猴」或「暴力猴」等同类浏览器扩展才能正确安装。注意,由于浏览器编码问题,请不要直接复制原文粘贴到油猴脚本类浏览器扩展,如果直接打开了原文,那么请使用扩展的【从URL安装】功能。</p>
|
||||||
|
<p>这里提供各种由虚舟实验室精心制作的好用的油猴脚本。</p>
|
||||||
|
<p style="color: #ff6b6b;">请注意,这些文件仅供学习和研究使用,严禁商用。</p>
|
||||||
|
|
||||||
|
</section>
|
||||||
|
<section id="resources-list">
|
||||||
|
<h2>资源列表</h2>
|
||||||
|
<ul>
|
||||||
|
<li onclick="openModal('bing-clean')">
|
||||||
|
<div class="card-content">
|
||||||
|
<div class="software-link">必应搜索强制纯净无参数</div>
|
||||||
|
<div class="software-desc">国内版必应会偷偷在搜索时往?后加脏参数,这个简短的油猴脚本可以帮助去除,从而实现屏蔽广告。</div>
|
||||||
|
</div>
|
||||||
|
</li>
|
||||||
|
<!-- 可以继续添加更多资源卡片 -->
|
||||||
|
</ul>
|
||||||
|
</section>
|
||||||
|
</div>
|
||||||
|
<footer>
|
||||||
|
<p>© 2025-2099 虚舟实验室(CaelLab). All rights reserved.</p>
|
||||||
|
</footer>
|
||||||
|
|
||||||
|
<!-- 资源选择弹窗 -->
|
||||||
|
<div class="modal-overlay" id="modal">
|
||||||
|
<div class="modal-container">
|
||||||
|
<h3 class="modal-title" id="modalTitle">选择下载源</h3>
|
||||||
|
<ul class="source-list" id="sourceList">
|
||||||
|
<!-- 内容由JS动态填充 -->
|
||||||
|
</ul>
|
||||||
|
<button class="close-btn" onclick="closeModal()">关闭</button>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
// 定义 软件名称 -> 各源链接 的映射表
|
||||||
|
const softwareSources = {
|
||||||
|
"bing-clean": {
|
||||||
|
"user-js":"https://user-js.caellab.com/2026/01/bing-clean.user.js",
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
// 源对应的提示文本
|
||||||
|
const sourceTips = {
|
||||||
|
"user-js":"虚舟实验室user-js脚本托管站点",
|
||||||
|
};
|
||||||
|
|
||||||
|
// 打开弹窗函数
|
||||||
|
function openModal(softwareName) {
|
||||||
|
const modalTitle = document.getElementById('modalTitle');
|
||||||
|
const sourceList = document.getElementById('sourceList');
|
||||||
|
const modalOverlay = document.getElementById('modal');
|
||||||
|
|
||||||
|
modalTitle.innerText = `${softwareName}`;
|
||||||
|
|
||||||
|
// 清空原有列表
|
||||||
|
sourceList.innerHTML = '';
|
||||||
|
|
||||||
|
// 获取当前软件的所有源链接
|
||||||
|
const sources = softwareSources[softwareName];
|
||||||
|
let hasAvailableSource = false;
|
||||||
|
|
||||||
|
// 添加加载动画
|
||||||
|
const loadingDiv = document.createElement('div');
|
||||||
|
loadingDiv.style.textAlign = 'center';
|
||||||
|
loadingDiv.style.padding = '15px';
|
||||||
|
loadingDiv.innerHTML = '正在获取下载源<span class="loading"></span>';
|
||||||
|
sourceList.appendChild(loadingDiv);
|
||||||
|
|
||||||
|
// 模拟加载延迟 - 已加快到300ms
|
||||||
|
setTimeout(() => {
|
||||||
|
sourceList.innerHTML = '';
|
||||||
|
|
||||||
|
for (const [sourceName, url] of Object.entries(sources)) {
|
||||||
|
// 过滤掉链接为0的源
|
||||||
|
if (url === "0") continue;
|
||||||
|
|
||||||
|
hasAvailableSource = true;
|
||||||
|
const li = document.createElement('li');
|
||||||
|
// 只有当提示文本不为空时才显示
|
||||||
|
const tipText = sourceTips[sourceName] ? `<span class="source-tip">${sourceTips[sourceName]}</span>` : '';
|
||||||
|
// 关键修改:为弹窗中的外链添加rel="nofollow"
|
||||||
|
li.innerHTML = `<a href="${url}" target="_blank" rel="nofollow"><span class="source-name">${sourceName}</span> ${tipText}</a>`;
|
||||||
|
sourceList.appendChild(li);
|
||||||
|
}
|
||||||
|
|
||||||
|
// 如果没有可用源,显示提示
|
||||||
|
if (!hasAvailableSource) {
|
||||||
|
const li = document.createElement('div');
|
||||||
|
li.className = 'no-source';
|
||||||
|
li.innerHTML = '暂无可用下载源<br>请稍后再试';
|
||||||
|
sourceList.appendChild(li);
|
||||||
|
}
|
||||||
|
}, 300); // 加载速度加快到300ms
|
||||||
|
|
||||||
|
modalOverlay.style.display = 'flex';
|
||||||
|
document.body.classList.add('modal-open');
|
||||||
|
setTimeout(() => {
|
||||||
|
modalOverlay.classList.add('active');
|
||||||
|
}, 10);
|
||||||
|
}
|
||||||
|
|
||||||
|
// 关闭弹窗函数
|
||||||
|
function closeModal() {
|
||||||
|
const modalOverlay = document.getElementById('modal');
|
||||||
|
modalOverlay.classList.remove('active');
|
||||||
|
document.body.classList.remove('modal-open');
|
||||||
|
setTimeout(() => {
|
||||||
|
modalOverlay.style.display = 'none';
|
||||||
|
}, 300);
|
||||||
|
}
|
||||||
|
|
||||||
|
// 点击遮罩层关闭弹窗
|
||||||
|
document.getElementById('modal').addEventListener('click', function(e) {
|
||||||
|
if (e.target === this) {
|
||||||
|
closeModal();
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
// 按ESC键关闭弹窗
|
||||||
|
document.addEventListener('keydown', function(e) {
|
||||||
|
if (e.key === 'Escape') {
|
||||||
|
closeModal();
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
// 页面加载动画效果
|
||||||
|
window.addEventListener('DOMContentLoaded', () => {
|
||||||
|
const items = document.querySelectorAll('#resources-list li');
|
||||||
|
items.forEach((item, index) => {
|
||||||
|
item.style.opacity = '0';
|
||||||
|
item.style.transform = 'translateY(20px)';
|
||||||
|
setTimeout(() => {
|
||||||
|
item.style.transition = 'opacity 0.5s ease, transform 0.5s ease';
|
||||||
|
item.style.opacity = '1';
|
||||||
|
item.style.transform = 'translateY(0)';
|
||||||
|
}, 100 * index);
|
||||||
|
});
|
||||||
|
|
||||||
|
// 检查URL参数,如果包含资源名称,自动打开对应模态框
|
||||||
|
checkUrlForAutoOpen();
|
||||||
|
});
|
||||||
|
|
||||||
|
// 检查URL参数,自动打开对应资源
|
||||||
|
function checkUrlForAutoOpen() {
|
||||||
|
const url = window.location.href;
|
||||||
|
const queryString = url.split('?')[1];
|
||||||
|
|
||||||
|
if (queryString) {
|
||||||
|
// 去除可能的#符号
|
||||||
|
const cleanParam = queryString.split('#')[0];
|
||||||
|
|
||||||
|
// 检查是否存在这个资源
|
||||||
|
if (softwareSources[cleanParam]) {
|
||||||
|
// 延迟一点打开,确保页面加载完成
|
||||||
|
setTimeout(() => {
|
||||||
|
openModal(cleanParam);
|
||||||
|
}, 500);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</script>
|
||||||
|
</body>
|
||||||
|
</html>
|
||||||
|
|
@ -0,0 +1,6 @@
|
||||||
|
<html>
|
||||||
|
<head>
|
||||||
|
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
|
||||||
|
</head>
|
||||||
|
<body>Verification: 79e43571e7100eff</body>
|
||||||
|
</html>
|
||||||
Loading…
Reference in New Issue