{:5_116:}{:5_116:}{:5_116:}点赞马老师的网络分享精神!
寒冬残荷 发表于 2022-11-20 22:41
点赞马老师的网络分享精神!
感谢支持
红影 发表于 2022-11-20 22:40
现在的人这么依赖电脑,万一哪天全世界的电没了,该怎么活啊
躺平呗到时
红影 发表于 2022-11-20 22:39
这个以后也会经常跑来了。
{:5_108:}
十二、光盘按钮+普通标签进度条(横向排列)
(function(mkPlayer) {let defaults = {lrcAr: [],lrc_css: 'top: 10px; left: 50%; transform: translateX(-50%);',player_css: 'bottom: 20px; left: 50%; transform: translateX(-50%);',playerCode: `<style>#mplayer {position: absolute;bottom: 20px;grid-template-columns: auto auto auto;gap: 6px;display: grid;place-items: center;color: var(--color);font: normal 16px sans-serif;z-index: 999;--ww: 240px;--color: hsla(0,100%,90%,.6);--track: hsla(90,100%,95%,.65);--prog: linear-gradient(90deg,hsla(90,30%,50%,.55),hsla(180,100%,50%,.65));}#btnplay {--state: paused;background: conic-gradient(red,orange,yellow,green,teal,blue,purple);border-radius: 50%;width: 35px;height: 35px;cursor: pointer;animation: rot linear 3s infinite;animation-play-state: var(--state);}#prog {--xx: 0px;width: var(--ww);height: 10px;border-radius: 6px;background: var(--track);position: relative;cursor: pointer;}#prog::before {position: absolute;content: '';width: var(--xx);height: 100%;border-radius: 6px;background: var(--prog);}#lrc {--motion: cover2;--tt: 2s;--state: paused;--bg: linear-gradient(180deg, hsla(60, 50%, 50%, .45), hsla(80, 70%, 50%, .6), hsla(0, 100%, 50%, .75));position: absolute;left: 20px;top: 10px;font: bold 2.4em sans-serif;color: hsl(0, 10%, 90%);white-space: pre;-webkit-background-clip: text;filter: drop-shadow(1px 1px 2px hsla(0, 0%, 0%, .95));}#lrc::before {position: absolute;content: attr(data-lrc);width: 20%;height: 100%;color: transparent;overflow: hidden;white-space: pre;background: var(--bg);filter: inherit;-webkit-background-clip: text;animation: var(--motion) var(--tt) linear forwards;animation-play-state: var(--state);}@keyframes cover1 { from { width: 0; } to { width: 100%; } }@keyframes cover2 { from { width: 0; } to { width: 100%; } }@keyframes rot { to { transform: rotate(1turn); } }</style><div id="lrc" data-lrc="HCPlayer">HCPlayer</div><div id="mplayer"><span id="btnplay"></span><span id="prog"></span><span id="tmsg">00:00 | 00:00</span></div>`,};let playCode = (user_config) => {let data = Object.assign({}, defaults, user_config);papa.innerHTML += data.playerCode;mplayer.style.cssText += data.player_css;lrc.style.cssText += data.lrc_css;let mKey = 0, mFlag = true;btnplay.onclick = () => aud.paused ? aud.play() : aud.pause();prog.onclick = (e) => aud.currentTime = aud.currentTime = aud.duration * e.offsetX / prog.offsetWidth;aud.addEventListener('timeupdate', () => {let prg = aud.currentTime * prog.offsetWidth / aud.duration < 6 ? 6 : aud.currentTime * prog.offsetWidth / aud.duration;tmsg.innerText = `${toMin(aud.currentTime)} | ${toMin(aud.duration)}`;prog.style.setProperty('--xx', prg + 'px');for (j = 0; j < data.lrcAr.length; j++) {if (aud.currentTime >= data.lrcAr) {cKey = j;if (mKey === j) showLrc(data.lrcAr);else continue;}}});aud.addEventListener('pause', () => mState());aud.addEventListener('play', () => mState());aud.addEventListener('seeked', () => calcKey());let mState = () => aud.paused ? (lrc.style.setProperty('--state','paused'),btnplay.style.setProperty('--state', 'paused')) : (lrc.style.setProperty('--state','running'),btnplay.style.setProperty('--state', 'running'));let showLrc = (time) => {let name = mFlag ? 'cover1' : 'cover2';lrc.innerHTML = lrcAr;lrc.dataset.lrc = lrcAr.replace(/<br>/, '\n');lrc.style.setProperty('--motion', name);lrc.style.setProperty('--tt', time + 's');lrc.style.setProperty('--state', 'running');mKey += 1;mFlag = !mFlag;};let calcKey = () => {for (j = 0; j < data.lrcAr.length; j++) {if (aud.currentTime <= data.lrcAr) {mKey = j - 1;break;}}if (mKey < 0) mKey = 0;if (mKey > data.lrcAr.length - 1) mKey = data.lrcAr.length - 1;let time = data.lrcAr - (aud.currentTime - data.lrcAr);showLrc(time);};let toMin = (val) => {if (!val) return '00:00';val = Math.floor(val);let min = parseInt(val / 60),sec = parseFloat(val % 60);if (min < 10) min = '0' + min;if (sec < 10) sec = '0' + sec;return min + ':' + sec;}};mkPlayer.HCPlayer = playCode;})(this);
应用举例:
<script>
//这里是插件代码
//这里是歌词数组代码
HCPlayer({
lrcAr: lrcAr,
lrc_css: `
top: 10px;
left: 50%;
transform: translate(-50%);
--bg: linear-gradient(hsla(100,70%,50%,.35),hsla(120,40%,40%,.6));
color: hsla(120,100%,95%,.95);
`,
player_css: `
bottom: 20px;
--color: white;
--ww: 240px;
--track: snow;
--prog: green;
`,
});
</script>
红色代码是 CSS 变量值设置,--bg 是 歌词颜色,--color 是播放器文本颜色,--ww 是进度条长度,--track 是进度条底轨,--prog 是进度颜色
马黑黑 发表于 2022-11-21 07:23
十二、光盘按钮+普通标签进度条(横向排列)
(function(mkPlayer) {let defaults = {lrcAr: [],lrc_css: ...
我哭。。。打了许多字,一晃没有了{:4_198:}
黑黑第十二个封装播放器出来了,增加了滚动条颜色替换,前面最后2个歌词乱码问题解决了,最近跑医院,会做的慢一点,但会一个个练习完成。
马黑黑 发表于 2022-11-18 21:01
一、圆环播放器
老师讲解得太好了!通俗易懂!这水平去做大学IT老师足足有余!
有了马老师的音频播放器插件制作音画方便了!{:5_112:}
寒冬残荷 发表于 2022-11-21 11:34
有了马老师的音频播放器插件制作音画方便了!
封装的目的就是酱紫的
寒冬残荷 发表于 2022-11-21 10:39
老师讲解得太好了!通俗易懂!这水平去做大学IT老师足足有余!
我不做老师已经很久了,站讲台上回不知所措的{:5_106:}
小辣椒 发表于 2022-11-21 09:52
黑黑第十二个封装播放器出来了,增加了滚动条颜色替换,前面最后2个歌词乱码问题解决了,最近跑医院,会做 ...
这个将来我还会有一个比较详细的总结说明吧,不急的
小辣椒 发表于 2022-11-21 09:48
我哭。。。打了许多字,一晃没有了
手机就是酱紫的,一不小心就误触了
本帖最后由 寒冬残荷 于 2022-11-21 13:13 编辑
老师,一楼的目录中,“10图片背景按钮+progress播放器基于meter进度条,可用图片或渐变背景做按钮”,应该是“progress”吧?
马黑黑 发表于 2022-11-21 07:02
躺平呗到时
戒掉电脑瘾是很难的,到时候需要电脑统计的全要手工了,智能机器也罢工了,而人类早就不会手工操作了{:4_173:}
马黑黑 发表于 2022-11-21 07:07
谢谢黑黑的无私奉献{:5_116:}
红影 发表于 2022-11-21 15:57
谢谢黑黑的无私奉献
{:4_191:}
红影 发表于 2022-11-21 15:55
戒掉电脑瘾是很难的,到时候需要电脑统计的全要手工了,智能机器也罢工了,而人类早就不会手工操作了{:4_ ...
这倒也是呢。如何是好
寒冬残荷 发表于 2022-11-21 13:11
老师,一楼的目录中,“10图片背景按钮+progress播放器基于meter进度条,可用图片或渐变背景做按钮”,应 ...
有空我看看,如果有错误,我会去修改。谢谢反馈。
马黑黑 发表于 2022-11-21 18:50
这倒也是呢。如何是好
跟旅鼠一样集体自杀呗,一切从头再来{:4_173:}