|
|

楼主 |
发表于 2023-2-3 12:14
|
显示全部楼层
本帖最后由 马黑黑 于 2023-2-3 12:33 编辑
帖子代码- <style>
- #papa { margin: 0 0 0 calc(50% - 593px);; display: grid; place-items: center; width: 1024px; height: 640px; background: gray url('https://638183.freep.cn/638183/t23/webp/znub.webp') no-repeat center/cover; box-shadow: 8px 4px 20px #000; overflow: hidden; user-select: none; position: relative; perspective: 3000px; z-index: 1; }
- </style>
- <div id="papa"></div>
- <audio id="aud" src="https://music.163.com/song/media/outer/url?id=475479888.mp3" loop autoplay></audio>
- <script >
- (function() {
- (function(mkPlayer) {let defaults = {lrcAr: [[2, "花潮LRC在线", 3],[6, "", 1]],ttAr: ['花潮', '论坛', 'LRC', '在线','HCP','Player'],lrc_css: 'top: 20px; left: 50%; transform: translateX(-50%);',player_css: 'bottom: 20px; left: calc(50% - 50px);',playerCode: `<style>#mplayer {--bg1: tan;--bg2: tan;--bg3: tan;--bg4: tan;--bg5: tan;--bg6: tan;--border: 1px dotted orange;position: absolute;width: 120px;height: 80px;cursor: pointer;transform-style: preserve-3d;animation: rot 10s linear infinite;animation-play-state: paused;display: grid;place-items: center;}#mplayer > span {width: 100%;height: 100%;border: var(--border);display: grid;place-items: center;font: norml 1.5em sans-serif;position: absolute;}#btnMsg {--btnColor: white;--btnBg: #0089f0;position: absolute;color: var(--btnColor);background: var(--btnBg);opacity: 0;border: 2px solid var(--btnColor);border-radius: 8px;padding: 4px;transition: all .75s;cursor: pointer;z-index: 901;}#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 rot { to {transform: rotateY(-360deg); } }@keyframes cover1 { from { width: 0; } to { width: 100%; } }@keyframes cover2 { from { width: 0; } to { width: 100%; } }</style><div id="lrc"data-lrc="HCPlayer">HCPlayer</div><div id="mplayer"><span></span><span></span><span></span><span></span><span></span><span></span></div><span id="btnMsg">全屏观赏</span>`,};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;btnMsg.style.cssText += data.btn_css;let mKey = 0,mFlag = true,fs = false,tnow = Date.now(),timerId;let sps = mplayer.children;let width = mplayer.offsetWidth, angle = 60;let trz = Math.ceil(Math.tan(Math.PI / 180 * (180 - angle) /2 ) * width / 2);Array.from(sps).forEach( (item,key) => {let ry = Math.floor(key*60);sps[key].style.transform = `rotateY(${ry}deg) translateZ(${trz}px)`;sps[key].style.background = `var(--bg${key+1})`;sps[key].innerText = data.ttAr[key];});mplayer.onclick = () => aud.paused ? aud.play() : aud.pause();btnMsg.onclick = () => fs ? document.exitFullscreen() : papa.requestFullscreen();papa.onmousemove = (e) => {clearTimeout(timerId);btnMsg.style.opacity = '.95';timerId = setTimeout('btnMsg.style.opacity = "0"', 3000);};document.addEventListener("fullscreenchange", () => {if (document.fullscreenElement !== null) {fs = true;btnMsg.innerText = '退出全屏';} else {fs = false;btnMsg.innerText = '全屏观赏';}});aud.addEventListener('pause', () => mState());aud.addEventListener('play', () => mState());aud.addEventListener('seeked', () => calcKey());let mState = () => aud.paused ? (lrc.style.setProperty('--state', 'paused'), mplayer.style.animationPlayState = 'paused') : (lrc.style.setProperty('--state', 'running'), mplayer.style.animationPlayState = 'running');aud.addEventListener('timeupdate', () => {for (j = 0; j < data.lrcAr.length; j++) {if (aud.currentTime >= data.lrcAr[j][0]) {if (mKey === j) showLrc(data.lrcAr[j][2]);else continue;}}});let showLrc = (time) => {let name = mFlag ? 'cover1' : 'cover2';lrc.innerHTML = data.lrcAr[mKey][1];lrc.dataset.lrc = data.lrcAr[mKey][1].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[j][0]) {mKey = j - 1;break;}}if (mKey < 0) mKey = 0;if (mKey > data.lrcAr.length - 1) mKey = data.lrcAr.length - 1;let time = data.lrcAr[mKey][2] - (aud.currentTime - data.lrcAr[mKey][0]);showLrc(time);};};mkPlayer.HCPlayer = playCode;})(this);
- let lrcAr = [[1.16,"盛哲 - 在你身边",2.7],[3.83,"词曲:盛哲",3.0],[6.86,"安静地又说分开",2.8],[10.83,"没有依赖却是太多依赖",5.0],[18.52,"寂寞的广场中央",2.9],[22.48,"是谁的对白追赶我的空白",5.5],[30.62,"爱就爱了不怕没来过",2.8],[33.57,"恨就恨了我从没想过",3.0],[37.81,"是怕独念一个人太深刻",3.8],[42.35,"爱就爱了不怕没来过",3.0],[45.37,"恨就恨了我从没想过",3.0],[48.87,"到过的地方熟悉曾经的模样",5.0],[54.29,"我以为忘了想念",2.8],[57.84,"而面对夕阳希望你回到今天",6.5],[66.01,"我记得捧你的脸",3.0],[69.75,"在双手之间安静地看你的眼",6.0],[76.37,"像秋天落叶温柔整个世界",6.0],[83.85,"我想在你的身边",3.6],[89.8,"忘了这路有多长",2.7],[93.56,"想和你去看季节慢慢变换",5.5],[101.65,"又来到这座广场",2.7],[105.42,"听风随落叶已是最后一片",6.5],[113.7,"爱就爱了不怕没来过",2.8],[116.5,"恨就恨了我从没想过",3.0],[120.74,"是怕独念一个人太深刻",4.0],[125.26,"爱就爱了不怕没来过",3.1],[128.34,"恨就恨了我从没想过",3.0],[131.97,"到过的地方熟悉曾经的模样",5.1],[137.07,"我以为忘了想念",3.5],[140.69,"而面对夕阳希望你回到今天",6.4],[148.89,"我记得捧你的脸",3.3],[152.65,"在双手之间安静地看你的眼",6.4],[159.28,"像秋天落叶温柔整个世界",6.2],[166.94,"我想在你的身边",3.2],[172.86,"我想在你的身边",3.4],[178.74,"我想在你的身边",4.4],[184.71,"就让那往事随风",3.3],[188.27,"让它带走伤带走痛",2.1],[190.75,"带回那日暮的梦",3.9],[195.08,"花开落",2.6],[198.1,"云会走",2.2],[201.56,"铺满天",1.8],[204.07,"而你笑着在我的身边",4.3],[208.35,"我以为忘了想念",3.2],[211.98,"而面对夕阳希望你回到今天",5.8],[220.21,"我记得捧你的脸",3.0],[223.74,"在双手之间安静地看你的眼",6.0],[230.39,"像秋天落叶温柔整个世界",6.2],[238.13,"我想在你的身边",3.5],[243.89,"我想在你的身边",3.5],[249.88,"我想在你的身边",3.5],[254.55,"在你的身边",2.0]];
- HCPlayer({
- lrcAr: lrcAr,
- lrc_css:`
- --bg: linear-gradient(hsla(180,55%,40%,.15),hsla(200,90%,45%,.7));
- top: 20px;
- color: snow;
- `,
- ttAr: ['','','','','',''],
- player_css: `
- --bg1: url('https://638183.freep.cn/638183/t23/1/ub1.webp') no-repeat center/cover;
- --bg2: url('https://638183.freep.cn/638183/t23/1/ub2.webp') no-repeat center/cover;
- --bg3: url('https://638183.freep.cn/638183/t23/1/ub3.webp') no-repeat center/cover;
- --bg4: url('https://638183.freep.cn/638183/t23/1/ub4.webp') no-repeat center/cover;
- --bg5: url('https://638183.freep.cn/638183/t23/1/ub5.webp') no-repeat center/cover;
- --bg6: url('https://638183.freep.cn/638183/t23/1/ub6.webp') no-repeat center/cover;
- --border: 1px dotted olive;
- width: 120px;
- height: 100px;
- top: 120px;
- `,
- btn_css: '--btnColor: white; --btnBg: transparent;',
- });
- })();
- </script>
复制代码 插件接口参数中,增加一个 btn_css 变量,用于接收全屏按钮数据,--btnColor 设置按钮的文本和边框颜色,--bntGb 用于设置按钮背景色。
|
|