大版本更新
一口气全面统一博客样式,移除部分冗余导航页面,更专注内容展示。
不因虚度年华而悔恨,不因碌碌无为而羞愧
博客系列第14期。关于页不做多卡片拼盘,而是一张 MDX 卡片承载正文,人物悬浮卡、技术栈手风琴、魔改时间线、品牌色社交链接以 not-prose 区块嵌入正文流,附 MDX 内嵌组件的几个坑。

关于页常见做法是「卡片拼盘」——个人信息一张卡、技能一张卡、时间线一张卡,各管各的。我参考了 MmzMing/my-blog 的起步思路和 Firefly 的卡片风格后,选择了相反的结构:
整页一张 Card,MDX 正文是主角,四个交互组件以
not-prose区块嵌入正文流。
1<Card radius="l">2 <Markdown>3 {renderedMdx}4 </Markdown>5</Card>好处是写作体验和普通文章完全一致——想加一段自述就直接写 Markdown,组件只是正文里的「插入物」,顺序、位置随时调整。
正文里提到某个人时,触发词带主色虚线下划线,悬停浮出带头像的小卡片。实现要点:
<span tabindex="0" role="tooltip">——键盘可聚焦,hover 和 focus-within 双通道触发;<img> 而非组件——MDX 内嵌组件会被 Markdown 解析器的 <p> 拆散,块级元素会破坏段落结构。人物卡的紫色板与友链页的站长卡片同源,跨页面身份一致。
按分组折叠的技术栈卡片,展开用 grid-template-rows: 0fr → 1fr 过渡(比 max-height 优雅,不需要猜内容高度):
1<div data-tech-accordion="open|closed">...</div>卡片品牌色通过 CSS 变量注入(--tech-color / --tech-color-dark),暗色模式下黑白 logo 自动反色。展开时卡片按 animation-delay: calc(0.12s + var(--i) * 0.045s) 逐张入场——--i 是索引变量,一行 CSS 写出 stagger。
三列 grid:"date rail card"——日期在左,中间一条竖轨,卡片在右。
scaleY 生长动画,与节点圆点 stagger 同步;data/about.ts,与技能/项目页同一套数据契约。2×2 网格,每个链接 hover 时边框和底色转向品牌色。品牌色不写死在组件里,而是由一个映射组件(github / bilibili / qq / email / rss / twitter)驱动 --about-social-brand 变量——加新平台只需加一条映射。
正文直接用主题的指令语法挂仓库卡片:
1::github{repo="MmzMing/my-blog"}致谢对象(起步启蒙的 my-blog、交互参考的 Firefly)以卡片形式放在正文流里,比光秃秃的链接体面。
关于页的改造原则:内容为主角、组件为插入物。MDX 保证写作自由度,四个组件(人物卡 / 手风琴 / 时间线 / 社交链接)各自独立、样式自包含,数据全部收在内容仓——改内容不用碰主题代码。
生成精美分享图或复制链接,与更多人分享本文。
最后更新于 ,距今已过 39 天
部分内容可能已过时