
本文详解如何在网页中手动或自动化实现日语声调的可视化标注,重点介绍基于 css 的纯前端方案——通过为每个假名添加 `.h`/`.l` 类并利用相邻选择器 `+` 自动绘制转折红线条,无需依赖 stack exchange 专用插件。
在日语语言学习与教学场景中,准确呈现单词或语句的音高轮廓(pitch accent)至关重要。常见的「红线条式」标注(如「やかん{HLL}」中顶部/底部/左侧的红色短线)直观反映音高变化趋势:高音(H)用上边框、低音(L)用下边框、音高转折点(H→L 或 L→H)则用左侧边框连接相邻假名。虽然 Stack Exchange 使用的 japanese-l-u.js 插件可自动解析 {HLL} 标记,但它强耦合于特定 html 结构与类名(如 .js-post-body),且仅支持显式标记输入,无法脱离平台复用。
因此,更通用、可控且符合现代 Web 实践的方式是:纯 CSS 驱动的手动标注。其核心逻辑如下:
- 每个假名包裹在 中,并根据其在音高序列中的角色赋予 .h(高音)、.l(低音)等语义类;
- 利用 CSS 相邻兄弟选择器(.h + .l, .l + .h)精准定位音高转折位置,统一添加左侧红色边框;
- 通过 margin 和 padding 微调字符间距,确保线条视觉连贯、不重叠。
以下是完整可运行示例:
<!DOCTYPE html> <html lang="ja"> <head> <meta charset="UTF-8"> <title>日语声调红线条标注</title> <style> [lang="ja"] { font-family: "Meiryo", "Hiragino Kaku Gothic Pro", sans-serif; line-height: 1.6; } [lang="ja"] .pitch span { display: inline-block; margin: 0 -0.15em; /* 微调水平间距,使线条自然衔接 */ padding: 0 0.05em; vertical-align: middle; } .pitch .h { border-top: 2px solid #e53935; /* 鲜红色高音线 */ } .pitch .l { border-bottom: 2px solid #e53935; /* 鲜红色低音线 */ } .pitch .h + .l, .pitch .l + .h { border-left: 2px solid #e53935; /* 转折处左侧竖线 */ margin-left: -0.05em; /* 补偿因边框导致的偏移 */ } </style> </head> <body> <p lang="ja"> 「<span class="pitch"> <span class="h">や</span> <span class="l">か</span> <span class="l">ん</span> </span>」は、やかんの「や」が高音、その後下降——典型的「頭高型」です。 </p> <p lang="ja"> 古典和歌の一節:<br> 色は匂へど散り<span class="pitch"> <span class="l">ぬ</span> <span class="l">る</span> <span class="h">を</span> </span>我が世誰ぞ常ならん…… </p> </body> </html>
✅ 优势说明:
立即学习“前端免费学习笔记(深入)”;
- ✅ 完全脱离第三方插件,零依赖,兼容所有现代浏览器;
- ✅ 语义清晰:.h/.l 直观对应音高层级,便于维护与自动化生成;
- ✅ 响应式友好:CSS 规则天然适配不同字号与布局;
- ✅ 可扩展性强:可轻松叠加 hover 效果、动画过渡或语音播放按钮。
⚠️ 注意事项:
- 声调标注需以标准东京方言为依据,同一词形在不同方言中可能有差异(如「はし」:橋=H-L,箸=L-H);
- 多音节复合词需按实际语流切分,不可简单拼接各单词独立声调(如「日本語学校」≠「日本語」+「学校」的声调叠加);
- 若需大规模自动化,建议构建带声调信息的词典 API(如 JMDict + OJAD 数据),再通过 JavaScript 动态注入 .h/.l 类——但务必处理歧义(如「はな」可读作「花」H-L 或「鼻」L-H)。
总之,红线条式声调标注并非 Stack Exchange 的专属功能,而是一种可通过精巧 CSS 实现的专业排版技术。掌握它,意味着你能将严谨的语言学信息,以轻量、可靠、美观的方式嵌入任意网页项目中。