评论资讯 [ 总 424 则 ]
·了了 - 2024-12-18 21:32
·悄然 - 2024-12-17 15:19
·悄然 - 2024-12-15 15:12
·悄然 - 2024-12-9 12:32
·飞飞 - 2024-12-9 12:31
·小希 - 2024-12-7 11:50
·飞飞 - 2024-12-5 15:53
·飞飞 - 2024-12-3 16:42
·悄然 - 2024-12-3 16:41
·飞飞 - 2024-12-1 18:27
·悄然 - 2024-12-17 15:19
·悄然 - 2024-12-15 15:12
·悄然 - 2024-12-9 12:32
·飞飞 - 2024-12-9 12:31
·小希 - 2024-12-7 11:50
·飞飞 - 2024-12-5 15:53
·飞飞 - 2024-12-3 16:42
·悄然 - 2024-12-3 16:41
·飞飞 - 2024-12-1 18:27
友情链接
网站统计
lrc歌词同步实现原理展示
本例,我们使用一个自定义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标签进行编程。