User:弃权者/Template:少女前线信息/styles.css:修订间差异
来自OGAS数据中枢
更多操作
无编辑摘要 |
无编辑摘要 |
||
| 第1行: | 第1行: | ||
/* ===================================================== | |||
少女前线信息框 — 左立绘 + 右信息 双栏布局 | |||
纯 CSS 立绘切换,使用 :checked ~ 兄弟选择器,零 JavaScript | |||
===================================================== */ | |||
/* ── 外层包裹 ── */ | |||
.gf-infobox-wrap { | |||
display: flex; | display: flex; | ||
flex-direction: row; | |||
width: | align-items: stretch; | ||
float: right; | |||
width: 560px; | |||
border: 1px solid var(--border-color- | margin: 0 0 1em 1.5em; | ||
background-color: var(--background-color-neutral-subtle, #f8f9fa); | |||
border: 1px solid var(--border-color-subtle, #c8ccd1); | |||
font-size: 0.875em; | |||
color: var(--color-base, #202122); | |||
box-sizing: border-box; | box-sizing: border-box; | ||
border-radius: 4px; | |||
overflow: hidden; | |||
} | } | ||
/* | /* ── 左侧立绘区 ── */ | ||
.gf-infobox-left { | |||
.gf-left { | flex: 0 0 270px; | ||
width: 270px; | |||
width: | background-color: var(--background-color-base, #ffffff); | ||
border-right: 1px solid var(--border-color-subtle, #c8ccd1); | |||
display: flex; | display: flex; | ||
flex-direction: column; | flex-direction: column; | ||
} | } | ||
.gf- | /* ── Radio 状态机:隐藏但保留在 DOM 中 ── | ||
必须是 .gf-illust-slides 和 .gf-illust-tabs 的同级前兄弟元素, | |||
这样 ~ 选择器才能找到它们 */ | |||
.gf-illust-switcher { | |||
display: flex; | display: flex; | ||
flex-direction: column; | |||
flex: 1; | |||
} | } | ||
.gf- | .gf-radio { | ||
position: absolute; | |||
width: 0; | |||
height: 0; | |||
opacity: 0; | |||
pointer-events: none; | |||
} | } | ||
/* | /* ── 立绘幻灯片:默认全部隐藏 ── */ | ||
.gf-illust-slides { | |||
.gf- | |||
width: 100%; | width: 100%; | ||
} | } | ||
.gf-illust-slide { | |||
.gf- | |||
display: none; | display: none; | ||
flex-direction: column; | |||
align-items: center; | |||
width: 100%; | |||
} | } | ||
.gf-illust-slide img { | |||
.gf- | |||
width: 100%; | width: 100%; | ||
max-width: 270px; | |||
height: auto; | |||
display: block; | |||
} | } | ||
/* | /* ── 核心机制:radio :checked 控制哪张立绘显示 ── | ||
结构:.gf-illust-switcher > [radio × N] + .gf-illust-slides > .gf-slide-N | |||
radio 是 .gf-illust-slides 的前兄弟,~ 可以找到它,再用后代选择器定位 .gf-slide-N */ | |||
.gf-radio:nth-of-type(1):checked ~ .gf-illust-slides .gf-slide-1 { display: flex; } | |||
.gf-radio:nth-of-type(2):checked ~ .gf-illust-slides .gf-slide-2 { display: flex; } | |||
.gf-radio:nth-of-type(3):checked ~ .gf-illust-slides .gf-slide-3 { display: flex; } | |||
.gf-radio:nth-of-type(4):checked ~ .gf-illust-slides .gf-slide-4 { display: flex; } | |||
.gf-radio:nth-of-type(5):checked ~ .gf-illust-slides .gf-slide-5 { display: flex; } | |||
.gf- | /* ── 核心机制:radio :checked 控制 tab 高亮 ── | ||
同理,radio 是 .gf-illust-tabs 的前兄弟 */ | |||
.gf-radio:nth-of-type(1):checked ~ .gf-illust-tabs .gf-tab-1, | |||
.gf-radio:nth-of-type(2):checked ~ .gf-illust-tabs .gf-tab-2, | |||
.gf-radio:nth-of-type(3):checked ~ .gf-illust-tabs .gf-tab-3, | |||
.gf-radio:nth-of-type(4):checked ~ .gf-illust-tabs .gf-tab-4, | |||
.gf-radio:nth-of-type(5):checked ~ .gf-illust-tabs .gf-tab-5 { | |||
background: var(--background-color-base, #ffffff); | |||
color: var(--color-progressive, #3366cc); | |||
font-weight: bold; | |||
border-bottom: 2px solid var(--color-progressive, #3366cc); | |||
} | |||
/* ── 立绘说明 ── */ | |||
.gf-illust-caption { | |||
width: 100%; | width: 100%; | ||
text-align: center; | text-align: center; | ||
font-size: 0.85em; | |||
padding: | color: var(--color-subtle, #54595d); | ||
padding: 4px 6px; | |||
background: var(--background-color-neutral-subtle, #f8f9fa); | |||
border-top: 1px solid var(--border-color-subtle, #eaecf0); | |||
box-sizing: border-box; | box-sizing: border-box; | ||
} | } | ||
.gf- | /* ── 切换标签栏 ── */ | ||
.gf-illust-tabs { | |||
display: flex; | |||
flex-wrap: wrap; | |||
border-top: 1px solid var(--border-color-subtle, #c8ccd1); | |||
background: var(--background-color-neutral-subtle, #f8f9fa); | |||
} | |||
.gf-illust-tab { | |||
flex: 1 1 0; | |||
min-width: 0; | |||
padding: 5px 4px; | |||
font-size: 0.82em; | |||
text-align: center; | |||
cursor: pointer; | |||
border-right: 1px solid var(--border-color-subtle, #c8ccd1); | |||
color: var(--color-base, #202122); | |||
user-select: none; | |||
white-space: nowrap; | |||
overflow: hidden; | |||
text-overflow: ellipsis; | |||
transition: background 0.12s; | |||
/* 消除 label 默认样式 */ | |||
display: block; | |||
line-height: 1.6; | |||
} | } | ||
.gf-illust-tab:last-child { | |||
border-right: none; | |||
} | } | ||
.gf-illust-tab:hover { | |||
background: var(--background-color-interactive-subtle-hover, #eaecf0); | |||
} | } | ||
/* ── 单张立绘(兼容旧 image 参数)── */ | |||
.gf-illust-single { | |||
width: 100%; | |||
display: flex; | |||
flex-direction: column; | |||
align-items: center; | |||
} | } | ||
.gf-illust-single img { | |||
width: 100%; | |||
max-width: 270px; | |||
height: auto; | |||
display: block; | display: block; | ||
} | } | ||
/* | /* ── 无立绘占位 ── */ | ||
.gf-illust-missing { | |||
.gf- | |||
width: 100%; | width: 100%; | ||
padding: 24px 12px; | |||
text-align: center; | |||
color: var(--color-subtle, #54595d); | |||
font-size: 0.9em; | |||
line-height: 1.7; | |||
} | |||
/* ── 右侧信息区 ── */ | |||
.gf-infobox-right { | |||
flex: 1 1 0; | |||
min-width: 0; | |||
display: flex; | |||
flex-direction: column; | |||
} | |||
.gf-infobox-title { | |||
text-align: center; | text-align: center; | ||
font-weight: bold; | |||
font-size: 1.05em; | |||
padding: 8px 10px; | |||
background: var(--background-color-neutral-subtle, #f8f9fa); | |||
border-bottom: 1px solid var(--border-color-subtle, #c8ccd1); | |||
word-break: break-all; | |||
} | |||
border- | /* ── 信息表格 ── */ | ||
.gf-info-table { | |||
width: 100%; | |||
border-collapse: collapse; | |||
background: var(--background-color-base, #ffffff); | |||
margin: 0; | |||
table-layout: auto; | |||
} | |||
.gf-info-table th { | |||
background: var(--background-color-neutral-subtle, #f8f9fa); | |||
color: var(--color-base, #202122); | |||
text-align: left; | |||
padding: 5px 8px; | |||
white-space: nowrap; | |||
border-bottom: 1px solid var(--border-color-subtle, #eaecf0); | |||
font-weight: bold; | |||
font-size: 0.9em; | |||
width: 1px; | |||
vertical-align: top; | |||
} | } | ||
.gf- | .gf-info-table td { | ||
padding: 5px 8px; | |||
border-bottom: 1px solid var(--border-color-subtle, #eaecf0); | |||
color: var(--color-base, #202122); | |||
padding: 5px | vertical-align: middle; | ||
word-break: break-all; | |||
border: 1px solid var(--border-color-base); | |||
font-size: 0.9em; | font-size: 0.9em; | ||
} | |||
.gf-info-table tr:last-child th, | |||
.gf-info-table tr:last-child td { | |||
border-bottom: none; | |||
} | } | ||
.gf- | .gf-info-table a { | ||
color: var(--color-link, #3366cc); | |||
text-decoration: none; | |||
} | |||
.gf-info-table a:hover { | |||
text-decoration: underline; | |||
} | } | ||
.gf-section-header { | |||
text-align: center !important; | |||
background: var(--background-color-neutral-subtle, #f8f9fa) !important; | |||
width: auto !important; | |||
white-space: normal !important; | |||
border-top: 1px solid var(--border-color-subtle, #c8ccd1); | |||
} | |||
.gf-related { | .gf-related { | ||
vertical-align: top !important; | |||
word-break: break-word !important; | |||
} | } | ||
/* | /* ── 响应式:窄屏改为上下布局 ── */ | ||
@media screen and (max-width: 800px) { | |||
@media screen and (max-width: | .gf-infobox-wrap { | ||
float: none; | |||
.gf-infobox { | width: 100%; | ||
flex-direction: column; | flex-direction: column; | ||
margin: 1em 0; | |||
} | } | ||
.gf-left | .gf-infobox-left { | ||
flex: none; | |||
width: 100%; | width: 100%; | ||
border-right: none; | |||
border-bottom: 1px solid var(--border-color-subtle, #c8ccd1); | |||
} | } | ||
.gf- | .gf-illust-slide img, | ||
.gf-illust-single img { | |||
max-width: 100%; | |||
} | } | ||
.gf- | .gf-infobox-right { | ||
width: 100%; | |||
} | } | ||
.gf- | .gf-info-table th, | ||
.gf-info-table td { | |||
padding: 8px 10px; | |||
font-size: 1em; | |||
} | } | ||
} | } | ||
2026年5月15日 (五) 06:03的版本
/* =====================================================
少女前线信息框 — 左立绘 + 右信息 双栏布局
纯 CSS 立绘切换,使用 :checked ~ 兄弟选择器,零 JavaScript
===================================================== */
/* ── 外层包裹 ── */
.gf-infobox-wrap {
display: flex;
flex-direction: row;
align-items: stretch;
float: right;
width: 560px;
margin: 0 0 1em 1.5em;
background-color: var(--background-color-neutral-subtle, #f8f9fa);
border: 1px solid var(--border-color-subtle, #c8ccd1);
font-size: 0.875em;
color: var(--color-base, #202122);
box-sizing: border-box;
border-radius: 4px;
overflow: hidden;
}
/* ── 左侧立绘区 ── */
.gf-infobox-left {
flex: 0 0 270px;
width: 270px;
background-color: var(--background-color-base, #ffffff);
border-right: 1px solid var(--border-color-subtle, #c8ccd1);
display: flex;
flex-direction: column;
}
/* ── Radio 状态机:隐藏但保留在 DOM 中 ──
必须是 .gf-illust-slides 和 .gf-illust-tabs 的同级前兄弟元素,
这样 ~ 选择器才能找到它们 */
.gf-illust-switcher {
display: flex;
flex-direction: column;
flex: 1;
}
.gf-radio {
position: absolute;
width: 0;
height: 0;
opacity: 0;
pointer-events: none;
}
/* ── 立绘幻灯片:默认全部隐藏 ── */
.gf-illust-slides {
width: 100%;
}
.gf-illust-slide {
display: none;
flex-direction: column;
align-items: center;
width: 100%;
}
.gf-illust-slide img {
width: 100%;
max-width: 270px;
height: auto;
display: block;
}
/* ── 核心机制:radio :checked 控制哪张立绘显示 ──
结构:.gf-illust-switcher > [radio × N] + .gf-illust-slides > .gf-slide-N
radio 是 .gf-illust-slides 的前兄弟,~ 可以找到它,再用后代选择器定位 .gf-slide-N */
.gf-radio:nth-of-type(1):checked ~ .gf-illust-slides .gf-slide-1 { display: flex; }
.gf-radio:nth-of-type(2):checked ~ .gf-illust-slides .gf-slide-2 { display: flex; }
.gf-radio:nth-of-type(3):checked ~ .gf-illust-slides .gf-slide-3 { display: flex; }
.gf-radio:nth-of-type(4):checked ~ .gf-illust-slides .gf-slide-4 { display: flex; }
.gf-radio:nth-of-type(5):checked ~ .gf-illust-slides .gf-slide-5 { display: flex; }
/* ── 核心机制:radio :checked 控制 tab 高亮 ──
同理,radio 是 .gf-illust-tabs 的前兄弟 */
.gf-radio:nth-of-type(1):checked ~ .gf-illust-tabs .gf-tab-1,
.gf-radio:nth-of-type(2):checked ~ .gf-illust-tabs .gf-tab-2,
.gf-radio:nth-of-type(3):checked ~ .gf-illust-tabs .gf-tab-3,
.gf-radio:nth-of-type(4):checked ~ .gf-illust-tabs .gf-tab-4,
.gf-radio:nth-of-type(5):checked ~ .gf-illust-tabs .gf-tab-5 {
background: var(--background-color-base, #ffffff);
color: var(--color-progressive, #3366cc);
font-weight: bold;
border-bottom: 2px solid var(--color-progressive, #3366cc);
}
/* ── 立绘说明 ── */
.gf-illust-caption {
width: 100%;
text-align: center;
font-size: 0.85em;
color: var(--color-subtle, #54595d);
padding: 4px 6px;
background: var(--background-color-neutral-subtle, #f8f9fa);
border-top: 1px solid var(--border-color-subtle, #eaecf0);
box-sizing: border-box;
}
/* ── 切换标签栏 ── */
.gf-illust-tabs {
display: flex;
flex-wrap: wrap;
border-top: 1px solid var(--border-color-subtle, #c8ccd1);
background: var(--background-color-neutral-subtle, #f8f9fa);
}
.gf-illust-tab {
flex: 1 1 0;
min-width: 0;
padding: 5px 4px;
font-size: 0.82em;
text-align: center;
cursor: pointer;
border-right: 1px solid var(--border-color-subtle, #c8ccd1);
color: var(--color-base, #202122);
user-select: none;
white-space: nowrap;
overflow: hidden;
text-overflow: ellipsis;
transition: background 0.12s;
/* 消除 label 默认样式 */
display: block;
line-height: 1.6;
}
.gf-illust-tab:last-child {
border-right: none;
}
.gf-illust-tab:hover {
background: var(--background-color-interactive-subtle-hover, #eaecf0);
}
/* ── 单张立绘(兼容旧 image 参数)── */
.gf-illust-single {
width: 100%;
display: flex;
flex-direction: column;
align-items: center;
}
.gf-illust-single img {
width: 100%;
max-width: 270px;
height: auto;
display: block;
}
/* ── 无立绘占位 ── */
.gf-illust-missing {
width: 100%;
padding: 24px 12px;
text-align: center;
color: var(--color-subtle, #54595d);
font-size: 0.9em;
line-height: 1.7;
}
/* ── 右侧信息区 ── */
.gf-infobox-right {
flex: 1 1 0;
min-width: 0;
display: flex;
flex-direction: column;
}
.gf-infobox-title {
text-align: center;
font-weight: bold;
font-size: 1.05em;
padding: 8px 10px;
background: var(--background-color-neutral-subtle, #f8f9fa);
border-bottom: 1px solid var(--border-color-subtle, #c8ccd1);
word-break: break-all;
}
/* ── 信息表格 ── */
.gf-info-table {
width: 100%;
border-collapse: collapse;
background: var(--background-color-base, #ffffff);
margin: 0;
table-layout: auto;
}
.gf-info-table th {
background: var(--background-color-neutral-subtle, #f8f9fa);
color: var(--color-base, #202122);
text-align: left;
padding: 5px 8px;
white-space: nowrap;
border-bottom: 1px solid var(--border-color-subtle, #eaecf0);
font-weight: bold;
font-size: 0.9em;
width: 1px;
vertical-align: top;
}
.gf-info-table td {
padding: 5px 8px;
border-bottom: 1px solid var(--border-color-subtle, #eaecf0);
color: var(--color-base, #202122);
vertical-align: middle;
word-break: break-all;
font-size: 0.9em;
}
.gf-info-table tr:last-child th,
.gf-info-table tr:last-child td {
border-bottom: none;
}
.gf-info-table a {
color: var(--color-link, #3366cc);
text-decoration: none;
}
.gf-info-table a:hover {
text-decoration: underline;
}
.gf-section-header {
text-align: center !important;
background: var(--background-color-neutral-subtle, #f8f9fa) !important;
width: auto !important;
white-space: normal !important;
border-top: 1px solid var(--border-color-subtle, #c8ccd1);
}
.gf-related {
vertical-align: top !important;
word-break: break-word !important;
}
/* ── 响应式:窄屏改为上下布局 ── */
@media screen and (max-width: 800px) {
.gf-infobox-wrap {
float: none;
width: 100%;
flex-direction: column;
margin: 1em 0;
}
.gf-infobox-left {
flex: none;
width: 100%;
border-right: none;
border-bottom: 1px solid var(--border-color-subtle, #c8ccd1);
}
.gf-illust-slide img,
.gf-illust-single img {
max-width: 100%;
}
.gf-infobox-right {
width: 100%;
}
.gf-info-table th,
.gf-info-table td {
padding: 8px 10px;
font-size: 1em;
}
}