MediaWiki:Common.css:修订间差异
来自Age Of History 2 Chinese Wiki
无编辑摘要 |
无编辑摘要 |
||
第3行: | 第3行: | ||
@import url("https://fonts.googleapis.com/css2?family=Press+Start+2P&display=swap"); | @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-16px.css"); | ||
@import url("https://fastly.jsdelivr.net/gh/hoah2333/Fonts@main/Typeface-VonwaonBitmap-12px.css"); | @import url("https://fastly.jsdelivr.net/gh/hoah2333/Fonts@main/Typeface-VonwaonBitmap-12px.css"); | ||
:root { | :root { | ||
第69行: | 第69行: | ||
--custom-table-choice-yes: #005600; | --custom-table-choice-yes: #005600; | ||
--custom-table-choice-yes-background: #c6efce; | --custom-table-choice-yes-background: #c6efce; | ||
--custom-table-header-background: # | --custom-table-header-background: #eaecf0; | ||
--custom-topic-30-days: #bbb; | --custom-topic-30-days: #bbb; | ||
--custom-topic-7-days: #ddd; | --custom-topic-7-days: #ddd; | ||
/* CRT效果相关变量 - | /* CRT效果相关变量 - 精细调整 */ | ||
--crt-scanline | --crt-primary-scanline-alpha: 0.12; /* 主扫描线透明度 */ | ||
--crt-scanline | --crt-secondary-scanline-alpha: 0.08; /* 副扫描线透明度 */ | ||
--crt-scanline | --crt-fast-scanline-alpha: 0.25; /* 快速扫描线透明度 */ | ||
--crt-flicker-alpha: 0. | --crt-flicker-alpha: 0.04; /* 屏幕闪烁强度 */ | ||
--crt-noise-alpha: 0.03; | --crt-noise-alpha: 0.03; /* 噪点强度 */ | ||
--crt-glow-radius: 0. | --crt-glow-radius: 0.08em; | ||
--crt-glow-color: rgba( | --crt-glow-color: rgba(0, 255, 100, 0.2); /* 辉光颜色和强度 */ | ||
--crt-text-shadow: 0 0 var(--crt-glow-radius) var(--crt-glow-color); | --crt-text-shadow: 0 0 var(--crt-glow-radius) var(--crt-glow-color); | ||
--crt- | --crt-vignette-opacity: 0.12; /* 暗角效果强度 */ | ||
/* 网格背景相关变量 */ | /* 网格背景相关变量 */ | ||
--grid-color: rgba(0, 0, 0, 0. | --grid-color: rgba(0, 0, 0, 0.08); | ||
--grid-size: | --grid-size: 40px; | ||
--grid-line-width: 1px; | --grid-line-width: 1px; | ||
/* 字体设置 - | /* 字体设置 - 只使用VonwaonBitmap */ | ||
--font- | --pixel-font-16: 'VonwaonBitmap 16px', monospace; | ||
--font- | --pixel-font-12: 'VonwaonBitmap 12px', monospace; | ||
--font- | --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 | --base-font-size: 15px; | ||
-- | --small-font-size: 13px; | ||
--code- | --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); | |||
} | } | ||
/* | /* CRT效果动画 */ | ||
@keyframes flicker { | @keyframes flicker { | ||
0%, 100% { opacity: 0. | 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; } | |||
} | } | ||
@keyframes scanline | /* 主扫描线动画 - 更慢、更明显 */ | ||
0% { | @keyframes primary-scanline { | ||
100% { | 0% { transform: translateY(-20px); } | ||
100% { transform: translateY(100vh); } | |||
} | } | ||
@keyframes scanline | /* 副扫描线动画 - 中速移动 */ | ||
0% { | @keyframes secondary-scanline { | ||
100% { | 0% { transform: translateY(-100vh); } | ||
100% { transform: translateY(100vh); } | |||
} | } | ||
@keyframes scanline | /* 快速扫描线动画 - 快速闪过,更加随机 */ | ||
0% { | @keyframes fast-scanline { | ||
0%, 5% { opacity: 0; transform: translateY(-100vh); } | |||
8% { opacity: var(--crt-fast-scanline-alpha); } | |||
25% { opacity: var(--crt-fast-scanline-alpha); } | |||
35% { opacity: 0; } | |||
100% { opacity: 0; transform: translateY(100vh); } | |||
} | } | ||
@keyframes crt-on { | @keyframes crt-on { | ||
0% { opacity: 0; filter: brightness(5) saturate(0) | 0% { opacity: 0; filter: brightness(5) saturate(0); } | ||
10% { opacity: 0.3; filter: brightness(3) saturate(0.2); } | |||
100% { opacity: 1; filter: brightness(1) saturate | 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); } | |||
} | } | ||
/* 全局和背景样式 - | /* 全局和背景样式 - 增强质感 */ | ||
html { | html { | ||
min-height: 100%; | min-height: 100%; | ||
background-color: # | background-color: #ffffff; | ||
background-image: | background-image: | ||
/* 网格线 */ | /* 网格线 */ | ||
linear-gradient(var(--grid-color) var(--grid-line-width), transparent var(--grid-line-width)), | 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)), | 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=' | 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-size: var(--grid-size) var(--grid-size), var(--grid-size) var(--grid-size), auto; | ||
background-position: center center; | background-position: center center; | ||
animation: crt-on 2s ease-out; | |||
overflow-x: hidden; /* 防止水平滚动条出现 */ | |||
} | } | ||
body { | body { | ||
font-family: var(--font | font-family: var(--body-font); | ||
font-size: | font-size: var(--base-font-size); | ||
line-height: 1. | line-height: 1.65; | ||
color: # | color: #222; | ||
position: relative; | position: relative; | ||
min-height: calc(100vh - 2rem); | min-height: calc(100vh - 2rem); | ||
margin: 1rem; | margin: 1rem; | ||
padding: 1. | padding: 1.5rem; | ||
background-color: rgba( | background-color: rgba(255, 255, 255, var(--glass-opacity)); | ||
border: 1px solid var(- | border-radius: 4px; | ||
border: 1px solid var(--border-shine); | |||
box-shadow: | box-shadow: | ||
0 3px | var(--box-depth), | ||
inset 0 | 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; | |||
animation: | overflow: hidden; /* 隐藏超出部分,配合扫描线 */ | ||
backdrop-filter: blur(var(--glass-blur)); /* 支持的浏览器会有磨砂玻璃效果 */ | |||
overflow: hidden; /* | -webkit-backdrop-filter: blur(var(--glass-blur)); | ||
} | } | ||
/* | /* 添加暗角效果 - 增强CRT显示器质感 */ | ||
body::before | body::before { | ||
content: ""; | content: ""; | ||
display: var(-- | display: var(--crt-effects-display); | ||
position: | position: fixed; | ||
top: 0; | top: 0; | ||
left: 0; | left: 0; | ||
第190行: | 第207行: | ||
height: 100%; | height: 100%; | ||
pointer-events: none; | pointer-events: none; | ||
z-index: 1; /* | z-index: 9998; | ||
background: radial-gradient( | |||
circle at center, | |||
transparent 40%, | |||
rgba(0, 0, 0, var(--crt-vignette-opacity)) 140% | |||
); | |||
mix-blend-mode: multiply; | |||
} | |||
/* CRT扫描线效果 - 使用新的三种不同类型的扫描线 */ | |||
/* 1. 主扫描线 - 较宽的水平线 */ | |||
.crt-primary-scanline { | |||
content: ""; | |||
display: var(--crt-effects-display); | |||
position: fixed; | |||
top: 0; | |||
left: 0; | |||
width: 100%; | |||
height: 8px; /* 主扫描线较宽 */ | |||
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 12s 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; | |||
background-size: 100% | |||
opacity: 0.7; | opacity: 0.7; | ||
animation: secondary-scanline 18s linear infinite; | |||
} | } | ||
/* | /* 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% | |||
); | |||
animation: | pointer-events: none; | ||
z-index: 9996; | |||
opacity: 0; | |||
animation: fast-scanline 2.5s cubic-bezier(0.15, 0.85, 0.5, 1) infinite; | |||
} | } | ||
/* 标题样式 - 只使用VonwaonBitmap 16px字体 */ | |||
/* 标题样式 - | |||
h1, h2, h3, h4, h5, h6 { | h1, h2, h3, h4, h5, h6 { | ||
font-family: var(--font | font-family: var(--title-font); | ||
font-size: calc(var(-- | font-size: calc(var(--base-font-size) * var(--title-scale)); | ||
font-weight: normal; | font-weight: normal; | ||
text-shadow: var(--crt-text-shadow), 0 | text-shadow: var(--crt-text-shadow), | ||
letter-spacing: 0. | 0 1px 1px rgba(0, 0, 0, 0.1); | ||
letter-spacing: 0.03em; | |||
position: relative; | position: relative; | ||
margin-top: | margin-top: 1.8em; | ||
margin-bottom: | margin-bottom: 1em; | ||
padding-bottom: 0.5em; | padding-bottom: 0.5em; | ||
border-bottom: 1px solid rgba(0, 0, 0, 0.1); | |||
border-bottom: 1px solid rgba( | color: #111; | ||
line-height: 1.5; | |||
} | } | ||
h1::after, h2::after, h3::after { | |||
h1::after, h2::after, h3::after { content: | content: ""; | ||
position: absolute; | |||
bottom: -1px; | |||
left: 0; | |||
width: 100%; | |||
height: 1px; | |||
background: linear-gradient( | |||
to right, | |||
var(--crt-glow-color), | |||
transparent 90% | |||
); | |||
} | |||
body h1 { | |||
font-size: calc(var(--base-font-size) * 1.7); | |||
text-transform: uppercase; | |||
padding-left: 10px; | |||
border-left: 3px solid var(--crt-glow-color); | |||
} | |||
/* 链接样式 - | h2 { font-size: calc(var(--base-font-size) * 1.5); } | ||
h3 { font-size: calc(var(--base-font-size) * 1.3); } | |||
h4 { font-size: calc(var(--base-font-size) * 1.2); } | |||
h5, h6 { font-size: calc(var(--base-font-size) * 1.1); } | |||
/* 链接样式 - 增强质感 */ | |||
a { | a { | ||
color: | color: var(--link-color); | ||
text-decoration: none; | text-decoration: none; | ||
position: relative; | position: relative; | ||
transition: | transition: all 0.25s ease; | ||
padding: | padding: 1px 3px; | ||
border-radius: | border-radius: 2px; | ||
text-shadow: var(-- | text-shadow: 0 0 3px rgba(0, 100, 255, 0.15); | ||
font-family: var(--pixel-font-16); | |||
} | } | ||
a:hover { | a:hover { | ||
color: | color: var(--link-color-active); | ||
background-color: rgba( | background-color: rgba(250, 167, 0, 0.1); | ||
text-shadow: 0 0 | 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); | |||
} | } | ||
a.new { | a.new { | ||
color: # | color: #ba0000; | ||
text-shadow: 0 0 3px rgba( | text-shadow: 0 0 3px rgba(186, 0, 0, 0.2); | ||
} | } | ||
a.new:hover { | a.new:hover { | ||
background-color: rgba(186, 0, 0, 0.1); | |||
background-color: rgba( | text-shadow: 0 0 var(--crt-glow-radius) rgba(186, 0, 0, 0.4); | ||
text-shadow: 0 0 | |||
} | } | ||
第301行: | 第383行: | ||
margin: 0 0 1em 1em; | margin: 0 0 1em 1em; | ||
width: 350px; | width: 350px; | ||
font-size: calc(var(-- | font-size: calc(var(--base-font-size) * 0.9); | ||
font-family: var(--small-font); | |||
background-color: rgba(248, 249, 250, 0.95); | |||
float: right; | float: right; | ||
border: 1px solid rgba( | border: 1px solid rgba(0, 0, 0, 0.15); | ||
padding: | padding: 0; | ||
overflow: auto; | overflow: auto; | ||
z-index: 1; | z-index: 1; | ||
overflow-wrap: anywhere; | overflow-wrap: anywhere; | ||
box-shadow: | box-shadow: | ||
2px 2px 5px rgba(0, 0, 0, 0.1), | |||
inset 0 | inset 0 0 10px rgba(0, 255, 100, 0.04); | ||
animation: flicker 80s infinite alternate; | |||
animation: flicker | border-radius: 3px; | ||
border-radius: | |||
} | } | ||
.notaninfobox > .infobox-title { | .notaninfobox > .infobox-title { | ||
font-family: var(- | font-family: var(--title-font); | ||
font-weight: normal; | font-weight: normal; | ||
text-align: center; | text-align: center; | ||
background: linear-gradient(to bottom, | font-size: 110%; | ||
color: # | background: linear-gradient(to bottom, #d5e5fb, var(--custom-mcwiki-header-color)); | ||
text-shadow: var(--crt-text-shadow); | color: #333; | ||
padding: | text-shadow: 0 1px 1px rgba(255, 255, 255, 0.5), var(--crt-text-shadow); | ||
border-bottom: 1px solid rgba( | padding: 8px 4px; | ||
border-bottom: 1px solid rgba(0, 0, 0, 0.15); | |||
position: relative; | |||
overflow: hidden; | |||
} | } | ||
.infobox- | /* 给标题添加光泽效果 */ | ||
.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; | |||
} | } | ||
@keyframes shine { | |||
0% { left: -150%; } | |||
30% { left: -150%; } | |||
60% { left: 150%; } | |||
100% { left: 150%; } | |||
} | } | ||
.notaninfobox .infobox-row .infobox-row-label { | |||
.infobox- | font-family: var(--UI-font); | ||
font-weight: 600; | |||
color: #444; | |||
text-shadow: none; | |||
letter-spacing: 0.03em; | |||
} | } | ||
/* 表格样式 - 增强质感 */ | |||
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); | |||
} | } | ||
table caption { | |||
font-family: var(--title-font); | |||
font-size: calc(var(--base-font-size) * 1.05); | |||
padding: 8px; | |||
font-weight: normal; | |||
text-shadow: var(--crt-text-shadow); | |||
} | } | ||
table th { | |||
. | background: linear-gradient(to bottom, #f8f9fa, var(--custom-table-header-background)); | ||
padding: | 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: 10px 14px; | |||
border-bottom: 2px solid rgba(0, 0, 0, 0.1); | |||
} | } | ||
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); | |||
background-color: rgba( | |||
} | } | ||
table tr:hover td { | |||
color: | background-color: rgba(0, 255, 100, 0.08); | ||
} | } | ||
/* | /* 代码样式 - 增强科技感 */ | ||
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: | border: 1px solid #d0d0d0; | ||
padding: 0.3em 0.5em; | |||
text-shadow: none; | |||
border-radius: 3px; | |||
color: #1a1a1a; | |||
position: relative; | |||
} | } | ||
. | pre { | ||
padding: 1em; | |||
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; | |||
} | } | ||
/* 添加代码行号 */ | |||
pre code { | |||
display: block; | |||
position: relative; | |||
background: transparent; | |||
border: none; | |||
box-shadow: none; | |||
padding: 0; | |||
counter-increment: line; | |||
} | } | ||
. | pre code::before { | ||
color: # | content: counter(line); | ||
display: inline-block; | |||
width: 1.5em; | |||
margin-right: 1em; | |||
color: #888; | |||
text-align: right; | |||
user-select: none; | |||
} | } | ||
/* 确保文本内容清晰可读 */ | |||
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); | |||
font- | |||
} | } | ||
/* 图片效果 - 增强质感 */ | |||
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); /* 轻微增强对比度 */ | |||
} | } | ||
. | 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); | |||
} | } | ||
/* 滚动条样式 - 像素风格 */ | |||
::-webkit-scrollbar { | |||
width: 12px; | |||
height: 12px; | |||
} | } | ||
::-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 | |||
); | |||
} | } | ||
/* 引用块样式 */ | |||
margin | blockquote { | ||
border-left: 3px solid var(--crt-glow-color); | |||
margin: 1em 0; | |||
padding: 0.5em 1em; | |||
background: rgba(240, 240, 240, 0.5); | |||
position: relative; | |||
font-family: var(--body-font); | |||
} | } | ||
blockquote::before { | |||
content: """; | |||
position: absolute; | |||
top: 0; | |||
left: 10px; | |||
font-size: 2em; | |||
color: rgba(0, 0, 0, 0.1); | |||
font-family: serif; | |||
font- | |||
color: | |||
font-family: | |||
} | } | ||
/* 按钮样式 - | /* 按钮样式 - 像素风格 */ | ||
.collapseButton { | .collapseButton, button, .mw-ui-button, input[type="button"], input[type="submit"] { | ||
font-family: var(--font | font-family: var(--UI-font); | ||
font-size: calc(var(-- | font-size: calc(var(--base-font-size) * 0.85); | ||
padding: 4px 10px; | padding: 4px 10px; | ||
border: | border: 2px solid #666; | ||
border- | border-bottom: 4px solid #444; | ||
border-right: 4px solid #444; | |||
border-radius: 0; | |||
background: #ddd; | |||
color: #333; | |||
text-transform: uppercase; | |||
cursor: pointer; | cursor: pointer; | ||
transition: all 0.15s ease; | transition: all 0.15s ease; | ||
text-shadow: 0 1px 0 rgba(255, 255, 255, 0.5); | |||
margin: 2px 4px; | |||
position: relative; | |||
text-align: center; | |||
} | } | ||
.collapseButton:hover { | .collapseButton:hover, button:hover, .mw-ui-button:hover, input[type="button"]:hover, input[type="submit"]:hover { | ||
background: | background: #eee; | ||
border-color: | border-color: #777; | ||
color: # | border-bottom-color: #555; | ||
border-right-color: #555; | |||
transform: translateY(-1px); | |||
} | } | ||
.collapseButton:active { | .collapseButton:active, button:active, .mw-ui-button:active, input[type="button"]:active, input[type="submit"]:active { | ||
background: | background: #ccc; | ||
border: 2px solid #444; | |||
border-top: 4px solid #666; | |||
border-left: 4px solid #666; | |||
transform: translateY(1px); | |||
text-shadow: none; | text-shadow: none; | ||
} | } | ||
第544行: | 第668行: | ||
} | } | ||
/* | /* 边栏样式 - 复古科幻风格 */ | ||
. | .side-block { | ||
background: | |||
-- | linear-gradient(135deg, rgba(0, 255, 100, 0.05) 0%, transparent 100%), | ||
linear-gradient(to bottom, rgba(220, 230, 240, 0.85), rgba(190, 210, 225, 0.95)); | |||
- | border: 1px solid rgba(0, 0, 0, 0.15); | ||
border-radius: 0; | |||
margin: 0.5rem 0.5rem 1rem 0; | |||
- | padding: 0; | ||
box-shadow: | |||
var(--box-depth), | |||
inset 0 0 20px rgba(0, 200, 255, 0.07); | |||
font-family: var(--UI-font); | |||
position: relative; | |||
overflow: hidden; | |||
} | } | ||
. | .side-block::before { | ||
content: ""; | |||
position: absolute; | |||
top: 0; | |||
left: 0; | |||
width: 100%; | |||
height: 2px; | |||
background: linear-gradient(to right, transparent, var(--crt-glow-color), transparent); | |||
} | } | ||
.side-block::after { | |||
content: ""; | |||
position: absolute; | |||
bottom: 0; | |||
left: 0; | |||
width: 100%; | |||
height: 1px; | |||
background: linear-gradient(to right, transparent, rgba(0, 0, 0, 0.1), transparent); | |||
} | } | ||
.side-block .heading { | |||
font-family: var(--title-font); | |||
color: var(-- | font-size: calc(var(--base-font-size) * 0.95); | ||
color: #222; | |||
text-shadow: 0 1px 0 rgba(255, 255, 255, 0.5), var(--crt-text-shadow); | |||
padding: 0.5rem 0.7rem; | |||
border-bottom: 1px solid rgba(0, 0, 0, 0.15); | |||
background: linear-gradient(to bottom, #e8f0f8, #c8d8e8); | |||
letter-spacing: 0.05em; | |||
position: relative; | |||
text-transform: uppercase; | |||
} | } | ||
.side-block .heading::after { | |||
content: ""; | |||
position: absolute; | |||
bottom: 0; | |||
left: 0; | |||
width: 100%; | |||
height: 1px; | |||
background: linear-gradient(to right, rgba(255, 255, 255, 0.7), rgba(255, 255, 255, 0)); | |||
} | } | ||
.side-block .heading p { | |||
margin: 0; | |||
padding: 0; | |||
} | } | ||
.side-block div.menu-item { | |||
border-bottom: 1px solid rgba(0, 0, 0, 0.07); | |||
border-top: 1px solid rgba(255, 255, 255, 0.7); | |||
position: relative; | |||
} | } | ||
.side-block div.menu-item:last-child { | |||
border-bottom: none; | |||
} | } | ||
.side-block div.menu-item a { | |||
display: block; | |||
-- | padding: 0.5rem 0.7rem; | ||
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); | |||
position: relative; | |||
overflow: hidden; | |||
} | } | ||
.side-block div.menu-item 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); | ||
color: | |||
} | } | ||
.side-block div.menu-item a::before { | |||
content: '►'; | |||
display: inline-block; | |||
margin-right: 5px; | |||
font-size: 0.8em; | |||
opacity: 0; | |||
transition: all 0.2s ease; | |||
transform: translateX(-5px); | |||
} | } | ||
.side-block div.menu-item a:hover::before { | |||
opacity: 0.7; | |||
transform: translateX(0); | |||
} | } | ||
/* CRT页面启动效果 - 暗角、闪烁和亮线 */ | |||
.crt-startup-effect { | |||
position: fixed; | |||
top: 0; | |||
left: 0; | |||
width: 100%; | |||
height: 100%; | |||
background-color: #000; | |||
z-index: 10000; | |||
opacity: 1; | |||
pointer-events: none; | |||
animation: crt-startup-fade 2.5s forwards; | |||
} | } | ||
@keyframes crt-startup-fade { | |||
0% { opacity: 1; } | |||
} | 15% { opacity: 0.7; } | ||
20% { opacity: 0.9; } | |||
25% { opacity: 0.6; } | |||
30% { opacity: 0.9; } | |||
35% { opacity: 0.2; } | |||
40% { opacity: 0; } | |||
100% { opacity: 0; visibility: hidden; } | |||
} | } | ||
/* | /* 页面加载后自动添加CRT效果元素 */ | ||
document.addEventListener('DOMContentLoaded', function() { | |||
// 创建一个隐藏/显示扫描线效果的按钮 | |||
var toggleButton = document.createElement('button'); | |||
toggleButton.innerHTML = '切换扫描线'; | |||
toggleButton.style.position = 'fixed'; | |||
toggleButton.style.bottom = '10px'; | |||
toggleButton.style.right = '10px'; | |||
toggleButton.style.zIndex = '10000'; | |||
toggleButton.style.fontSize = '12px'; | |||
} | toggleButton.style.padding = '4px 8px'; | ||
toggleButton.style.opacity = '0.7'; | |||
// 添加事件监听 | |||
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 = '显示扫描线'; | |||
} else { | |||
root.style.setProperty('--crt-effects-display', 'block'); | |||
toggleButton.innerHTML = '隐藏扫描线'; | |||
} | |||
}); | |||
document.body.appendChild(toggleButton); | |||
// 添加扫描线和启动效果元素 | |||
var body = document.querySelector('body'); | |||
// 主扫描线 | |||
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 startupEffect = document.createElement('div'); | |||
startupEffect.className = 'crt-startup-effect'; | |||
body.appendChild(startupEffect); | |||
}); | |||
/* 媒体查询 */ | |||
@media screen and (max-width: 768px) { | |||
:root { | |||
--base-font-size: 14px; | |||
--small-font-size: 12px; | |||
} | |||
body { | |||
padding: 1rem; | |||
margin: 0.5rem; | |||
} | |||
} | } | ||
@media screen and (min-width: 1440px) { | |||
:root { | |||
--base-font-size: 16px; | |||
--small-font-size: 14px; | |||
} | |||
} | } | ||
/* | /* 打印样式优化 */ | ||
@media print { | @media print { | ||
:root { | :root { | ||
-- | --crt-effects-display: none; | ||
} | |||
html, body { | |||
background: #fff !important; | |||
color: #000 !important; | |||
} | } | ||
body::before, | body::before, | ||
.crt-primary-scanline, | |||
.crt-secondary-scanline, | |||
.crt-fast-scanline, | |||
.crt-startup-effect { | |||
display: none !important; | display: none !important; | ||
} | } | ||
第768行: | 第897行: | ||
box-shadow: none !important; | box-shadow: none !important; | ||
animation: none !important; | animation: none !important; | ||
border-color: #ddd !important; | |||
} | } | ||
第784行: | 第905行: | ||
} | } | ||
a::before { | |||
display: none !important; | |||
} | } | ||
pre, code { | |||
border: 1px solid #ddd; | |||
background: #f8f8f8 !important; | |||
} | } | ||
} | } | ||
2025年4月12日 (六) 22:45的版本
/* 这里放置的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.12; /* 主扫描线透明度 */ --crt-secondary-scanline-alpha: 0.08; /* 副扫描线透明度 */ --crt-fast-scanline-alpha: 0.25; /* 快速扫描线透明度 */ --crt-flicker-alpha: 0.04; /* 屏幕闪烁强度 */ --crt-noise-alpha: 0.03; /* 噪点强度 */ --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.12; /* 暗角效果强度 */ /* 网格背景相关变量 */ --grid-color: rgba(0, 0, 0, 0.08); --grid-size: 40px; --grid-line-width: 1px; /* 字体设置 - 只使用VonwaonBitmap */ --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); } /* 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; } } /* 主扫描线动画 - 更慢、更明显 */ @keyframes primary-scanline { 0% { transform: translateY(-20px); } 100% { transform: translateY(100vh); } } /* 副扫描线动画 - 中速移动 */ @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); } 35% { opacity: 0; } 100% { opacity: 0; transform: translateY(100vh); } } @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); } } /* 全局和背景样式 - 增强质感 */ html { min-height: 100%; background-color: #ffffff; 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; overflow-x: hidden; /* 防止水平滚动条出现 */ } body { font-family: var(--body-font); font-size: var(--base-font-size); line-height: 1.65; color: #222; position: relative; min-height: calc(100vh - 2rem); margin: 1rem; padding: 1.5rem; background-color: rgba(255, 255, 255, var(--glass-opacity)); border-radius: 4px; 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)); } /* 添加暗角效果 - 增强CRT显示器质感 */ body::before { content: ""; display: var(--crt-effects-display); position: fixed; top: 0; left: 0; width: 100%; height: 100%; pointer-events: none; z-index: 9998; background: radial-gradient( circle at center, transparent 40%, rgba(0, 0, 0, var(--crt-vignette-opacity)) 140% ); mix-blend-mode: multiply; } /* CRT扫描线效果 - 使用新的三种不同类型的扫描线 */ /* 1. 主扫描线 - 较宽的水平线 */ .crt-primary-scanline { content: ""; display: var(--crt-effects-display); position: fixed; top: 0; left: 0; width: 100%; height: 8px; /* 主扫描线较宽 */ 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 12s 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; animation: secondary-scanline 18s linear infinite; } /* 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 2.5s cubic-bezier(0.15, 0.85, 0.5, 1) infinite; } /* 标题样式 - 只使用VonwaonBitmap 16px字体 */ 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; } 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% ); } body h1 { font-size: calc(var(--base-font-size) * 1.7); text-transform: uppercase; padding-left: 10px; border-left: 3px solid var(--crt-glow-color); } h2 { font-size: calc(var(--base-font-size) * 1.5); } h3 { font-size: calc(var(--base-font-size) * 1.3); } h4 { font-size: calc(var(--base-font-size) * 1.2); } h5, h6 { font-size: calc(var(--base-font-size) * 1.1); } /* 链接样式 - 增强质感 */ 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); } 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); } /* 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; } .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: 8px 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; } @keyframes shine { 0% { left: -150%; } 30% { left: -150%; } 60% { left: 150%; } 100% { left: 150%; } } .notaninfobox .infobox-row .infobox-row-label { font-family: var(--UI-font); font-weight: 600; color: #444; text-shadow: none; letter-spacing: 0.03em; } /* 表格样式 - 增强质感 */ 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); } table caption { font-family: var(--title-font); font-size: calc(var(--base-font-size) * 1.05); padding: 8px; font-weight: normal; text-shadow: var(--crt-text-shadow); } 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: 10px 14px; border-bottom: 2px solid rgba(0, 0, 0, 0.1); } 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); } /* 代码样式 - 增强科技感 */ 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; 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; } /* 添加代码行号 */ 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: 1.5em; margin-right: 1em; color: #888; text-align: right; user-select: none; } /* 确保文本内容清晰可读 */ 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); } /* 图片效果 - 增强质感 */ 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); /* 轻微增强对比度 */ } 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); } /* 滚动条样式 - 像素风格 */ ::-webkit-scrollbar { width: 12px; height: 12px; } ::-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 ); } /* 引用块样式 */ blockquote { border-left: 3px solid var(--crt-glow-color); margin: 1em 0; padding: 0.5em 1em; background: rgba(240, 240, 240, 0.5); position: relative; font-family: var(--body-font); } blockquote::before { content: """; position: absolute; top: 0; left: 10px; font-size: 2em; color: rgba(0, 0, 0, 0.1); font-family: serif; } /* 按钮样式 - 像素风格 */ .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: 4px 10px; border: 2px solid #666; border-bottom: 4px solid #444; border-right: 4px solid #444; border-radius: 0; background: #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; } .collapseButton:hover, button:hover, .mw-ui-button:hover, input[type="button"]:hover, input[type="submit"]:hover { background: #eee; border-color: #777; border-bottom-color: #555; border-right-color: #555; transform: translateY(-1px); } .collapseButton:active, button:active, .mw-ui-button:active, input[type="button"]:active, input[type="submit"]:active { background: #ccc; border: 2px solid #444; border-top: 4px solid #666; border-left: 4px solid #666; transform: translateY(1px); text-shadow: none; } .navbox .collapseButton { width: 6em; } /* 边栏样式 - 复古科幻风格 */ .side-block { background: linear-gradient(135deg, rgba(0, 255, 100, 0.05) 0%, transparent 100%), linear-gradient(to bottom, rgba(220, 230, 240, 0.85), rgba(190, 210, 225, 0.95)); border: 1px solid rgba(0, 0, 0, 0.15); border-radius: 0; margin: 0.5rem 0.5rem 1rem 0; padding: 0; box-shadow: var(--box-depth), inset 0 0 20px rgba(0, 200, 255, 0.07); font-family: var(--UI-font); position: relative; overflow: hidden; } .side-block::before { content: ""; position: absolute; top: 0; left: 0; width: 100%; height: 2px; background: linear-gradient(to right, transparent, var(--crt-glow-color), transparent); } .side-block::after { content: ""; position: absolute; bottom: 0; left: 0; width: 100%; height: 1px; background: linear-gradient(to right, transparent, rgba(0, 0, 0, 0.1), transparent); } .side-block .heading { font-family: var(--title-font); font-size: calc(var(--base-font-size) * 0.95); color: #222; text-shadow: 0 1px 0 rgba(255, 255, 255, 0.5), var(--crt-text-shadow); padding: 0.5rem 0.7rem; border-bottom: 1px solid rgba(0, 0, 0, 0.15); background: linear-gradient(to bottom, #e8f0f8, #c8d8e8); letter-spacing: 0.05em; position: relative; text-transform: uppercase; } .side-block .heading::after { content: ""; position: absolute; bottom: 0; left: 0; width: 100%; height: 1px; background: linear-gradient(to right, rgba(255, 255, 255, 0.7), rgba(255, 255, 255, 0)); } .side-block .heading p { margin: 0; padding: 0; } .side-block div.menu-item { border-bottom: 1px solid rgba(0, 0, 0, 0.07); border-top: 1px solid rgba(255, 255, 255, 0.7); position: relative; } .side-block div.menu-item:last-child { border-bottom: none; } .side-block div.menu-item a { display: block; padding: 0.5rem 0.7rem; 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); position: relative; overflow: hidden; } .side-block div.menu-item 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); } .side-block div.menu-item a::before { content: '►'; display: inline-block; margin-right: 5px; font-size: 0.8em; opacity: 0; transition: all 0.2s ease; transform: translateX(-5px); } .side-block div.menu-item a:hover::before { opacity: 0.7; transform: translateX(0); } /* CRT页面启动效果 - 暗角、闪烁和亮线 */ .crt-startup-effect { position: fixed; top: 0; left: 0; width: 100%; height: 100%; background-color: #000; z-index: 10000; opacity: 1; pointer-events: none; animation: crt-startup-fade 2.5s forwards; } @keyframes crt-startup-fade { 0% { opacity: 1; } 15% { opacity: 0.7; } 20% { opacity: 0.9; } 25% { opacity: 0.6; } 30% { opacity: 0.9; } 35% { opacity: 0.2; } 40% { opacity: 0; } 100% { opacity: 0; visibility: hidden; } } /* 页面加载后自动添加CRT效果元素 */ document.addEventListener('DOMContentLoaded', function() { // 创建一个隐藏/显示扫描线效果的按钮 var toggleButton = document.createElement('button'); toggleButton.innerHTML = '切换扫描线'; toggleButton.style.position = 'fixed'; toggleButton.style.bottom = '10px'; toggleButton.style.right = '10px'; toggleButton.style.zIndex = '10000'; toggleButton.style.fontSize = '12px'; toggleButton.style.padding = '4px 8px'; toggleButton.style.opacity = '0.7'; // 添加事件监听 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 = '显示扫描线'; } else { root.style.setProperty('--crt-effects-display', 'block'); toggleButton.innerHTML = '隐藏扫描线'; } }); document.body.appendChild(toggleButton); // 添加扫描线和启动效果元素 var body = document.querySelector('body'); // 主扫描线 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 startupEffect = document.createElement('div'); startupEffect.className = 'crt-startup-effect'; body.appendChild(startupEffect); }); /* 媒体查询 */ @media screen and (max-width: 768px) { :root { --base-font-size: 14px; --small-font-size: 12px; } body { padding: 1rem; margin: 0.5rem; } } @media screen and (min-width: 1440px) { :root { --base-font-size: 16px; --small-font-size: 14px; } } /* 打印样式优化 */ @media print { :root { --crt-effects-display: none; } html, body { background: #fff !important; color: #000 !important; } body::before, .crt-primary-scanline, .crt-secondary-scanline, .crt-fast-scanline, .crt-startup-effect { 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; } }