马黑PHP整站系统

lrc歌词同步实现原理展示

位置: 首页 > 前端三套件[ 发布时间: 2023.7.28  作者: 马黑  阅读: 364 ]

本例,我们使用一个自定义HTML标签 lrc-geci 及其伪元素展示lrc歌词同步的原理:主元素显示歌词底板,伪元素以相同的歌词不同的前景色覆盖其上模拟同步状态。伪元素的 content 属性是核心实现机制,通过设置属性值 attr(data-xx) 装载与主元素一样的文本,然后通过一些CSS小技巧控制其宽度,这样,歌词同步模拟就可以通过CSS关键帧动画实现,并通过JS对之进行控制。本文仅展示其UI原理,即,伪元素对主元素的覆盖效果,请看代码:

<style>
lrc-geci {
    font: bold 2.4em sans-serif;
    color: lightgreen;
    border: 1px solid lightblue;
    position: absolute;
}
lrc-geci::before {
    position: absolute;
    content: attr(data-lrc);
    color: green;
    width: 25%;
    white-space: pre;
    overflow: hidden;
}
</style>

<lrc-geci data-lrc="君不见黄河之水天上来">君不见黄河之水天上来</lrc-geci>

上面展示的代码,lrc-geci 及其伪元素 ::before 均使用绝对定位,这样它们的尺寸将由内部的文本决定。伪元素的 white-space: pre; 和 overflow: hidden; 非常重要,是保证文本逐一显示的关键。

前一篇: 没有了
下一篇: 让子元素在父元素边界内移动

发表评论:

       

评论列表 [2条]

#2 | 悄然 于 2023-7-28 15:54 发布: 重要的原理课,之前只知道抄着代码用。。。

#1 | 马黑 于 2023-7-28 11:27 发布: lrc歌词同步原理就是这么简单,关键帧动画也不难。但动态、适时给出歌词则需要针对歌词和audio标签进行编程。

Copyright © 2023 All Right Reserved 马黑PHP文章管理整站系统v1.8
联系我们: gxblk@163.com