项目

blog

基于 Astro 的静态个人博客

  • #blog
  • #CSS

项目概述

本blog 是一个静态个人博客,用于发布近况、技术笔记、随笔和项目介绍。内容通过本地 Markdown / MDX 文件维护,构建后生成静态页面并部署到 VPS。

技术栈

技术用途
Astro页面组织、静态生成、路由和图片处理
TypeScript内容类型、组件接口与工具函数
Tailwind CSS样式工具与设计 Token 的使用
Content Collections内容加载、字段校验和草稿管理
Markdown / MDX文章、项目介绍及内容组件
CSS Custom Properties字体、颜色、字号、间距与组件样式配置

客户端保留少量 JavaScript,用于移动导航、主题切换和代码复制等交互。正文与导航在关闭 JavaScript 后仍然可用。

区域

区域内容与组织方式
首页身份介绍、近况、最近写作、项目
Now手动发布的短动态,按年、月组织,可附本地图片
Writing聚合 Notes 与 Essays,保留各自归档入口
Projects项目列表与独立详情页
About个人介绍与联系方式

内容字段由 Schema 校验。标题、摘要、日期和标签独立维护,draft 控制内容是否进入公开页面。改版过程中保留既有文章与项目 URL。

字体

字体CSS 名称使用范围
Maple Mono CNMaple Structure导航、栏目、日期、状态和短标签
朱雀仿宋Zhuque Reading个人叙述、近况、文章标题和正文
Maple MonoMaple Code代码、命令、路径和技术标识

字体使用本地资源,并保留系统 fallback。Maple 的结构与代码字体使用真实的 400、600 字重;朱雀仿宋使用 400 字重。

字号与阅读排版

以下 px 按默认 16px 根字号换算,源码主要使用 rem。

内容字号与排版
首页姓名、页面及文章主标题clamp(2.25rem, 5vw, 3.25rem),即 36–52px;行高 1.16
首页简介20px;行高 1.8
首页栏目标题16px;结构字体 600 字重
首页近况与最近写作标题18px
长文正文窄屏 17px,较宽屏幕 18px;行高 1.9
长文 H2 / H3、H418px / 16px;结构字体 600 字重
日期等元数据常用 13px
代码块14px;行高 1.7

页面容器最大宽度为 72rem,文章主体默认最大宽度为 42rem;宽屏带侧栏时,由主辅网格控制正文宽度。文章内部通过字体、字重、颜色和段落间距区分层级。

配色

角色浅色模式深色模式
页面背景#FAF7F0#11171D
独立内容表面#FAFAF8#18212A
主要文字#34404C#D0DAE4
强调文字#17212C#EDF2F7
默认强调色#2759A5#80ACF2

浅色模式使用暖白背景与灰蓝文字,链接使用蓝色。深色模式分别配置背景、文字、边界和强调色。主题支持自动、浅色、深色三种选择。

布局与图片

首页在 60rem 断点以上使用主辅网格,近况与写作的列宽约为 2:1,辅助列最小宽度为 16rem。身份介绍和项目横跨整行。窄屏下回到单列,保持身份、近况、写作、项目的阅读顺序。

栏目通过细线和留白分隔。首页栏目标题距上方分隔线 24px,标题区到内容区间距为 20px。

近况图片完整保留原始比例,不裁切、不拉伸。单图高度上限为 24rem,多图同一行的图片区高度上限为 16rem,两者共同受 60svh 的视口高度上限约束。构建时读取图片宽高,为加载前的布局预留空间。

手机端与电脑端适配

站点使用同一套页面结构,通过 CSS media query、Grid 和 clamp() 按视口宽度调整布局。电脑窗口缩小时,也会切换到对应的窄屏排版。

区域电脑端与较宽屏幕手机端与窄屏
首页60rem 起采用主辅网格,近况与写作并排,身份介绍和项目横跨整行单列排列,按身份、近况、写作、项目的顺序阅读
导航48rem 起直接显示横向导航链接通过“导航”按钮展开或收起菜单
近况归档40rem 起每行两条,60rem 起每行三条40rem 以下每行一条,月份轨道改为左侧竖线
写作列表40rem 起,日期与类型放在内容左侧日期与类型放在标题上方,标题和摘要自然换行
项目归档60rem 起,项目内容与状态、技术栈、链接分列展示内容纵向排列,状态、标签与链接允许换行
长文正文48rem 起使用 18px 字号使用 17px 字号,行高保持 1.9

页面左右留白使用 clamp(1rem, 4vw, 3rem),随视口在约 16–48px 之间变化。主标题在约 36–52px 之间缩放。以上 px 按默认 16px 根字号换算。

窄屏导航在关闭 JavaScript 后直接显示链接,仍可正常访问各个栏目。文章中的长链接允许换行,超宽代码块和表格在各自区域内横向滚动。