长安忆 TO:老头 (学习套用黑黑她自身效果)
<style>#papa {
margin: 120px 0 0 calc(50% - 720px);
width: 1280px;
height: 720px;
background: gray url('https://pic.imgdb.cn/item/64183dfda682492fcc2be7bc.jpg') center/cover no-repeat;
box-shadow: 3px 3px 20px #000;
position: relative;
z-index: 1;
--state: running;
}
#papa::before {
position: absolute;
content: '';
right: 13.8%;
bottom: 43%;
width: 150px;
height: 150px;
background: url('https://638183.freep.cn/638183/t23/1/heart_133236768103332344.png') 0 0 no-repeat;
background-size: 2900%;
animation: chgBg steps(28) 2s infinite both;
animation-play-state: var(--state);
}
@keyframes chgBg {
0% { background-position: 0%; }
100% { background-position: 100%; }
}
</style>
<div id="papa">
<audio id="aud" src="https://music.163.com/song/media/outer/url?id=1440783517" autoplay loop></audio>
</div>
<script >
(function() {
(function(mkPlayer) {let defaults = {lrcAr: [],lrc_css: 'top: 10px; left: 15px;',player_css: '',playerCode: `<style>#mplayer {position: absolute;left: left: calc(50% - 60px);bottom: 10px;--track: hsla(100,30%,80%,.65);--prog: hsla(100,60%,50%,.55);--color: #e9f1f6;}#btnwrap { display: block; fill: var(--color); opacity: .85; cursor: pointer; }#btnwrap:hover { opacity: 1; }#track { fill: none; stroke: var(--track); }#prog { fill: none; stroke: var(--prog); }#tmsg { fill: var(--color); stroke: none; font: bold 1em sans-serif; }#lrc {--motion: cover2;--tt: 1s;--state: running;--bg: linear-gradient(180deg,hsla(100,10%,50%,.75),hsla(100,100%,20%,.65));position: absolute;font: bold 2.4em sans-serif;color: hsl(100, 100%, 90%);white-space: pre;-webkit-background-clip: text;filter: drop-shadow(1px 1px 2px hsla(0, 100%, 0%, .85));z-index: 900;}#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%; } }</style> <svg id="mplayer"width="120" height="120"><g id="circle_wrap" transform="rotate(-90, 60, 60)" style="cursor: pointer;"><circle id="track" cx="60" cy="60" r="50" stroke-width="10" /><circle id="prog" cx="60" cy="60" r="50" stroke-width="10" /></g><g id="btnwrap"><path id="btnplay" d="M 50 50,50 70,70, 60 z"></path><path id="btnpause" d="M 52 50,52 70,57 70,57 50,52 50 z M 60 50,60 70,65 70,65 50,60 50 z" style="display: none;"></path><path d="M 57 50,60 50,60 70,57 70 z" fill="transparent" /></g><path id="curPath" d="M 20 70 Q 60 0 100 70" fill="none" stroke="none" /><path id="durPath" d="M 20 55 Q 60 110 100 55" fill="none" stroke="none" /><g id="tmsg"><text x="34" y="0"><textPath id="curMsg" xlink:href="#curPath" dominant-baseline="text-after-edge">00:00</textPath></text><text x="29" y="0"><textPath id="durMsg" xlink:href="#durPath" dominant-baseline="text-before-edge">00:00</textPath></text></g></svg><div id="lrc" data-lrc="HCPlayer">HCPlayer</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, cc = { x: 1 * track.getAttribute('cx'), y: 1 * track.getAttribute('cy'), len: track.getTotalLength(), };prog.style.strokeDasharray = prog.style.strokeDashoffset = cc.len;btnwrap.onclick = () => aud.paused ? aud.play() : aud.pause();circle_wrap.onclick = (e) => {let deg = Math.atan2(e.offsetY - cc.y, e.offsetX - cc.x) * 180 / Math.PI;deg += (e.offsetX < cc.x && e.offsetY < cc.y) ? 450 : 90;aud.currentTime = aud.duration * deg / 360;};aud.addEventListener('timeupdate', () => {prog.style.strokeDashoffset = cc.len - cc.len * aud.currentTime / aud.duration;curMsg.textContent = toMin(aud.currentTime);durMsg.textContent = toMin(aud.duration);for (j = 0; j < data.lrcAr.length; j++) {if (aud.currentTime >= data.lrcAr) {if (mKey === j) showLrc(data.lrcAr);else continue;}}});aud.addEventListener('pause', () => mState());aud.addEventListener('play', () => mState());aud.addEventListener('seeked', () => calcKey());let mState = () => aud.paused ? (btnplay.style.display = 'block', btnpause.style.display = 'none', lrc.style.setProperty('--state', 'paused')) : (btnplay.style.display = 'none', btnpause.style.display = 'block', lrc.style.setProperty('--state', 'running'));let showLrc = (time) => {let name = mFlag ? 'cover1' : 'cover2';lrc.innerHTML = data.lrcAr;lrc.dataset.lrc = data.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);
(function(mkFS) {let setFullScreen = (user_set) => {let pa = user_set.pa;if(typeof(pa) !== 'object') return false;if(!user_set.set) user_set.set = 'color: snow; background: black; border: 2px solid snow; left: 40px; bottom: 40px;';btnMsg = document.createElement('span');btnMsg.style.cssText = `position: absolute; border-radius: 8px; padding: 4px; cursor: pointer; z-index:998; ${user_set.set}`;btnMsg.innerText = '全屏观赏';btnMsg.style.display = 'none';pa.appendChild(btnMsg);let timerId, fs = false;btnMsg.onclick = () => fs ? document.exitFullscreen() : pa.requestFullscreen();pa.addEventListener('mousemove', (e) => {clearTimeout(timerId);btnMsg.style.display = 'block';timerId = setTimeout('btnMsg.style.display = "none"', 3000);});document.addEventListener('fullscreenchange', () => {if (document.fullscreenElement !== null) {fs = true;btnMsg.innerText = '退出全屏';} else {fs = false;btnMsg.innerText = '全屏观赏';}});};mkFS.FS = setFullScreen;})(this);
let lrcAr = [
,
,
,
,
,
,
,
,
,
,
,
,
,
,
];
HCPlayer({
lrcAr: lrcAr,
player_css: 'bottom: 8%; right: 11%;',
lrc_css: 'left: 220px; top:100px;',
});
FS({
pa: papa,
set: 'color: snow; background:#225ebf; border: 2px solid snow;right: 50%;bottom: 10%;',
});
papa.addEventListener('click', () => papa.style.setProperty('--state', aud.paused ? 'paused' : 'running'));
})();
</script>
别说用动画人物效果还真棒 {:4_187:} 辣椒好创意! 晚上好!
{:4_204:}{:4_199:}{:4_190:} @马黑黑
黑黑这个小心加大了一点,点击停止的时候你看看对不对 老头后宫{:4_189:} 加的全屏欣赏,全屏打开还是有一点移位,这个调整了许久,只能这样了 送给老头,后宫三千不够,美女继续献爱心{:4_205:} 大猫咪 发表于 2023-3-20 19:36
别说用动画人物效果还真棒辣椒好创意! 晚上好!
猫猫好,今天上来了啊{:4_179:} 大猫咪 发表于 2023-3-20 19:37
老头后宫
哈哈~~~老头最近来的少,估计后宫太忙了{:4_189:} 小辣椒 发表于 2023-3-20 19:40
猫猫好,今天上来了啊
嗯嗯辣椒辛苦 才下班吧注意休息哦{:4_187:}{:4_190:} 小辣椒 发表于 2023-3-20 19:42
哈哈~~~老头最近来的少,估计后宫太忙了
就是 {:4_172:} 大猫咪 发表于 2023-3-20 19:43
嗯嗯辣椒辛苦 才下班吧注意休息哦
今天一个人在自己家里吃饭 大猫咪 发表于 2023-3-20 19:43
就是
看看老头今天来不来{:4_173:} 小辣椒 发表于 2023-3-20 19:45
看看老头今天来不来
{:4_189:}估计忙的差不多了 大猫咪 发表于 2023-3-20 19:46
估计忙的差不多了
哈哈~~~等他了 好创意!欣赏学习!{:4_187:} 小辣椒 发表于 2023-3-20 19:37
@马黑黑
黑黑这个小心加大了一点,点击停止的时候你看看对不对
对的 马黑黑 发表于 2023-3-20 20:01
对的
哦,那就好,否则那些美女献爱心,献错咋办,老头收不到了{:4_170:} 亦是金 发表于 2023-3-20 19:50
好创意!欣赏学习!
谢谢欣赏{:4_187:} 小辣椒 发表于 2023-3-20 20:04
哦,那就好,否则那些美女献爱心,献错咋办,老头收不到了
老头收不到就可惜了 马黑黑 发表于 2023-3-20 20:04
老头收不到就可惜了
最近老头来的少,给他增加一点能量{:4_189:}