首页
最近更改
MediaWiki帮助
中文社区
模组
人物
团体
群聊
历史
外网社区
模组
发帖交流
论坛
聊天
博客
快捷访问
分类
文件列表
上传文件
用户列表
用户通知
礼物列表
随机页面
聊天中的在线用户
系统消息
讨论
查看源代码
查看历史
刷新
创建账号
登录
查看“︁MediaWiki:Citizen.css”︁的源代码
来自Age Of History 2 Chinese Wiki
←
Citizen.css
跳转至:
导航
、
搜索
因为以下原因,您没有权限编辑该页面:
您请求的操作仅限属于该用户组的用户执行:
用户
此页面为本wiki上的软件提供界面文本,并受到保护以防止滥用。 如欲修改所有wiki的翻译,请访问
translatewiki.net
上的MediaWiki本地化项目。
您无权编辑此CSS页面,因为编辑此页面可能会影响所有访问者。
您可以查看和复制此页面的源代码。
/* 这里所有CSS都会加载给Citizen皮肤的用户 */ /* 这里放置的CSS将应用于所有皮肤 */ @import url("https://fonts.googleapis.com/css2?family=Press+Start+2P&display=swap"); @import url("https://fastly.jsdelivr.net/gh/hoah2333/Fonts@main/Typeface-VonwaonBitmap-16px.css"); @import url("https://fastly.jsdelivr.net/gh/hoah2333/Fonts@main/Typeface-VonwaonBitmap-12px.css"); :root { /* 保留原始配色变量 */ --link-color: #0645ad; --link-color-active: #faa700; --custom-background-blue: #ccf; --custom-background-cyan: #cef; --custom-background-green: #cfc; --custom-background-gray: #d2d2d2; --custom-background-grey: var(--custom-background-gray); --custom-background-magenta: #fdf; --custom-background-orange: #fdb; --custom-background-purple: #ecf; --custom-background-red: #fcc; --custom-background-yellow: #ffc; --custom-border-blue: #36e; --custom-border-cyan: #9df; --custom-border-green: #5d5; --custom-border-gray: #bbb; --custom-border-grey: var(--custom-border-gray); --custom-border-magenta: #f9f; --custom-border-orange: #f90; --custom-border-purple: #96c; --custom-border-red: #e44; --custom-border-yellow: #fc3; --custom-closed-topic-neutral: #eef; --custom-closed-topic-no: #fee; --custom-closed-topic-yes: #efe; --custom-code-background: #f8f9fa; --custom-load-page-button-color: #fff8; --custom-main-page-background: #fcfcfc; --custom-main-page-border: var(--custom-border-gray); --custom-main-page-edition-subheader: #333; --custom-mcwiki-header-color: #bcd4f5; --custom-navbox-background: #fff; --custom-navbox-top: #ccc; --custom-navbox-middle: #ddd; --custom-navbox-thru: #eee; --custom-nbt-inherit-color: #e6e6fa; --custom-table-background: #f8f9fa; --custom-table-alternate-background: #f0f1f2; --custom-table-choice-always: #003600; --custom-table-choice-always-background: #80d080; --custom-table-choice-default: #fff; --custom-table-choice-in-off-background: #060; --custom-table-choice-in-on-background: #0c0; --custom-table-choice-na: #000; --custom-table-choice-na-background: #fff; --custom-table-choice-neutral: #634800; --custom-table-choice-neutral-background: #ffeb9c; --custom-table-choice-never: #3c0404; --custom-table-choice-never-background: #ff8080; --custom-table-choice-no: #840606; --custom-table-choice-no-background: #ffc7ce; --custom-table-choice-out-off-background: #900; --custom-table-choice-out-on-background: #f00; --custom-table-choice-partial: #665400; --custom-table-choice-partial-background: #ffd; --custom-table-choice-planned: #0131b7; --custom-table-choice-planned-background: #dfdfff; --custom-table-choice-rarely: #533400; --custom-table-choice-rarely-background: #fdce5e; --custom-table-choice-unknown: #222; --custom-table-choice-unknown-background: #ccc; --custom-table-choice-yes: #005600; --custom-table-choice-yes-background: #c6efce; --custom-table-header-background: #eaecf0; --custom-topic-30-days: #bbb; --custom-topic-7-days: #ddd; /* 增强CRT效果相关变量 */ --crt-primary-scanline-alpha: 0.14; /* 主扫描线透明度 */ --crt-secondary-scanline-alpha: 0.08; /* 副扫描线透明度 */ --crt-fast-scanline-alpha: 0.3; /* 快速扫描线透明度 */ --crt-flicker-alpha: 0.04; /* 屏幕闪烁强度 */ --crt-noise-alpha: 0.04; /* 噪点强度 */ --crt-glow-radius: 0.08em; --crt-glow-color: rgba(0, 255, 100, 0.2); /* 辉光颜色和强度 */ --crt-text-shadow: 0 0 var(--crt-glow-radius) var(--crt-glow-color); --crt-vignette-opacity: 0.15; /* 暗角效果强度 */ --crt-rgb-shift-amount: 1px; /* RGB颜色偏移量 */ --crt-curvature: 8; /* CRT曲率(数值越大曲率越大)*/ /* 网格背景相关变量 */ --grid-color: rgba(0, 0, 0, 0.08); --grid-size: 40px; --grid-line-width: 1px; /* 字体设置 - 保持不变 */ --pixel-font-16: 'VonwaonBitmap 16px', monospace; --pixel-font-12: 'VonwaonBitmap 12px', monospace; --title-font: var(--pixel-font-16); --body-font: var(--pixel-font-16); --small-font: var(--pixel-font-12); --UI-font: var(--pixel-font-12); /* 字体大小设置 */ --base-font-size: 15px; --small-font-size: 13px; --title-scale: 1.3; --code-scale: 0.9; /* 边框和内间距设置 */ --side-border-thickness: 0.1rem; --main-border-thickness: 0.05rem; /* 启用/禁用CRT效果 - 默认启用 */ --crt-effects-display: block; /* 质感相关变量 */ --glass-opacity: 0.92; --glass-blur: 0px; /* 模糊效果 - 如果浏览器支持 */ --inset-shadow-depth: 25px; --border-shine: rgba(255, 255, 255, 0.1); --box-depth: 1px 1px 3px rgba(0, 0, 0, 0.15); /* 侧边栏相关变量 - 新增 */ --sidebar-max-height: 85vh; /* 侧边栏最大高度 */ --sidebar-width: 14rem; /* 侧边栏宽度 */ --sidebar-top-offset: 3rem; /* 侧边栏顶部偏移 */ /* 控制台相关变量 - 新增 */ --console-indicator-color: rgba(0, 255, 100, 0.8); --console-text-color: rgba(0, 255, 0, 0.9); --terminal-bg: rgba(16, 24, 32, 0.8); } /* CRT效果动画 - 增强版 */ @keyframes flicker { 0%, 100% { opacity: 0.98; } 25% { opacity: 0.94; } 50% { opacity: 0.99; } 75% { opacity: 0.95; } 83% { opacity: 0.98; } 90% { opacity: 0.91; } 93% { opacity: 0.99; } 97% { opacity: 0.93; } } /* 极微弱闪烁效果 - 用于文本和UI元素 */ @keyframes micro-flicker { 0%, 100% { opacity: 1; } 25% { opacity: 0.99; } 50% { opacity: 0.98; } 75% { opacity: 0.99; } } /* 主扫描线动画 - 更逼真 */ @keyframes primary-scanline { 0% { transform: translateY(-5vh); } 100% { transform: translateY(110vh); } } /* 副扫描线动画 - 较慢移动 */ @keyframes secondary-scanline { 0% { transform: translateY(-100vh); } 100% { transform: translateY(100vh); } } /* 快速扫描线动画 - 闪烁通过 */ @keyframes fast-scanline { 0%, 5% { opacity: 0; transform: translateY(-100vh); } 8% { opacity: var(--crt-fast-scanline-alpha); } 25% { opacity: var(--crt-fast-scanline-alpha); } 30% { opacity: 0; } 100% { opacity: 0; transform: translateY(100vh); } } /* 噪点效果动画 */ @keyframes noise { 0%, 100% { background-position: 0 0; } 25% { background-position: 100% 0; } 50% { background-position: 100% 100%; } 75% { background-position: 0 100%; } } /* RGB颜色偏移动画 */ @keyframes rgb-shift { 0%, 100% { text-shadow: var(--crt-rgb-shift-amount) 0 0 rgba(255, 0, 0, 0.3), calc(-1 * var(--crt-rgb-shift-amount)) 0 0 rgba(0, 255, 255, 0.3); } 25% { text-shadow: calc(0.8 * var(--crt-rgb-shift-amount)) 0 0 rgba(255, 0, 0, 0.3), calc(-0.8 * var(--crt-rgb-shift-amount)) 0 0 rgba(0, 255, 255, 0.3); } 50% { text-shadow: var(--crt-rgb-shift-amount) 0 0 rgba(255, 0, 0, 0.3), calc(-1 * var(--crt-rgb-shift-amount)) 0 0 rgba(0, 255, 255, 0.3); } 75% { text-shadow: calc(1.2 * var(--crt-rgb-shift-amount)) 0 0 rgba(255, 0, 0, 0.3), calc(-1.2 * var(--crt-rgb-shift-amount)) 0 0 rgba(0, 255, 255, 0.3); } } @keyframes crt-on { 0% { opacity: 0; filter: brightness(5) saturate(0); } 10% { opacity: 0.3; filter: brightness(3) saturate(0.2); } 30% { opacity: 0.7; filter: brightness(2) saturate(0.5); } 50% { opacity: 0.8; filter: brightness(1.5) saturate(0.8); } 100% { opacity: 1; filter: brightness(1) saturate(1); } } /* 控制台指示灯闪烁效果 */ @keyframes console-blink { 0%, 100% { opacity: 1; } 50% { opacity: 0.3; } } /* 打字机效果 */ @keyframes typing { from { width: 0; } to { width: 100%; } } /* 滚动指示动画 */ @keyframes scroll-indicator { 0%, 100% { transform: translateY(0); } 50% { transform: translateY(10px); } } /* 光感效果 - 模拟CRT显示器对周围光线的反应 */ @keyframes light-response { 0%, 100% { filter: brightness(1); } 50% { filter: brightness(1.03); } } /* 全局和背景样式 - 增强CRT显示器质感 */ html { min-height: 100%; background-color: #111; /* 更暗的背景,衬托CRT效果 */ background-image: /* 网格线 */ linear-gradient(var(--grid-color) var(--grid-line-width), transparent var(--grid-line-width)), linear-gradient(90deg, var(--grid-color) var(--grid-line-width), transparent var(--grid-line-width)), /* 精细噪点纹理 */ url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='4' height='4' viewBox='0 0 4 4'%3E%3Cpath fill='%239C92AC' fill-opacity='0.08' d='M1 3h1v1H1V3zm2-2h1v1H3V1z'%3E%3C/path%3E%3C/svg%3E"); background-size: var(--grid-size) var(--grid-size), var(--grid-size) var(--grid-size), auto; background-position: center center; animation: crt-on 2s ease-out; position: relative; overflow-x: hidden; /* 防止水平滚动条出现 */ padding: 0; margin: 0; } /* CRT显示器边框模拟 */ .crt-monitor-frame { position: fixed; top: 0; left: 0; width: 100%; height: 100%; pointer-events: none; z-index: 10000; background: transparent; box-shadow: inset 0 0 100px 20px rgba(0, 0, 0, 0.7); /* 内阴影创造边框效果 */ border-radius: 15% / 8%; /* 创造CRT显示器的弧度 */ } /* CRT面板反光效果 */ .crt-reflection { position: fixed; top: 0; left: 0; width: 100%; height: 100%; background: linear-gradient( 135deg, rgba(255, 255, 255, 0.1) 0%, transparent 40% ); pointer-events: none; z-index: 10001; opacity: 0.3; border-radius: 15% / 8%; } body { font-family: var(--body-font); font-size: var(--base-font-size); line-height: 1.65; color: #222; position: relative; width: 90%; max-width: 1200px; /* 限制最大宽度 */ min-height: calc(100vh - 4rem); margin: 2rem auto; /* 居中并增加上下边距 */ padding: 2rem; background-color: rgba(255, 255, 255, var(--glass-opacity)); border-radius: 6px; border: 1px solid var(--border-shine); box-shadow: var(--box-depth), 0 3px 12px rgba(0, 0, 0, 0.05), inset 0 0 var(--inset-shadow-depth) rgba(0, 255, 100, 0.04); animation: flicker 120s infinite alternate ease-in-out; overflow: hidden; /* 隐藏超出部分,配合扫描线 */ backdrop-filter: blur(var(--glass-blur)); /* 支持的浏览器会有磨砂玻璃效果 */ -webkit-backdrop-filter: blur(var(--glass-blur)); transform-style: preserve-3d; perspective: 1000px; } /* CRT曲面效果 - 使页面内容看起来像在CRT上显示 */ .crt-curve-effect { position: fixed; top: 0; left: 0; width: 100%; height: 100%; pointer-events: none; z-index: 9997; background: transparent; box-shadow: inset 0 0 calc(var(--crt-curvature) * 8px) rgba(0, 0, 0, 0.3); border-radius: 50% / 10%; opacity: 0.5; } /* 添加暗角效果 - 增强CRT显示器质感 */ body::before { content: ""; display: var(--crt-effects-display); position: fixed; top: 0; left: 0; width: 100%; height: 100%; pointer-events: none; z-index: 9990; background: radial-gradient( circle at center, transparent 40%, rgba(0, 0, 0, var(--crt-vignette-opacity)) 140% ); mix-blend-mode: multiply; } /* 添加纹理噪点 - 模拟CRT颗粒感 */ body::after { content: ""; display: var(--crt-effects-display); position: fixed; top: 0; left: 0; width: 100%; height: 100%; pointer-events: none; z-index: 9991; background-image: url("data:image/png;base64,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"); background-repeat: repeat; background-size: 200px; opacity: var(--crt-noise-alpha); animation: noise 0.5s steps(2) infinite; mix-blend-mode: overlay; } /* CRT扫描线效果 - 更逼真 */ /* 1. 主扫描线 - 明显且速度和密度适中的扫描线 */ .crt-primary-scanline { content: ""; display: var(--crt-effects-display); position: fixed; top: 0; left: 0; width: 100%; height: 9px; /* 主扫描线较宽 */ background: linear-gradient( to bottom, transparent 0%, rgba(0, 0, 0, var(--crt-primary-scanline-alpha)) 40%, rgba(0, 0, 0, calc(var(--crt-primary-scanline-alpha) * 1.5)) 50%, rgba(0, 0, 0, var(--crt-primary-scanline-alpha)) 60%, transparent 100% ); pointer-events: none; z-index: 9995; opacity: 0.85; animation: primary-scanline 8s linear infinite; } /* 2. 副扫描线 - 持续存在的细小扫描线纹理 */ .crt-secondary-scanline { content: ""; display: var(--crt-effects-display); position: fixed; top: 0; left: 0; width: 100%; height: 100%; background: repeating-linear-gradient( to bottom, transparent 0px, transparent 3px, rgba(0, 0, 0, var(--crt-secondary-scanline-alpha)) 4px, rgba(0, 0, 0, var(--crt-secondary-scanline-alpha)) 4px ); background-size: 100% 8px; pointer-events: none; z-index: 9994; opacity: 0.7; } /* 3. 快速扫描线 - 闪烁通过的亮条 */ .crt-fast-scanline { content: ""; display: var(--crt-effects-display); position: fixed; top: 0; left: 0; width: 100%; height: 2px; /* 快速扫描线很窄 */ background: linear-gradient( to bottom, transparent 0%, rgba(255, 255, 255, 0.5) 50%, transparent 100% ); pointer-events: none; z-index: 9996; opacity: 0; animation: fast-scanline 4s cubic-bezier(0.15, 0.85, 0.5, 1) infinite; } /* 额外扫描线阴影 - 增强3D效果 */ .crt-scanline-shadow { content: ""; display: var(--crt-effects-display); position: fixed; top: 0; left: 0; width: 100%; height: 100%; pointer-events: none; z-index: 9992; background: linear-gradient( to bottom, rgba(0, 0, 0, 0.01) 0%, rgba(0, 0, 0, 0.05) 50%, rgba(0, 0, 0, 0.01) 100% ); opacity: 0.4; } /* 标题样式 - 更精致的复古科幻风格 */ h1, h2, h3, h4, h5, h6 { font-family: var(--title-font); font-size: calc(var(--base-font-size) * var(--title-scale)); font-weight: normal; text-shadow: var(--crt-text-shadow), 0 1px 1px rgba(0, 0, 0, 0.1); letter-spacing: 0.03em; position: relative; margin-top: 1.8em; margin-bottom: 1em; padding-bottom: 0.5em; border-bottom: 1px solid rgba(0, 0, 0, 0.1); color: #111; line-height: 1.5; animation: micro-flicker 2s infinite alternate ease-in-out; } /* 标题光效底层 */ h1::after, h2::after, h3::after { content: ""; position: absolute; bottom: -1px; left: 0; width: 100%; height: 1px; background: linear-gradient( to right, var(--crt-glow-color), transparent 90% ); } /* 标题装饰线 */ h1::before, h2::before { content: ""; position: absolute; bottom: -2px; left: 0; width: 30px; height: 3px; background: linear-gradient( to right, rgba(0, 255, 100, 0.8), transparent ); border-radius: 2px; box-shadow: 0 0 8px var(--crt-glow-color); } body h1 { font-size: calc(var(--base-font-size) * 1.7); text-transform: uppercase; padding-left: 14px; border-left: 3px solid var(--crt-glow-color); box-shadow: -3px 0 8px rgba(0, 255, 100, 0.2); letter-spacing: 0.05em; } h2 { font-size: calc(var(--base-font-size) * 1.5); padding-left: 6px; } h3 { font-size: calc(var(--base-font-size) * 1.3); border-bottom-style: dashed; border-bottom-width: 1px; } h4 { font-size: calc(var(--base-font-size) * 1.2); border-bottom: none; border-left: 2px solid rgba(0, 255, 100, 0.4); padding-left: 6px; } h5, h6 { font-size: calc(var(--base-font-size) * 1.1); border-bottom: none; } /* 链接样式 - 更精致的复古科幻风格 */ a { color: var(--link-color); text-decoration: none; position: relative; transition: all 0.25s ease; padding: 1px 3px; border-radius: 2px; text-shadow: 0 0 3px rgba(0, 100, 255, 0.15); font-family: var(--pixel-font-16); } /* 链接悬停效果 */ a:hover { color: var(--link-color-active); background-color: rgba(250, 167, 0, 0.1); text-shadow: 0 0 var(--crt-glow-radius) rgba(250, 167, 0, 0.4); transform: translateY(-1px); box-shadow: 0 1px 3px rgba(0, 0, 0, 0.05); } /* 链接点击效果 */ a:active { transform: translateY(0); box-shadow: none; } /* 标记链接是可交互的 - 添加小图标 */ a[href]:not(.mw-selflink)::before { content: '>'; display: inline-block; margin-right: 3px; font-size: 0.8em; opacity: 0.6; transition: all 0.2s ease; } a[href]:not(.mw-selflink):hover::before { opacity: 1; transform: translateX(1px); animation: console-blink 1s infinite; } /* 红色链接样式 */ a.new { color: #ba0000; text-shadow: 0 0 3px rgba(186, 0, 0, 0.2); } a.new:hover { background-color: rgba(186, 0, 0, 0.1); text-shadow: 0 0 var(--crt-glow-radius) rgba(186, 0, 0, 0.4); } /* 外部链接样式 */ a.external { border-bottom: 1px dotted rgba(6, 69, 173, 0.3); } a.external::after { content: "⎋"; font-size: 0.8em; margin-left: 3px; opacity: 0.7; } a.external:hover::after { opacity: 1; transform: translateY(-1px); } /* Infobox样式 - 更精致的复古科幻风格 */ .notaninfobox { position: relative; clear: right; margin: 0 0 1em 1em; width: 350px; font-size: calc(var(--base-font-size) * 0.9); font-family: var(--small-font); background-color: rgba(248, 249, 250, 0.95); float: right; border: 1px solid rgba(0, 0, 0, 0.15); padding: 0; overflow: auto; z-index: 1; overflow-wrap: anywhere; box-shadow: 2px 2px 5px rgba(0, 0, 0, 0.1), inset 0 0 10px rgba(0, 255, 100, 0.04); animation: flicker 80s infinite alternate; border-radius: 3px; } /* Infobox标题 */ .notaninfobox > .infobox-title { font-family: var(--title-font); font-weight: normal; text-align: center; font-size: 110%; background: linear-gradient(to bottom, #d5e5fb, var(--custom-mcwiki-header-color)); color: #333; text-shadow: 0 1px 1px rgba(255, 255, 255, 0.5), var(--crt-text-shadow); padding: 10px 4px; border-bottom: 1px solid rgba(0, 0, 0, 0.15); position: relative; overflow: hidden; } /* 给标题添加光泽效果 */ .notaninfobox > .infobox-title::after { content: ""; position: absolute; top: 0; left: -150%; width: 150%; height: 100%; background: linear-gradient( to right, transparent 0%, rgba(255, 255, 255, 0) 0%, rgba(255, 255, 255, 0.4) 50%, rgba(255, 255, 255, 0) 100% ); transform: rotate(35deg); animation: shine 6s infinite; } /* Infobox标签样式 */ .notaninfobox .infobox-row .infobox-row-label { font-family: var(--UI-font); font-weight: 600; color: #444; text-shadow: none; letter-spacing: 0.03em; padding: 5px 8px; background-color: rgba(0, 0, 0, 0.03); border-right: 2px solid rgba(0, 0, 0, 0.1); } /* Infobox内容样式 */ .notaninfobox .infobox-row .infobox-row-value { padding: 5px 8px; line-height: 1.4; } /* Infobox行交替背景 */ .notaninfobox .infobox-row:nth-child(even) { background-color: rgba(0, 0, 0, 0.02); } /* Infobox行悬停效果 */ .notaninfobox .infobox-row:hover { background-color: rgba(0, 255, 100, 0.03); } /* 表格样式 - 更精致的复古科幻风格 */ table { border: 1px solid #ccc; background-color: rgba(248, 249, 250, 0.95); box-shadow: var(--box-depth), inset 0 0 15px rgba(240, 240, 240, 0.8); border-radius: 3px; margin: 1.2em 0; font-family: var(--pixel-font-12); border-collapse: separate; border-spacing: 0; overflow: hidden; /* 使圆角边框生效 */ } /* 表格标题 */ table caption { font-family: var(--title-font); font-size: calc(var(--base-font-size) * 1.05); padding: 10px; font-weight: normal; text-shadow: var(--crt-text-shadow); margin-bottom: 5px; color: #333; border-bottom: 1px dashed rgba(0, 0, 0, 0.1); } /* 表头样式 */ table th { background: linear-gradient(to bottom, #f8f9fa, var(--custom-table-header-background)); color: #333; font-family: var(--title-font); font-weight: normal; text-shadow: 0 1px 1px rgba(255, 255, 255, 0.5), var(--crt-text-shadow); padding: 12px 14px; border-bottom: 2px solid rgba(0, 0, 0, 0.1); position: relative; } /* 表头装饰效果 */ table th::after { content: ""; position: absolute; bottom: 0; left: 0; width: 100%; height: 1px; background: linear-gradient( to right, rgba(255, 255, 255, 0.5), transparent ); } /* 表格单元格 */ table td, table th { border: 1px solid #e0e0e0; padding: 8px 12px; transition: all 0.2s ease; font-size: calc(var(--base-font-size) * 0.95); } /* 表格交替行 */ table tr:nth-child(even) td { background-color: rgba(240, 241, 242, 0.7); } /* 表格行悬停效果 */ table tr:hover td { background-color: rgba(0, 255, 100, 0.08); text-shadow: 0 0 1px rgba(0, 0, 0, 0.05); } /* 代码样式 - 更精致的复古科幻风格 */ pre, code { font-family: var(--pixel-font-12); font-size: calc(var(--base-font-size) * var(--code-scale)); background-color: rgba(232, 232, 232, 0.8); border: 1px solid #d0d0d0; padding: 0.3em 0.5em; text-shadow: none; border-radius: 3px; color: #1a1a1a; position: relative; } /* 代码块样式 */ pre { padding: 1em 1em 1em 3.5em; /* 左侧留出行号空间 */ overflow-x: auto; background-color: rgba(228, 230, 232, 0.9); box-shadow: inset 0 1px 4px rgba(0,0,0,0.15), 0 1px 0 rgba(255,255,255,0.7); counter-reset: line; margin: 1.5em 0; position: relative; border-left: 3px solid rgba(0, 200, 100, 0.3); } /* 代码块背景 - 终端风格 */ pre::before { content: ""; position: absolute; top: 0; left: 0; width: 100%; height: 100%; background: repeating-linear-gradient( to bottom, transparent 0px, transparent 19px, rgba(0, 0, 0, 0.05) 19px, rgba(0, 0, 0, 0.05) 20px ); pointer-events: none; } /* 代码行号 */ pre code { display: block; position: relative; background: transparent; border: none; box-shadow: none; padding: 0; counter-increment: line; } pre code::before { content: counter(line); display: inline-block; width: 2em; margin-right: 1em; margin-left: -3em; color: #888; text-align: right; user-select: none; border-right: 1px solid rgba(0, 0, 0, 0.1); padding-right: 0.5em; } /* 内联代码 */ p code, li code, td code { padding: 0.15em 0.4em; margin: 0 0.2em; background-color: rgba(220, 220, 220, 0.5); border: 1px solid #d8d8d8; white-space: nowrap; } /* 控制台输出样式 */ .console-output { background-color: var(--terminal-bg); color: var(--console-text-color); font-family: var(--pixel-font-12); padding: 12px; margin: 1em 0; border-radius: 3px; border: 1px solid rgba(0, 0, 0, 0.2); box-shadow: inset 0 0 10px rgba(0, 0, 0, 0.2); position: relative; overflow: hidden; } /* 控制台头部 */ .console-output::before { content: "> terminal"; display: block; color: rgba(255, 255, 255, 0.5); border-bottom: 1px solid rgba(255, 255, 255, 0.1); padding-bottom: 5px; margin-bottom: 8px; font-size: 0.9em; } /* 控制台指示器闪烁 */ .console-indicator { display: inline-block; width: 0.8em; height: 1em; background-color: var(--console-indicator-color); margin-left: 0.2em; vertical-align: middle; animation: console-blink 1s infinite; } /* 确保文本内容清晰可读 */ p, li, td, th, figcaption, blockquote, cite { font-family: var(--body-font); line-height: 1.65; letter-spacing: 0.01em; position: relative; text-shadow: var(--crt-text-shadow); } /* 小字体元素 */ .small, small, .text-small, figcaption, .caption, .info, .note { font-family: var(--small-font); font-size: var(--small-font-size); } /* 注释、提示和警告样式 */ .note, .info, .warning, .tip { position: relative; margin: 1.5em 0; padding: 1em 1em 1em 3em; border-radius: 3px; box-shadow: 0 1px 3px rgba(0, 0, 0, 0.1); font-family: var(--small-font); } .note::before, .info::before, .warning::before, .tip::before { position: absolute; left: 0.8em; top: 50%; transform: translateY(-50%); font-size: 1.5em; opacity: 0.8; } /* 注释样式 */ .note { background-color: rgba(230, 230, 250, 0.4); border-left: 3px solid #99c; } .note::before { content: "※"; color: #99c; } /* 信息样式 */ .info { background-color: rgba(220, 237, 255, 0.4); border-left: 3px solid #69c; } .info::before { content: "ℹ"; color: #69c; } /* 警告样式 */ .warning { background-color: rgba(255, 240, 230, 0.4); border-left: 3px solid #f93; } .warning::before { content: "⚠"; color: #f93; } /* 提示样式 */ .tip { background-color: rgba(230, 250, 230, 0.4); border-left: 3px solid #6c6; } .tip::before { content: "✓"; color: #6c6; } /* 图片效果 - 更精致的复古科幻风格 */ img { max-width: 100%; height: auto; transition: all 0.3s ease; border-radius: 3px; border: 1px solid rgba(0, 0, 0, 0.1); box-shadow: 0 1px 3px rgba(0,0,0,0.05); filter: contrast(1.02) brightness(1.01); /* 轻微增强对比度 */ position: relative; } /* 图片悬停效果 */ img:hover { box-shadow: 0 3px 8px rgba(0, 0, 0, 0.15), 0 0 10px var(--crt-glow-color); transform: scale(1.02) translateY(-2px); border-color: rgba(0, 255, 100, 0.3); filter: contrast(1.05) brightness(1.02); } /* 图片装饰层 - 模拟CRT显示图片的效果 */ img::after { content: ""; position: absolute; top: 0; left: 0; width: 100%; height: 100%; background: repeating-linear-gradient( to bottom, transparent 0px, transparent 3px, rgba(0, 0, 0, 0.03) 4px, rgba(0, 0, 0, 0.03) 4px ); pointer-events: none; z-index: 1; } /* 图片标题 */ figcaption { margin-top: 0.5em; color: #555; font-style: italic; text-align: center; max-width: 100%; } /* 滚动条样式 - 更精致的复古科幻风格 */ ::-webkit-scrollbar { width: 14px; height: 14px; } ::-webkit-scrollbar-track { background: rgba(0, 0, 0, 0.04); border-radius: 0; box-shadow: inset 0 0 4px rgba(0,0,0,0.1); } ::-webkit-scrollbar-thumb { background: repeating-linear-gradient( to bottom, #aaa 0px, #aaa 2px, #999 3px, #999 5px ); border-radius: 0; border: 1px solid rgba(0, 0, 0, 0.2); box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.3); } ::-webkit-scrollbar-thumb:hover { background: repeating-linear-gradient( to bottom, #bbb 0px, #bbb 2px, #aaa 3px, #aaa 5px ); } ::-webkit-scrollbar-button { background-color: #ddd; border: 1px solid #aaa; border-radius: 0; box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.5); width: 14px; height: 14px; background-position: center; background-repeat: no-repeat; background-size: 6px; } ::-webkit-scrollbar-button:vertical:decrement { background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='10' height='10' viewBox='0 0 10 10'%3E%3Cpolygon points='5,3 8,7 2,7' fill='%23666'/%3E%3C/svg%3E"); } ::-webkit-scrollbar-button:vertical:increment { background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='10' height='10' viewBox='0 0 10 10'%3E%3Cpolygon points='5,7 8,3 2,3' fill='%23666'/%3E%3C/svg%3E"); } ::-webkit-scrollbar-button:horizontal:decrement { background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='10' height='10' viewBox='0 0 10 10'%3E%3Cpolygon points='3,5 7,2 7,8' fill='%23666'/%3E%3C/svg%3E"); } ::-webkit-scrollbar-button:horizontal:increment { background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='10' height='10' viewBox='0 0 10 10'%3E%3Cpolygon points='7,5 3,2 3,8' fill='%23666'/%3E%3C/svg%3E"); } /* 滚动条拐角 */ ::-webkit-scrollbar-corner { background-color: #eee; border: 1px solid #ccc; } /* 引用块样式 - 更精致的复古科幻风格 */ blockquote { border-left: 3px solid var(--crt-glow-color); margin: 1.2em 0; padding: 0.8em 1.2em; background: rgba(240, 240, 240, 0.5); position: relative; font-family: var(--body-font); box-shadow: inset 0 0 15px rgba(0, 255, 100, 0.03), 1px 1px 3px rgba(0, 0, 0, 0.05); border-radius: 0 3px 3px 0; } blockquote::before { content: """; position: absolute; top: 0; left: 10px; font-size: 2em; color: rgba(0, 0, 0, 0.1); font-family: serif; } blockquote p:first-child { margin-top: 0; } blockquote p:last-child { margin-bottom: 0; } /* 引用源 */ cite { display: block; margin-top: 0.5em; color: #666; font-size: 0.9em; font-style: italic; } cite::before { content: "— "; } /* 按钮样式 - 更精致的复古科幻风格 */ .collapseButton, button, .mw-ui-button, input[type="button"], input[type="submit"] { font-family: var(--UI-font); font-size: calc(var(--base-font-size) * 0.85); padding: 6px 12px; border: 2px solid #666; border-bottom: 4px solid #444; border-right: 4px solid #444; border-radius: 0; background: linear-gradient(to bottom, #eee, #ddd); color: #333; text-transform: uppercase; cursor: pointer; transition: all 0.15s ease; text-shadow: 0 1px 0 rgba(255, 255, 255, 0.5); margin: 2px 4px; position: relative; text-align: center; letter-spacing: 0.05em; box-shadow: 0 2px 5px rgba(0, 0, 0, 0.05); } /* 按钮悬停效果 */ .collapseButton:hover, button:hover, .mw-ui-button:hover, input[type="button"]:hover, input[type="submit"]:hover { background: linear-gradient(to bottom, #f5f5f5, #eee); border-color: #777; border-bottom-color: #555; border-right-color: #555; transform: translateY(-1px); box-shadow: 0 3px 8px rgba(0, 0, 0, 0.1); } /* 按钮点击效果 */ .collapseButton:active, button:active, .mw-ui-button:active, input[type="button"]:active, input[type="submit"]:active { background: linear-gradient(to bottom, #ccc, #ddd); border: 2px solid #444; border-top: 4px solid #666; border-left: 4px solid #666; transform: translateY(1px); text-shadow: none; box-shadow: inset 0 2px 5px rgba(0, 0, 0, 0.1); } /* 按钮装饰效果 */ .collapseButton::after, button::after, .mw-ui-button::after, input[type="button"]::after, input[type="submit"]::after { content: ""; position: absolute; top: 2px; left: 2px; width: calc(100% - 4px); height: 8px; background: linear-gradient(to bottom, rgba(255, 255, 255, 0.8), transparent); pointer-events: none; border-radius: 0; } .navbox .collapseButton { width: 6em; } /* 主按钮样式 - 重要操作 */ .mw-ui-button.mw-ui-primary, button.primary, input[type="submit"].primary { background: linear-gradient(to bottom, #6af, #39f); border-color: #27e; border-bottom-color: #05c; border-right-color: #05c; color: white; text-shadow: 0 1px 1px rgba(0, 0, 0, 0.3); } .mw-ui-button.mw-ui-primary:hover, button.primary:hover, input[type="submit"].primary:hover { background: linear-gradient(to bottom, #7bf, #49f); border-color: #38f; border-bottom-color: #16d; border-right-color: #16d; } /* 继续22222.txt中断部分的CSS */ .mw-ui-button.mw-ui-primary:active, button.primary:active, input[type="submit"].primary:active { background: linear-gradient(to bottom, #28e, #39f); border: 2px solid #05c; border-top: 4px solid #16d; border-left: 4px solid #16d; transform: translateY(1px); text-shadow: none; box-shadow: inset 0 2px 5px rgba(0, 0, 0, 0.1); } /* 导航容器 - 更精致的复古科幻风格 */ .navbox { background-color: rgba(255, 255, 255, 0.95); border: 1px solid var(--custom-navbox-top); border-radius: 3px; color: #222; margin: 1.5em 0; padding: 4px; font-family: var(--small-font); font-size: var(--small-font-size); box-shadow: var(--box-depth), inset 0 0 20px rgba(0, 255, 100, 0.02); position: relative; overflow: hidden; } /* 导航标题 */ .navbox-title { background: linear-gradient(to bottom, #f8f9fa, var(--custom-navbox-top)); border: 1px solid var(--custom-navbox-top); border-radius: 2px; color: #222; padding: 8px 12px; font-family: var(--title-font); font-weight: normal; text-align: center; text-shadow: 0 1px 0 rgba(255, 255, 255, 0.5), var(--crt-text-shadow); position: relative; } /* 导航组 */ .navbox-group { background-color: var(--custom-navbox-middle); border: 1px solid var(--custom-navbox-top); color: #444; font-weight: normal; padding: 6px 10px; text-align: right; white-space: nowrap; letter-spacing: 0.03em; border-right: 2px solid rgba(0, 0, 0, 0.1); } /* 导航列表 */ .navbox-list { background-color: var(--custom-navbox-thru); border: 1px solid var(--custom-navbox-middle); padding: 6px 10px; text-align: left; line-height: 1.5; } /* 导航行悬停效果 */ .navbox tr:hover td.navbox-list { background-color: rgba(0, 255, 100, 0.05); } /* 导航装饰 */ .navbox::before { content: ""; position: absolute; top: 0; left: 0; width: 100%; height: 1px; background: linear-gradient( to right, transparent, rgba(255, 255, 255, 0.8), transparent ); } /* 提示框和消息样式 - 像素化科幻风格 */ .notice { position: relative; margin: 1.5em 0; padding: 1em 1em 1em 4em; border-radius: 3px; border-left: 4px solid transparent; box-shadow: 0 1px 3px rgba(0, 0, 0, 0.1); font-family: var(--small-font); animation: micro-flicker 2s infinite alternate ease-in-out; } .notice::before { font-family: var(--UI-font); position: absolute; left: 1em; top: 50%; transform: translateY(-50%); font-size: 1.8em; opacity: 0.8; } /* 成功消息 */ .notice-success { background-color: rgba(230, 250, 230, 0.4); border-color: #6c6; } .notice-success::before { content: "✓"; color: #6c6; } /* 错误消息 */ .notice-error { background-color: rgba(255, 230, 230, 0.4); border-color: #c66; } .notice-error::before { content: "✗"; color: #c66; } /* 警告消息 */ .notice-warning { background-color: rgba(255, 240, 230, 0.4); border-color: #f93; } .notice-warning::before { content: "⚠"; color: #f93; } /* 信息消息 */ .notice-info { background-color: rgba(220, 237, 255, 0.4); border-color: #69c; } .notice-info::before { content: "ℹ"; color: #69c; } /* 表单元素 - 复古科幻风格 */ input[type="text"], input[type="password"], input[type="email"], input[type="number"], input[type="search"], textarea, select { font-family: var(--pixel-font-12); font-size: calc(var(--base-font-size) * 0.9); color: #333; background-color: rgba(240, 245, 250, 0.95); border: 2px solid #aaa; border-radius: 0; padding: 6px 10px; margin: 4px 0; box-shadow: inset 0 1px 3px rgba(0, 0, 0, 0.1), 0 1px 0 rgba(255, 255, 255, 0.7); transition: all 0.2s ease; } /* 输入元素悬停状态 */ input[type="text"]:hover, input[type="password"]:hover, input[type="email"]:hover, input[type="number"]:hover, input[type="search"]:hover, textarea:hover, select:hover { border-color: #999; background-color: rgba(245, 248, 250, 0.98); } /* 输入元素焦点状态 */ input[type="text"]:focus, input[type="password"]:focus, input[type="email"]:focus, input[type="number"]:focus, input[type="search"]:focus, textarea:focus, select:focus { outline: none; border-color: rgba(0, 150, 255, 0.6); box-shadow: inset 0 1px 3px rgba(0, 0, 0, 0.05), 0 0 8px rgba(0, 150, 255, 0.3); background-color: #fff; } /* 文本区域 */ textarea { resize: vertical; min-height: 80px; line-height: 1.5; } /* 复选框和单选按钮 - 复古科幻风格 */ input[type="checkbox"], input[type="radio"] { position: relative; width: 16px; height: 16px; margin: 3px 5px 3px 0; vertical-align: middle; cursor: pointer; appearance: none; -webkit-appearance: none; border: 1px solid #999; background-color: rgba(240, 245, 250, 0.9); transition: all 0.2s ease; } input[type="checkbox"] { border-radius: 2px; } input[type="radio"] { border-radius: 50%; } /* 复选框和单选按钮悬停状态 */ input[type="checkbox"]:hover, input[type="radio"]:hover { border-color: #666; background-color: rgba(245, 248, 250, 0.95); } /* 复选框和单选按钮选中状态 */ input[type="checkbox"]:checked, input[type="radio"]:checked { border-color: #0078d7; background-color: rgba(0, 120, 215, 0.1); } /* 复选框选中状态图标 */ input[type="checkbox"]:checked::after { content: ""; position: absolute; left: 4px; top: 1px; width: 5px; height: 10px; border: solid #0078d7; border-width: 0 2px 2px 0; transform: rotate(45deg); } /* 单选按钮选中状态图标 */ input[type="radio"]:checked::after { content: ""; position: absolute; left: 3px; top: 3px; width: 8px; height: 8px; border-radius: 50%; background-color: #0078d7; } /* 标签样式 */ label { font-family: var(--pixel-font-12); font-size: calc(var(--base-font-size) * 0.9); margin: 0 10px 0 2px; vertical-align: middle; cursor: pointer; } /* 分页导航 - 复古科幻风格 */ .pagination { display: flex; justify-content: center; align-items: center; margin: 2em 0; font-family: var(--UI-font); font-size: calc(var(--base-font-size) * 0.85); } .pagination a, .pagination span { display: inline-flex; justify-content: center; align-items: center; min-width: 32px; height: 32px; margin: 0 3px; padding: 0 10px; text-align: center; line-height: 1; border: 1px solid #ccc; border-radius: 0; background-color: rgba(240, 245, 250, 0.8); color: #444; text-decoration: none; transition: all 0.2s ease; position: relative; overflow: hidden; } /* 分页导航悬停效果 */ .pagination a:hover { border-color: #999; background-color: rgba(0, 150, 255, 0.1); color: var(--link-color-active); transform: translateY(-1px); box-shadow: 0 2px 4px rgba(0, 0, 0, 0.1); } /* 当前页面 */ .pagination .current { border-color: #666; background-color: rgba(30, 30, 30, 0.8); color: #fff; font-weight: normal; box-shadow: inset 0 1px 3px rgba(0, 0, 0, 0.2); text-shadow: 0 1px 1px rgba(0, 0, 0, 0.5); } /* 下拉菜单 - 复古科幻风格 */ .dropdown { position: relative; display: inline-block; font-family: var(--UI-font); font-size: calc(var(--base-font-size) * 0.9); } .dropdown-toggle { display: inline-flex; align-items: center; padding: 6px 12px; background-color: rgba(240, 245, 250, 0.9); border: 1px solid #ccc; border-radius: 0; cursor: pointer; transition: all 0.2s ease; } .dropdown-toggle::after { content: "▼"; font-size: 0.7em; margin-left: 8px; transition: transform 0.2s ease; } .dropdown-toggle:hover { background-color: rgba(245, 248, 250, 0.95); border-color: #999; } .dropdown-toggle:hover::after { transform: translateY(2px); } .dropdown-menu { position: absolute; top: 100%; left: 0; z-index: 1000; display: none; min-width: 160px; padding: 5px 0; margin: 2px 0 0; background-color: rgba(250, 252, 255, 0.95); border: 1px solid #ccc; border-radius: 0; box-shadow: 0 6px 12px rgba(0, 0, 0, 0.15); } .dropdown-menu.show { display: block; animation: dropdown-fade 0.2s ease-in-out; } @keyframes dropdown-fade { from { opacity: 0; transform: translateY(-10px); } to { opacity: 1; transform: translateY(0); } } .dropdown-item { display: block; padding: 6px 15px; clear: both; text-decoration: none; color: #333; white-space: nowrap; transition: all 0.15s ease; position: relative; } .dropdown-item:hover { background-color: rgba(0, 150, 255, 0.1); color: var(--link-color-active); padding-left: 18px; } .dropdown-divider { height: 1px; margin: 6px 0; background-color: #eee; } /* 终端窗口 - 复古科幻风格 */ .terminal { background-color: var(--terminal-bg); color: var(--console-text-color); font-family: var(--pixel-font-12); padding: 15px; margin: 1.5em 0; border-radius: 3px; border: 1px solid rgba(0, 0, 0, 0.3); box-shadow: inset 0 0 15px rgba(0, 0, 0, 0.3), 0 2px 5px rgba(0, 0, 0, 0.1); position: relative; overflow: hidden; } /* 终端窗口标题栏 */ .terminal::before { content: "TERMINAL"; display: block; position: absolute; top: 0; left: 0; width: 100%; padding: 4px 10px; background: linear-gradient(to bottom, #444, #333); color: #ddd; font-size: 0.8em; text-align: center; border-bottom: 1px solid #222; text-shadow: 0 1px 1px rgba(0, 0, 0, 0.5); } /* 终端内容 */ .terminal-content { margin-top: 25px; line-height: 1.4; overflow-x: auto; white-space: pre-wrap; } /* 终端命令提示符 */ .terminal-prompt { color: #0f0; margin-right: 5px; } /* 终端命令行 */ .terminal-line { margin: 5px 0; word-break: break-all; } /* 终端光标闪烁 */ .terminal-cursor { display: inline-block; width: 0.5em; height: 1em; background-color: var(--console-indicator-color); vertical-align: middle; animation: console-blink 1s infinite; } /* 加载指示器 - 复古科幻风格 */ .loading { display: inline-block; position: relative; width: 80px; height: 20px; margin: 1em auto; text-align: center; } .loading div { display: inline-block; width: 8px; height: 8px; margin: 0 3px; background-color: rgba(0, 200, 100, 0.8); border-radius: 0; animation: loading 1.2s cubic-bezier(0, 0.5, 0.5, 1) infinite; } .loading div:nth-child(1) { animation-delay: -0.24s; } .loading div:nth-child(2) { animation-delay: -0.12s; } .loading div:nth-child(3) { animation-delay: 0; } @keyframes loading { 0% { transform: scaleY(1); background-color: rgba(0, 200, 100, 0.8); } 50% { transform: scaleY(2); background-color: rgba(0, 255, 100, 0.8); } 100% { transform: scaleY(1); background-color: rgba(0, 200, 100, 0.8); } } /* 工具提示 - 复古科幻风格 */ .tooltip { position: relative; display: inline-block; cursor: help; } .tooltip .tooltip-text { visibility: hidden; width: 200px; background-color: rgba(20, 20, 20, 0.9); color: #fff; text-align: center; border-radius: 0; padding: 8px 12px; position: absolute; z-index: 1001; bottom: 125%; left: 50%; margin-left: -100px; font-family: var(--small-font); font-size: var(--small-font-size); line-height: 1.4; opacity: 0; transition: opacity 0.2s, transform 0.2s; transform: translateY(10px); box-shadow: 0 5px 15px rgba(0, 0, 0, 0.2); border: 1px solid #444; text-shadow: none; } /* 工具提示箭头 */ .tooltip .tooltip-text::after { content: ""; position: absolute; top: 100%; left: 50%; margin-left: -5px; border-width: 5px; border-style: solid; border-color: rgba(20, 20, 20, 0.9) transparent transparent transparent; } /* 显示工具提示 */ .tooltip:hover .tooltip-text { visibility: visible; opacity: 1; transform: translateY(0); } /* 徽章 - 复古科幻风格 */ .badge { display: inline-block; padding: 2px 6px; font-size: 0.8em; font-family: var(--UI-font); line-height: 1; text-align: center; white-space: nowrap; vertical-align: middle; background-color: #777; color: #fff; border-radius: 0; margin: 0 3px; border: 1px solid rgba(0, 0, 0, 0.2); box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.2); text-shadow: 0 1px 0 rgba(0, 0, 0, 0.5); } .badge-primary { background-color: #0078d7; } .badge-success { background-color: #5cb85c; } .badge-info { background-color: #5bc0de; } .badge-warning { background-color: #f0ad4e; } .badge-danger { background-color: #d9534f; } /* 进度条 - 复古科幻风格 */ .progress { height: 20px; margin: 1em 0; background-color: rgba(220, 225, 230, 0.8); border-radius: 0; box-shadow: inset 0 1px 3px rgba(0, 0, 0, 0.1); overflow: hidden; border: 1px solid #ccc; position: relative; } .progress-bar { height: 100%; background: repeating-linear-gradient( 45deg, rgba(0, 200, 100, 0.8), rgba(0, 200, 100, 0.8) 10px, rgba(0, 220, 110, 0.9) 10px, rgba(0, 220, 110, 0.9) 20px ); box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.15); transition: width 0.6s ease; position: relative; animation: progress-animation 2s linear infinite; } @keyframes progress-animation { 0% { background-position: 0 0; } 100% { background-position: 40px 0; } } .progress-text { position: absolute; top: 0; left: 0; width: 100%; height: 100%; display: flex; align-items: center; justify-content: center; color: #333; font-family: var(--UI-font); font-size: 0.8em; text-shadow: 0 1px 0 rgba(255, 255, 255, 0.5); } /* 标签页 - 复古科幻风格 */ .tabs { margin: 1.5em 0; border-radius: 0; background-color: rgba(255, 255, 255, 0.9); border: 1px solid #ccc; box-shadow: 0 1px 3px rgba(0, 0, 0, 0.1); } .tabs-nav { display: flex; list-style: none; padding: 0; margin: 0; background-color: rgba(240, 245, 250, 0.8); border-bottom: 1px solid #ccc; } .tabs-nav li { margin: 0; } .tabs-nav a { display: block; padding: 8px 15px; text-decoration: none; color: #555; border-right: 1px solid #ddd; font-family: var(--UI-font); font-size: calc(var(--base-font-size) * 0.9); transition: all 0.2s ease; background: linear-gradient(to bottom, #f5f5f5, #e5e5e5); border-bottom: 3px solid transparent; } .tabs-nav a:hover { background: linear-gradient(to bottom, #fff, #f0f0f0); color: #333; transform: none; box-shadow: none; } .tabs-nav a.active { background: #fff; color: #333; border-bottom: 3px solid var(--crt-glow-color); box-shadow: inset 0 1px 0 rgba(255, 255, 255, 1); } .tabs-content { padding: 15px; border-radius: 0 0 3px 3px; } .tab-pane { display: none; } .tab-pane.active { display: block; animation: fade-in 0.3s ease-in-out; } @keyframes fade-in { from { opacity: 0; } to { opacity: 1; } } /* 卡片 - 复古科幻风格 */ .card { background-color: rgba(255, 255, 255, 0.95); border: 1px solid rgba(0, 0, 0, 0.15); border-radius: 0; margin: 1em 0; box-shadow: var(--box-depth), inset 0 0 10px rgba(0, 255, 100, 0.02); position: relative; overflow: hidden; transition: all 0.3s ease; } .card:hover { transform: translateY(-3px); box-shadow: 0 5px 15px rgba(0, 0, 0, 0.1), inset 0 0 10px rgba(0, 255, 100, 0.04); } .card::before { content: ""; position: absolute; top: 0; left: 0; width: 100%; height: 2px; background: linear-gradient(to right, transparent, var(--crt-glow-color), transparent); } .card-header { background: linear-gradient(to bottom, #f8f9fa, #e8eaec); padding: 10px 15px; border-bottom: 1px solid rgba(0, 0, 0, 0.1); font-family: var(--title-font); font-size: calc(var(--base-font-size) * 1.1); color: #333; text-shadow: 0 1px 0 rgba(255, 255, 255, 0.5), var(--crt-text-shadow); position: relative; } .card-body { padding: 15px; font-family: var(--body-font); } .card-footer { background-color: rgba(245, 248, 250, 0.7); padding: 10px 15px; border-top: 1px solid rgba(0, 0, 0, 0.1); } /* 侧边栏 - 复古科幻风格 */ .sidebar { width: var(--sidebar-width); max-height: var(--sidebar-max-height); margin-top: var(--sidebar-top-offset); background: linear-gradient(135deg, rgba(0, 255, 100, 0.05) 0%, transparent 100%), linear-gradient(to bottom, rgba(220, 230, 240, 0.9), rgba(190, 210, 225, 0.95)); border: 1px solid rgba(0, 0, 0, 0.2); border-radius: 3px; box-shadow: var(--box-depth), inset 0 0 20px rgba(0, 200, 255, 0.07); overflow-y: auto; position: sticky; top: var(--sidebar-top-offset); transition: all 0.3s ease; } .sidebar-header { background: linear-gradient(to bottom, #445, #334); color: #fff; padding: 12px 15px; font-family: var(--title-font); font-size: calc(var(--base-font-size) * 1.1); text-shadow: 0 1px 2px rgba(0, 0, 0, 0.3); text-align: center; border-bottom: 1px solid #223; letter-spacing: 0.05em; position: relative; } .sidebar-header::after { content: ""; position: absolute; bottom: 0; left: 0; width: 100%; height: 1px; background: linear-gradient(to right, transparent, rgba(255, 255, 255, 0.2), transparent); } .sidebar-section { padding: 10px 15px; border-bottom: 1px solid rgba(0, 0, 0, 0.1); } .sidebar-section:last-child { border-bottom: none; } .sidebar-title { font-family: var(--UI-font); font-size: calc(var(--base-font-size) * 0.95); color: #333; margin: 0 0 8px 0; padding-bottom: 5px; border-bottom: 1px dashed rgba(0, 0, 0, 0.1); text-shadow: 0 1px 0 rgba(255, 255, 255, 0.5); } .sidebar-list { list-style: none; margin: 0; padding: 0; } .sidebar-list li { margin: 5px 0; padding: 0; } .sidebar-list a { display: block; padding: 5px 8px; color: var(--link-color); text-decoration: none; font-size: calc(var(--base-font-size) * 0.9); transition: all 0.2s ease; text-shadow: 0 0 2px rgba(0, 100, 255, 0.1); border-left: 2px solid transparent; } .sidebar-list a:hover { background-color: rgba(0, 150, 255, 0.1); color: var(--link-color-active); text-shadow: 0 0 5px rgba(0, 150, 255, 0.3); transform: translateX(2px); border-left: 2px solid var(--crt-glow-color); } .sidebar-list a.active { background-color: rgba(0, 200, 100, 0.1); color: #008851; border-left: 2px solid #008851; font-weight: normal; } /* 弹窗对话框 - 复古科幻风格 */ .modal { position: fixed; top: 0; left: 0; width: 100%; height: 100%; background-color: rgba(0, 0, 0, 0.5); display: flex; justify-content: center; align-items: center; z-index: 1050; opacity: 0; visibility: hidden; transition: all 0.3s ease; } .modal.show { opacity: 1; visibility: visible; } .modal-dialog { width: 100%; max-width: 500px; margin: 1.75rem; background-color: rgba(245, 250, 255, 0.95); border: 1px solid rgba(0, 0, 0, 0.2); border-radius: 0; box-shadow: 0 10px 25px rgba(0, 0, 0, 0.3), inset 0 0 30px rgba(0, 255, 100, 0.05); transform: translateY(-50px); transition: transform 0.3s ease; position: relative; overflow: hidden; } .modal.show .modal-dialog { transform: translateY(0); } .modal-header { display: flex; align-items: center; justify-content: space-between; padding: 12px 15px; border-bottom: 1px solid #e9ecef; background: linear-gradient(to bottom, #f8f9fa, #e8eaec); } .modal-title { margin: 0; font-family: var(--title-font); font-size: calc(var(--base-font-size) * 1.1); color: #333; text-shadow: 0 1px 0 rgba(255, 255, 255, 0.5), var(--crt-text-shadow); } .modal-close { padding: 0; background-color: transparent; border: 0; float: right; font-size: 1.5rem; font-weight: 700; line-height: 1; color: #000; text-shadow: 0 1px 0 #fff; opacity: 0.5; cursor: pointer; } .modal-close:hover { opacity: 0.75; text-shadow: 0 0 5px rgba(0, 0, 0, 0.2); } .modal-body { padding: 15px; font-family: var(--body-font); } .modal-footer { display: flex; align-items: center; justify-content: flex-end; padding: 12px 15px; border-top: 1px solid #e9ecef; background-color: rgba(245, 248, 250, 0.7); } .modal-footer > button { margin-left: 5px; } /* 自定义滚动条 */ .custom-scrollbar { scrollbar-width: thin; scrollbar-color: #999 #f5f5f5; } .custom-scrollbar::-webkit-scrollbar { width: 8px; height: 8px; } .custom-scrollbar::-webkit-scrollbar-track { background: rgba(0, 0, 0, 0.03); border-radius: 0; } .custom-scrollbar::-webkit-scrollbar-thumb { background: repeating-linear-gradient( to bottom, #aaa 0px, #aaa 2px, #999 3px, #999 5px ); border-radius: 0; border: 1px solid rgba(0, 0, 0, 0.1); } /* 打字机效果文本 */ .typewriter { overflow: hidden; white-space: nowrap; border-right: 2px solid var(--console-text-color); animation: typing 3.5s steps(40, end), blink-caret 0.75s step-end infinite; display: inline-block; } @keyframes typing { from { width: 0 } to { width: 100% } } @keyframes blink-caret { from, to { border-color: transparent } 50% { border-color: var(--console-text-color) } } /* 折叠面板 - 复古科幻风格 */ .accordion { margin: 1.5em 0; border: 1px solid #ccc; border-radius: 0; background-color: rgba(255, 255, 255, 0.9); box-shadow: 0 1px 3px rgba(0, 0, 0, 0.1); } .accordion-item { border-bottom: 1px solid #ddd; } .accordion-item:last-child { border-bottom: none; } .accordion-header { padding: 0; margin: 0; } .accordion-button { display: block; width: 100%; padding: 12px 15px; background: linear-gradient(to bottom, #f8f9fa, #e8eaec); color: #333; text-align: left; border: none; cursor: pointer; font-family: var(--title-font); font-size: calc(var(--base-font-size) * 1); font-weight: normal; text-shadow: 0 1px 0 rgba(255, 255, 255, 0.5); position: relative; transition: all 0.3s ease; } .accordion-button::after { content: "▼"; position: absolute; right: 15px; top: 50%; transform: translateY(-50%); font-size: 0.7em; transition: transform 0.3s ease; } .accordion-button.collapsed::after { transform: translateY(-50%) rotate(-90deg); } .accordion-button:hover { background: linear-gradient(to bottom, #fff, #f0f0f0); } .accordion-body { padding: 15px; display: none; font-family: var(--body-font); } .accordion-body.show { display: block; } /* 文章卡片 - 复古科幻风格 */ .article-card { display: flex; flex-direction: column; margin: 1.5em 0; background-color: rgba(255, 255, 255, 0.95); border: 1px solid rgba(0, 0, 0, 0.15); border-radius: 0; box-shadow: var(--box-depth), inset 0 0 10px rgba(0, 255, 100, 0.02); overflow: hidden; transition: all 0.3s ease; position: relative; } .article-card::before { content: ""; position: absolute; top: 0; left: 0; width: 100%; height: 2px; background: linear-gradient(to right, transparent, var(--crt-glow-color), transparent); } .article-card:hover { transform: translateY(-3px); box-shadow: 0 5px 15px rgba(0, 0, 0, 0.1), inset 0 0 10px rgba(0, 255, 100, 0.04); } .article-header { padding: 15px; border-bottom: 1px solid rgba(0, 0, 0, 0.1); } .article-title { margin: 0 0 10px 0; font-family: var(--title-font); font-size: calc(var(--base-font-size) * 1.3); color: #333; text-shadow: var(--crt-text-shadow); } .article-meta { display: flex; align-items: center; font-family: var(--small-font); font-size: var(--small-font-size); color: #777; } .article-author { margin-right: 15px; } .article-date { margin-right: 15px; } .article-thumbnail { width: 100%; height: 200px; object-fit: cover; border-bottom: 1px solid rgba(0, 0, 0, 0.1); } .article-content { padding: 15px; flex: 1; font-family: var(--body-font); } .article-footer { display: flex; align-items: center; justify-content: space-between; padding: 10px 15px; background-color: rgba(245, 248, 250, 0.7); border-top: 1px solid rgba(0, 0, 0, 0.1); } .article-tags { display: flex; flex-wrap: wrap; gap: 5px; } .article-tag { display: inline-block; padding: 2px 6px; font-size: 0.8em; font-family: var(--UI-font); background-color: rgba(0, 150, 255, 0.1); color: var(--link-color); border-radius: 0; border: 1px solid rgba(0, 150, 255, 0.2); transition: all 0.2s ease; } .article-tag:hover { background-color: rgba(0, 150, 255, 0.2); color: var(--link-color-active); transform: translateY(-1px); } /* 网格布局 - 复古科幻风格 */ .grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(250px, 1fr)); gap: 20px; margin: 1.5em 0; } .grid-item { background-color: rgba(255, 255, 255, 0.95); border: 1px solid rgba(0, 0, 0, 0.15); border-radius: 0; padding: 15px; box-shadow: var(--box-depth); transition: all 0.3s ease; position: relative; overflow: hidden; } .grid-item::before { content: ""; position: absolute; top: 0; left: 0; width: 100%; height: 2px; background: linear-gradient(to right, transparent, var(--crt-glow-color), transparent); opacity: 0; transition: opacity 0.3s ease; } .grid-item:hover { transform: translateY(-3px); box-shadow: 0 5px 15px rgba(0, 0, 0, 0.1); } .grid-item:hover::before { opacity: 1; } /* 按钮组 - 复古科幻风格 */ .btn-group { display: inline-flex; vertical-align: middle; } .btn-group button { margin: 0; border-radius: 0; } .btn-group button:not(:first-child) { border-left: none; } .btn-group button:first-child { border-top-left-radius: 0; border-bottom-left-radius: 0; } .btn-group button:last-child { border-top-right-radius: 0; border-bottom-right-radius: 0; } /* 通知横幅 - 复古科幻风格 */ .banner { display: flex; align-items: center; margin: 1.5em 0; padding: 12px 15px; background-color: rgba(245, 248, 250, 0.9); border: 1px solid rgba(0, 0, 0, 0.15); border-radius: 0; box-shadow: var(--box-depth); position: relative; overflow: hidden; } .banner::before { content: ""; position: absolute; top: 0; left: 0; width: 100%; height: 2px; background: linear-gradient(to right, transparent, var(--crt-glow-color), transparent); } .banner-icon { margin-right: 15px; font-size: 1.5em; color: #777; } .banner-content { flex: 1; font-family: var(--body-font); } .banner-title { font-family: var(--title-font); font-size: calc(var(--base-font-size) * 1.1); margin: 0 0 5px 0; color: #333; } .banner-text { margin: 0; color: #555; } .banner-close { margin-left: 15px; cursor: pointer; color: #777; font-size: 1.2em; transition: all 0.2s ease; } .banner-close:hover { color: #333; transform: scale(1.1); } /* 主题变换按钮 - 复古科幻风格 */ .theme-switch { position: fixed; bottom: 20px; right: 20px; z-index: 1000; background-color: rgba(20, 20, 20, 0.8); color: #fff; border: none; border-radius: 0; padding: 8px 12px; font-family: var(--UI-font); font-size: calc(var(--base-font-size) * 0.8); cursor: pointer; box-shadow: 0 2px 5px rgba(0, 0, 0, 0.2); transition: all 0.2s ease; display: flex; align-items: center; gap: 5px; } .theme-switch-icon { font-size: 1.2em; } .theme-switch:hover { background-color: rgba(30, 30, 30, 0.9); transform: translateY(-2px); box-shadow: 0 4px 8px rgba(0, 0, 0, 0.3); } /* 页脚 - 复古科幻风格 */ .footer { margin-top: 3rem; padding: 2rem 0; background-color: rgba(240, 245, 250, 0.9); border-top: 1px solid rgba(0, 0, 0, 0.1); font-family: var(--small-font); font-size: var(--small-font-size); text-align: center; position: relative; } .footer::before { content: ""; position: absolute; top: 0; left: 0; width: 100%; height: 1px; background: linear-gradient(to right, transparent, rgba(255, 255, 255, 0.8), transparent); } .footer-links { display: flex; justify-content: center; flex-wrap: wrap; gap: 20px; margin-bottom: 1rem; } .footer-link { color: var(--link-color); text-decoration: none; transition: all 0.2s ease; } .footer-link:hover { color: var(--link-color-active); text-shadow: 0 0 3px rgba(0, 150, 255, 0.3); } .footer-copyright { color: #777; margin: 0; } /* 媒体查询 - 响应式布局 */ @media screen and (max-width: 768px) { :root { --base-font-size: 14px; --small-font-size: 12px; } body { padding: 1rem; margin: 0.5rem; } .sidebar { width: 100%; max-height: none; margin-top: 1rem; position: static; } .grid { grid-template-columns: repeat(auto-fill, minmax(200px, 1fr)); } .notaninfobox { float: none; width: 100%; margin: 1em 0; } .modal-dialog { margin: 1rem; max-width: 100%; } } @media screen and (min-width: 1440px) { :root { --base-font-size: 16px; --small-font-size: 14px; } body { width: 80%; max-width: 1400px; } } /* 打印样式优化 */ @media print { :root { --crt-effects-display: none; } html, body { background: #fff !important; color: #000 !important; } body::before, body::after, .crt-primary-scanline, .crt-secondary-scanline, .crt-fast-scanline, .crt-scanline-shadow, .crt-curve-effect, .crt-monitor-frame, .crt-reflection, .theme-switch { display: none !important; } * { text-shadow: none !important; box-shadow: none !important; animation: none !important; border-color: #ddd !important; } a { color: #000 !important; text-decoration: underline !important; } a::before { display: none !important; } pre, code { border: 1px solid #ddd; background: #f8f8f8 !important; } .notaninfobox, .card, .article-card, .sidebar, .banner, .modal { box-shadow: none !important; border: 1px solid #ddd !important; } } /* 为JS操作预留的类 */ .hidden { display: none !important; } .visible { display: block !important; } .invisible { visibility: hidden !important; } .transparent { opacity: 0 !important; } .no-transitions { transition: none !important; } /* 页面加载后自动添加CRT效果元素和功能性JS */ document.addEventListener('DOMContentLoaded', function() { // 创建一个隐藏/显示CRT效果的按钮 var toggleButton = document.createElement('button'); toggleButton.innerHTML = '切换CRT效果'; toggleButton.className = 'theme-switch'; toggleButton.innerHTML = '<span class="theme-switch-icon">📺</span> CRT效果'; // 添加事件监听 toggleButton.addEventListener('click', function() { var root = document.documentElement; var currentDisplay = getComputedStyle(root).getPropertyValue('--crt-effects-display').trim(); if (currentDisplay === 'block' || currentDisplay === '') { root.style.setProperty('--crt-effects-display', 'none'); toggleButton.innerHTML = '<span class="theme-switch-icon">📺</span> 显示CRT'; } else { root.style.setProperty('--crt-effects-display', 'block'); toggleButton.innerHTML = '<span class="theme-switch-icon">📺</span> 隐藏CRT'; } }); document.body.appendChild(toggleButton); // 添加CRT效果元素 var body = document.querySelector('body'); // CRT曲面效果 var crtCurveEffect = document.createElement('div'); crtCurveEffect.className = 'crt-curve-effect'; body.appendChild(crtCurveEffect); // CRT显示器边框 var crtMonitorFrame = document.createElement('div'); crtMonitorFrame.className = 'crt-monitor-frame'; body.appendChild(crtMonitorFrame); // CRT反光效果 var crtReflection = document.createElement('div'); crtReflection.className = 'crt-reflection'; body.appendChild(crtReflection); // 主扫描线 var primaryScanline = document.createElement('div'); primaryScanline.className = 'crt-primary-scanline'; body.appendChild(primaryScanline); // 副扫描线 var secondaryScanline = document.createElement('div'); secondaryScanline.className = 'crt-secondary-scanline'; body.appendChild(secondaryScanline); // 快速扫描线 var fastScanline = document.createElement('div'); fastScanline.className = 'crt-fast-scanline'; body.appendChild(fastScanline); // 扫描线阴影 var scanlineShadow = document.createElement('div'); scanlineShadow.className = 'crt-scanline-shadow'; body.appendChild(scanlineShadow); // 标签页功能 var tabLinks = document.querySelectorAll('.tabs-nav a'); tabLinks.forEach(function(link) { link.addEventListener('click', function(e) { e.preventDefault(); // 移除所有活动类 tabLinks.forEach(function(l) { l.classList.remove('active'); }); // 添加活动类到当前链接 this.classList.add('active'); // 获取目标面板ID var targetId = this.getAttribute('href').substring(1); // 隐藏所有面板 var tabPanes = document.querySelectorAll('.tab-pane'); tabPanes.forEach(function(pane) { pane.classList.remove('active'); }); // 显示目标面板 document.getElementById(targetId).classList.add('active'); }); }); // 折叠面板功能 var accordionButtons = document.querySelectorAll('.accordion-button'); accordionButtons.forEach(function(button) { button.addEventListener('click', function() { this.classList.toggle('collapsed'); var target = this.getAttribute('data-target'); var body = document.querySelector(target); if (body.classList.contains('show')) { body.classList.remove('show'); } else { body.classList.add('show'); } }); }); // 实现打字机效果 var typewriterElements = document.querySelectorAll('.typewriter'); typewriterElements.forEach(function(element) { var text = element.textContent; element.innerHTML = ""; element.style.width = "0"; var i = 0; var speed = 50; // 打字速度,毫秒每字符 function typeWriter() { if (i < text.length) { element.innerHTML += text.charAt(i); i++; setTimeout(typeWriter, speed); } } // 文本可见后开始打字效果 var observer = new IntersectionObserver(function(entries) { entries.forEach(function(entry) { if (entry.isIntersecting) { typeWriter(); observer.unobserve(element); } }); }); observer.observe(element); }); });
返回
Citizen.css
。
工具
链入页面
相关更改
特殊页面
页面信息
Cargo数据