APlayer 中文文档 下载 App

HTML 内嵌方式传递歌词

适用场景

HTML 内嵌方式把歌词直接写在 HTML 页面里。适合:

三个参数配合

参数值含义
lrcType2告诉 APlayer 从 HTML 元素中读取歌词
HTML 元素带有 aplayer-lrc-content 类名的 pre 标签歌词容器,每个歌曲配一个

代码示例

<link rel="stylesheet" href="APlayer.min.css">

<div id="player">
    <!-- 第一首歌的歌词 -->
    <pre class="aplayer-lrc-content">
[00:00.00]歌曲一标题
[00:05.00]歌曲一第一行歌词
[00:10.00]歌曲一第二行歌词
    </pre>

    <!-- 第二首歌的歌词 -->
    <pre class="aplayer-lrc-content">
[00:00.00]歌曲二标题
[00:03.00]歌曲二第一行歌词
[00:08.00]歌曲二第二行歌词
    </pre>
</div>

<script src="APlayer.min.js"></script>
<script>
const ap = new APlayer({
    container: document.getElementById('player'),
    lrcType: 2,  // HTML 内嵌方式
    audio: [
        { name: '歌曲一', artist: 'A', url: '1.mp3', cover: '1.jpg' },
        { name: '歌曲二', artist: 'B', url: '2.mp3', cover: '2.jpg' }
    ]
});
</script>

规则说明

在模板引擎中使用

HTML 内嵌方式在模板引擎(Jekyll、Hugo、Hexo、Nunjucks 等)中特别好用:

Jekyll 示例

<div id="player">
    {% for song in site.data.playlist %}
    <pre class="aplayer-lrc-content">{{ song.lrc }}</pre>
    {% endfor %}
</div>

Hugo 示例

<div id="player">
    {{ range .Params.playlist }}
    <pre class="aplayer-lrc-content">{{ .lrc }}</pre>
    {{ end }}
</div>

三种方式总结

方式lrcType歌词位置适合场景
JS 字符串1audio.lrc 字段写 LRC 文本动态获取、短小歌词
HTML 内嵌2歌词容器标签静态模板、CMS 生成
LRC 文件3独立 .lrc 文件 URL歌词量大、独立管理

三种方式的选择完全取决于你的歌词来源和工程架构——它们在运行时表现完全相同,只是数据传递的途径不一样。

常见问题

歌词容器标签里的缩进

HTML 里的空白字符会被保留。如果你在歌词容器里面缩进了 LRC 内容,这些缩进空格会成为歌词的一部分,可能导致解析问题。建议:

<!-- 好:紧贴标签 -->
<pre class="aplayer-lrc-content">[00:00.00]标题
[00:05.00]歌词
</pre>

<!-- 可能有问题:有缩进 -->
<pre class="aplayer-lrc-content">
    [00:00.00]标题
    [00:05.00]歌词
</pre>

HTML 特殊字符

歌词容器里的歌词如果包含 HTML 特殊字符(如小于号、大于号、与符号),需要用对应的 HTML 实体转义。APlayer 内部会处理 LRC 解析,但浏览器的 HTML 解析阶段会先处理这些字符。