章节卡片
本指南演示了在 Hugo 博客中使用卡片布局为不同章节样式化的可维护方法。示例支持浅色和深色主题,并展示了响应式行为。
示例 CSS
/*--------------------------------------------------------------
颜色与间距变量
--------------------------------------------------------------*/
:root {
--color-bg: #ffffff;
--color-bg-alt: #f8f9fa;
--color-text: #1a1a37;
--color-border: #e0e4e8;
--color-shadow: rgba(0, 0, 0, 0.04);
--color-accent: #0a55a7;
--color-heading: #0a55a7;
--space-xs: 0.25rem;
--space-sm: 0.75rem;
--space-md: 1.5rem;
--space-lg: 2.5rem;
}
[data-theme="dark"] {
--color-bg: #1a1a37;
--color-bg-alt: #24244d;
--color-text: #e8e8f0;
--color-border: #383855;
--color-shadow: rgba(0, 0, 0, 0.5);
--color-accent: #8ab4f8;
--color-heading: #8ab4f8;
}
/*--------------------------------------------------------------
全局元素
--------------------------------------------------------------*/
body {
background: var(--color-bg);
color: var(--color-text);
font-family: system-ui, sans-serif;
line-height: 1.6;
}
h1, h2, h3, h4, h5, h6 {
color: var(--color-heading);
font-weight: 700;
margin-top: var(--space-lg);
margin-bottom: var(--space-sm);
}
.section-heading {
position: relative;
margin-bottom: var(--space-sm);
}
.section-heading::after {
content: "";
display: block;
width: 3rem;
height: 3px;
margin-top: var(--space-xs);
background: linear-gradient(to right, var(--color-accent), transparent);
}
:focus-visible {
outline: 2px dashed var(--color-accent);
outline-offset: 2px;
}
/*--------------------------------------------------------------
卡片组件
--------------------------------------------------------------*/
.card {
background-color: var(--color-bg-alt);
border: 1px solid var(--color-border);
border-radius: 0.5rem;
box-shadow: 0 2px 4px var(--color-shadow);
padding: var(--space-md);
margin-bottom: var(--space-lg);
}
/*--------------------------------------------------------------
布局区块
--------------------------------------------------------------*/
.post-meta,
.related-posts,
.pager,
.comments {
composes: card;
}
.content-area {
background: var(--color-bg);
padding: var(--space-lg);
border-radius: 0.5rem;
box-shadow: 0 2px 4px var(--color-shadow);
}
/* 响应式间距 */
@media (max-width: 768px) {
:root {
--space-md: 1rem;
--space-lg: 1.5rem;
}
}
@media (min-width: 1024px) {
:root {
--space-md: 2rem;
--space-lg: 3rem;
}
}
/* 打印调整 */
@media print {
.site-nav,
.pager,
.comments {
display: none;
}
}
示例 HTML
<article class="post">
<header class="post-meta card">
<h1 class="section-heading">我的文章标题</h1>
<p>作者:Jane Doe · 2024-05-10</p>
</header>
<div class="content-area card">
<p>这里是主要文章内容……</p>
</div>
<section class="related-posts card">
<h2 class="section-heading">相关文章</h2>
<ul>
<li><a href="#">如何构建现代 Hugo 主题</a></li>
<li><a href="#">无障碍设计指南</a></li>
</ul>
</section>
<nav class="pager card" aria-label="文章导航">
<a href="#" class="prev">上一篇</a>
<a href="#" class="next">下一篇</a>
</nav>
<section class="comments card">
<h2 class="section-heading">评论</h2>
<!-- 评论嵌入区 -->
</section>
</article>