下面是我们这次合作的小结(含关键改动与发布要点)——像复盘一场“前端小手术”,温和无痛,还顺带减了点技术焦虑 😄
assets/articles.json 的 contentHtml 只包了一个 <p>,再加上样式未兜底,导致段落挤在一起。scripts/script.js 加了 normalizeArticleHtml():
<p>、<h2>、<ul>…)→ 原样渲染;<p> 或纯文本 → 按 \\n\\n 分段、\\n 换行 自动生成 <p>/<br>,并进行转义防注入。contentText(纯文本优先走自动分段)。styles/content.css 增加正文排版兜底:段落间距/行距/中英文对齐。#post-content p { text-indent: 2em; },并提供了合并版样式,便于统一维护。scripts/script.js(新增自动分段逻辑)styles/content.css(段落样式 + 首行缩进,可用合并版)UPDATE_README.txt(替换说明)contentHtml 的 <p> 前塞了 Tab 试图缩进;未转义的 Tab 会让 JSON.parse() 报错,页面因此“读不到文章”。
结论:缩进属于样式问题,用 CSS 的 text-indent 解决;不要在 JSON 里放原始控制字符(如 Tab)。text-indent,不会覆盖你原来 margin/line-height/对齐 的设置;我也给了一个合并写法版,视觉与维护都更干净。articles.json 的 contentHtml 字段\\(JSON 单行字符串,已安全转义)。contentHtml 里用多个 <p>/<h2>/<ul> 等块级标签;contentText,\\n\\n=新段落、\\n=段内换行,脚本会自动转 <p>/<br>。loadArticles() 外层加 try/catch,解析失败时在页面给出错误提示,避免整页空白。script.js、content.css、说明文件;contentHtml JSON 字段成品,可即刻发布。如果你接下来想把这篇文章写入某个 slug,告诉我 slug 名称,我可以给你该文章对象的完整 JSON 片段(含 title/date/category/cover/excerpt/contentHtml)以便直接粘贴到 articles.json。