Template:Main page/shared/styles.css
模板页面
更多操作
/* =========================================================
* 首页主题变量
* ========================================================= */
:root {
/* 普通卡片 */
--home-card-background: var(--color-surface-1);
--home-card-border-color: var(--border-color-base);
/* 徽章及次级区域 */
--home-secondary-background: var(--color-surface-2);
--home-secondary-background-hover: var(--color-surface-2--hover);
--home-secondary-background-active: var(--color-surface-2--active);
/* 文字颜色 */
--home-text-color: var(--color-base);
--home-title-color: var(--color-emphasized);
--home-subtle-color: var(--color-subtle);
/* 阴影 */
--home-card-shadow: none;
}
/*
* Citizen 夜间模式。
*
* 页面背景为 #333333 时,卡片使用稍亮的灰色,
* 使首页模块与页面底色形成层次。
*/
:root.skin-theme-clientpref-night {
--home-card-background: #3d3d3d;
--home-card-border-color: #555555;
--home-secondary-background: #484848;
--home-secondary-background-hover: #525252;
--home-secondary-background-active: #5c5c5c;
--home-text-color: #f1f1f1;
--home-title-color: #ffffff;
--home-subtle-color: #b8b8b8;
--home-card-shadow:
0 2px 8px rgb(0 0 0 / 0.22),
0 8px 24px rgb(0 0 0 / 0.12);
}
/* =========================================================
* 首页网格
* ========================================================= */
.home-grid {
display: grid;
grid:
auto-flow dense /
repeat(auto-fit, minmax(9.375rem, 1fr));
grid-auto-rows: minmax(3rem, auto);
gap: var(--space-xs);
}
.home-grid--col2 {
grid-template-columns: repeat(2, minmax(0, 1fr));
}
/*
* 移除 MediaWiki 为外部链接添加的默认背景图标。
*/
.home-grid a.external {
background-image: none;
}
/* =========================================================
* 首页通用徽章
* ========================================================= */
.home-badge {
display: flex;
align-items: center;
gap: var(--space-xxs);
padding:
var(--space-xxs)
var(--space-xs);
background-color: var(--home-secondary-background);
color: var(--home-text-color);
border: 1px solid var(--home-card-border-color);
border-radius: var(--border-radius-base);
font-size: var(--font-size-x-small);
font-weight: var(--font-weight-normal);
letter-spacing: 0.025em;
line-height: var(--line-height-xxx-small);
}
/* =========================================================
* 首页卡片
* ========================================================= */
.home-card {
position: relative;
padding: var(--space-md);
background-color: var(--home-card-background);
color: var(--home-text-color);
border: 1px solid var(--home-card-border-color);
border-radius: var(--border-radius-medium);
box-shadow: var(--home-card-shadow);
font-size: var(--font-size-small);
}
/*
* 卡片内部链接继承当前主题的文字可读性。
*/
.home-card a {
color: var(--color-progressive);
}
.home-card table.timeline {
margin-top: var(--space-xs);
}
/* =========================================================
* 首页卡片跨行、跨列
* ========================================================= */
.home-card--col2 {
grid-column: span 2;
}
.home-card--row3 {
grid-row: span 3;
}
.home-card--row4 {
grid-row: span 4;
}
.home-card--row8 {
grid-row: span 8 / auto;
}
/* =========================================================
* 卡片徽章与标签
* ========================================================= */
.home-card__badge,
.home-card__label {
color: var(--home-subtle-color);
font-size: var(--font-size-x-small);
letter-spacing: 0.05em;
}
.home-card__badge {
padding:
var(--space-xxs)
var(--space-xs);
background-color: var(--home-secondary-background);
border: 1px solid var(--home-card-border-color);
border-radius: var(--border-radius-base);
}
/* =========================================================
* 卡片标题
* ========================================================= */
.home-card__header {
color: var(--home-title-color);
font-size: 1rem;
font-weight: var(--font-weight-semi-bold);
line-height: var(--line-height-xxx-small);
}
.home-card__header a {
display: flex;
align-items: center;
justify-content: space-between;
gap: var(--space-xs);
color: inherit;
text-decoration: none;
}
.home-card__header a::after {
content: "▶";
flex-shrink: 0;
color: var(--home-subtle-color);
font-size: var(--font-size-x-small);
}
/* =========================================================
* 图片背景卡片
* ========================================================= */
.home-card__background {
position: absolute;
inset: 0;
}
/*
* 在背景图上增加渐变遮罩,
* 保证前景白色文字的可读性。
*/
.home-card__background::after {
position: absolute;
inset: 0;
display: block;
background:
linear-gradient(
to right,
rgb(0 0 0 / 0.85),
rgb(0 0 0 / 0.15) 70%,
transparent
);
content: "";
pointer-events: none;
transition: opacity 250ms ease;
}
.home-card__background picture,
.home-card__background img {
width: 100%;
height: 100%;
}
.home-card__background img {
display: block;
object-fit: cover;
object-position: center;
}
/* =========================================================
* 图片卡片前景内容
* ========================================================= */
.home-card__foreground {
position: absolute;
inset: 0;
display: flex;
flex-direction: column;
justify-content: center;
gap: var(--space-xxs);
padding: var(--space-md);
color: #ffffff;
line-height: var(--line-height-xxx-small);
pointer-events: none;
}
.home-card__foreground .home-card__badge {
position: absolute;
top: 0;
right: 0;
background-color: rgb(40 40 40 / 0.88);
color: #ffffff;
border-color: rgb(255 255 255 / 0.2);
border-top-left-radius: 0;
border-bottom-right-radius: 0;
backdrop-filter: blur(8px);
}
.home-card__foreground .home-card__header {
color: #ffffff;
}
.home-card__foreground .home-card__label {
color: #d0d0d0;
}
/* =========================================================
* 卡片段落
* ========================================================= */
.home-card p {
margin-top: var(--space-xs);
color: var(--home-text-color);
font-size: var(--font-size-small);
}
/*
* 图片背景卡片内的段落始终使用浅色文字。
*/
.home-card__foreground p {
color: #ffffff;
}
/* =========================================================
* 按钮式卡片
* ========================================================= */
.home-card.home-card--button {
overflow: hidden;
padding: 0;
border: 0;
}
.home-card--button a {
display: flex;
align-items: center;
justify-content: center;
width: 100%;
height: 100%;
padding-inline: var(--space-md);
background-color: transparent;
color: #ffffff;
font-weight: var(--font-weight-medium);
text-decoration: none;
}
.home-card--button .home-card__background a {
padding: 0;
}
.home-card--button img {
transition: transform 250ms ease;
}
.home-card--button:hover img {
transform: scale(1.1);
}
.home-card--button:hover .home-card__background::after {
opacity: 0.82;
}
/* =========================================================
* 首页链接按钮
* ========================================================= */
.home-link {
display: grid;
gap: var(--space-xs);
margin-top: var(--space-xs);
font-size: var(--font-size-small);
font-weight: var(--font-weight-medium);
text-align: center;
}
.home-link__button {
display: flex;
}
.home-link__button a {
flex-grow: 1;
padding: var(--space-xs);
background-color: var(--home-secondary-background);
color: var(--home-title-color) !important;
border: 1px solid var(--home-card-border-color);
border-radius: var(--border-radius-medium);
line-height: var(--line-height-xxx-small);
text-decoration: none !important;
transition:
background-color 150ms ease,
border-color 150ms ease;
}
.home-link__button a:hover {
background-color: var(--home-secondary-background-hover);
}
.home-link__button a:active {
background-color: var(--home-secondary-background-active);
}
/* =========================================================
* 首页其他内容
* ========================================================= */
#home-content {
margin-top: var(--space-lg);
}
.home-card .template-statsbar {
margin: 0;
}
.home-footer {
color: var(--home-subtle-color);
font-family: var(--font-family-monospace);
font-size: var(--font-size-small);
text-align: center;
}
/* =========================================================
* 移动端适配
* ========================================================= */
@media (max-width: 720px) {
.home-grid,
.home-grid--col2 {
grid-template-columns: 1fr;
}
.home-card--col2 {
grid-column: span 1;
}
/*
* 移动端不固定跨行高度,避免内容较多时出现异常留白。
*/
.home-card--row3,
.home-card--row4,
.home-card--row8 {
grid-row: auto;
}
}