Template:Producer Song/styles.css
模板页面
更多操作
/* [[Category:在模板命名空间下的CSS页面]] */
/* 卡片 */
.psong {
--psong-icon: 1.625rem;
box-sizing: border-box;
display: inline-grid;
grid-template-columns: auto minmax(0, 1fr);
align-items: start;
vertical-align: top;
width: 100%;
gap: var(--space-xs, 0.5rem) var(--space-sm, 0.75rem);
margin-block-end: var(--space-sm, 0.75rem);
padding: var(--space-sm, 0.75rem);
background: var(--background-color-base, #fff);
border: var(--border-width-base, 1px) solid var(--border-color-subtle, rgba(0, 0, 0, 0.06));
border-radius: var(--border-radius-medium, 2px);
color: var(--color-base, #202122);
transition: border-color 120ms ease;
}
.psong:last-child {
margin-block-end: 0;
}
/* 无封面时不保留封面列 */
.psong-no-cover {
grid-template-columns: minmax(0, 1fr);
}
/* 封面 */
.psong-cover {
width: 4.5rem;
aspect-ratio: 4 / 3;
overflow: hidden;
border-radius: var(--border-radius-base, 2px);
background: var(--background-color-interactive-subtle, rgba(0, 0, 0, 0.04));
}
.psong-cover img {
display: block;
box-sizing: border-box;
width: 100%;
height: 100%;
object-fit: cover;
}
/* 主体 */
.psong-body {
display: contents;
flex-direction: column;
gap: var(--space-xs, 0.5rem);
min-width: 0;
}
.psong-cover {
grid-column: 1;
grid-row: 1;
}
.psong-head {
grid-column: 2;
grid-row: 1;
}
.psong-no-cover .psong-head {
grid-column: 1 / -1;
}
.psong-meta,
.psong-credits,
.psong-desc,
.psong-notes {
grid-column: 1 / -1;
}
/* 标题行 */
.psong-head {
display: flex;
align-items: flex-start;
justify-content: space-between;
flex-wrap: wrap;
gap: 0.25rem 0.5rem;
}
.psong-heading {
display: flex;
flex-direction: column;
gap: 0.0625rem;
flex: 1 1 6rem;
min-width: 0;
}
.psong-title {
font-size: var(--text-base, 1rem);
font-weight: var(--font-weight-bold, 700);
line-height: var(--psong-icon, 1.625rem);
overflow-wrap: anywhere;
}
.psong-sub {
font-size: var(--text-xs, 0.75rem);
font-weight: var(--font-weight-normal, 400);
color: var(--color-subtle, #54595d);
line-height: 1.4;
overflow-wrap: anywhere;
}
/* 平台链接 */
.psong-links {
display: flex;
flex-wrap: wrap;
align-items: center;
gap: 0.125rem;
flex: 0 0 auto;
}
.psong-links a {
display: inline-flex;
align-items: center;
justify-content: center;
box-sizing: border-box;
width: var(--psong-icon, 1.625rem);
height: var(--psong-icon, 1.625rem);
background: var(--background-color-interactive-subtle, rgba(0, 0, 0, 0.04));
border-radius: var(--border-radius-base, 2px);
text-decoration: none;
transition: background-color 120ms ease;
}
.psong-links a:hover {
background: var(--background-color-interactive, rgba(0, 0, 0, 0.08));
}
/* 平台图标 */
.psong-icon {
display: block;
width: 1.0625rem;
height: 1.0625rem;
background-position: center;
background-repeat: no-repeat;
background-size: contain;
}
.psong-icon-nico {
background-image: url(/images/e/e0/Niconico_Logo_%282020%29.svg);
}
.psong-icon-ytb {
background-image: url(/images/6/60/YouTube_Icon_Red.svg);
}
.psong-icon-bili {
background-image: url(/images/9/9b/Bilibili_favicon.svg);
}
.psong-icon-sc {
background-image: url(/images/2/2d/SoundCloud_icon.svg);
}
.psong-icon-acfun {
background-image: url(/images/7/7b/AcFun_icon.png);
}
.psong-icon-wyy {
background-image: url(/images/a/a1/NeteaseCloudMusic_icon.svg);
}
.psong-icon-qq {
background-image: url(/images/0/03/QQMusic_icon.svg);
}
.psong-icon-web {
background-image: url(/images/0/0c/Lucide-external-link.svg);
}
/* 深色模式下反相单色图标 */
html.skin-theme-clientpref-night .psong-icon-nico,
html.skin-theme-clientpref-night .psong-icon-web {
filter: invert(1);
}
@media (prefers-color-scheme: dark) {
html.skin-theme-clientpref-os .psong-icon-nico,
html.skin-theme-clientpref-os .psong-icon-web {
filter: invert(1);
}
}
/* 图标的无障碍文本:视觉上隐藏,仍可被读屏与复制 */
.psong-icon-text {
position: absolute;
width: 1px;
height: 1px;
margin: -1px;
padding: 0;
overflow: hidden;
white-space: nowrap;
border: 0;
clip-path: inset(50%);
}
/* 自由填写的链接 */
.psong-extra {
font-size: var(--text-xs, 0.75rem);
line-height: 1.5;
overflow-wrap: anywhere;
}
.psong-extra a {
color: var(--color-progressive, #36c);
}
/* 演唱者和投稿日期 */
.psong-meta {
display: flex;
flex-wrap: wrap;
align-items: baseline;
gap: 0.125rem 0.5rem;
font-size: var(--text-sm, 0.875rem);
line-height: 1.5;
}
.psong-singer {
font-weight: var(--font-weight-semi-bold, 600);
color: var(--color-base, #202122);
overflow-wrap: anywhere;
}
.psong-date {
color: var(--color-subtle, #54595d);
font-variant-numeric: tabular-nums;
}
/* 制作人员 */
.psong-credits {
display: flex;
flex-wrap: wrap;
gap: 0.25rem;
font-size: var(--text-xs, 0.75rem);
line-height: 1.5;
}
.psong-credit {
display: inline-flex;
align-items: center;
gap: 0.375rem;
box-sizing: border-box;
min-width: 0;
padding: 0.125rem 0.5rem;
background: var(--background-color-interactive-subtle, rgba(0, 0, 0, 0.04));
border-radius: var(--border-radius-pill, 2px);
}
.psong-key {
color: var(--color-subtle, #54595d);
white-space: nowrap;
}
.psong-val {
color: var(--color-base, #202122);
overflow-wrap: anywhere;
}
/* 歌曲描述和平台简介 */
.psong-desc {
font-size: var(--text-xs, 0.75rem);
color: var(--color-subtle, #54595d);
line-height: 1.5;
overflow-wrap: anywhere;
}
.psong-notes {
display: flex;
flex-direction: column;
gap: 0.125rem;
font-size: var(--text-xs, 0.75rem);
color: var(--color-subtle, #54595d);
line-height: 1.5;
}
.psong-note {
margin: 0;
overflow-wrap: anywhere;
}
.psong-note-src {
margin-inline-end: 0.375rem;
opacity: 0.7;
}
/* 响应式 */
body.main-md .psong-body {
display: flex;
}
body.main-md .psong-title {
font-size: var(--text-lg, 1.125rem);
}
body.main-sm .psong-cover {
width: 5.5rem;
}
body.main-md .psong {
gap: var(--space-md, 1rem);
padding: var(--space-md, 1rem);
}
body.main-md .psong-cover {
width: 7.5rem;
}
body.main-md .psong {
width: calc(50% - 0.75rem);
}