User:弃权者/Template:少女前线信息/styles.css
来自OGAS数据中枢
更多操作
/* =====================================================
少女前线信息框 — 左立绘 + 右信息 双栏布局
纯 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;
}
}