在我身边(to红影)
<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: [,],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.style.transform = `rotateY(${ry}deg) translateZ(${trz}px)`;sps.style.background = `var(--bg${key+1})`;sps.innerText = data.ttAr;});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) {if (mKey === j) showLrc(data.lrcAr);else continue;}}});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);};};mkPlayer.HCPlayer = playCode;})(this);
let lrcAr = [,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,];
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>
本帖最后由 马黑黑 于 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: [,],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.style.transform = `rotateY(${ry}deg) translateZ(${trz}px)`;sps.style.background = `var(--bg${key+1})`;sps.innerText = data.ttAr;});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) {if (mKey === j) showLrc(data.lrcAr);else continue;}}});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);};};mkPlayer.HCPlayer = playCode;})(this);
let lrcAr = [,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,];
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 用于设置按钮背景色。
27行代码:
--border: 1px dotted olive;
作用是给播放器面板加边框,可以随意,比如 2px dashed red ,语句合法、设置合理就好。 这个画面挺有意思的。 感谢老师的分享,真不错!{:4_190:} 怕黑黑还要留楼层,就没敢回复。果然,等到了代码解说。{:4_173:} 欣赏老师佳作! 云在水中水融天,这个场景还开阔啊。平转的六面图图,让这美妙的场景带了人文气息。谢谢黑黑的好礼{:4_187:}
感谢老师的分享,真不错! 这个横着转的多了两张照片 两种都大气,漂亮{:4_199:}老师的教程快跟不上了{:4_187:} 红影 发表于 2023-2-3 14:16
怕黑黑还要留楼层,就没敢回复。果然,等到了代码解说。
就是这样一点点变换解说,黑师真的太细致了 花式图片旋转,黑黑精彩不断{:4_178:} 红影 发表于 2023-2-3 14:16
怕黑黑还要留楼层,就没敢回复。果然,等到了代码解说。
亲爱的,收礼开心{:4_171:} 小辣椒 发表于 2023-2-3 16:49
花式图片旋转,黑黑精彩不断
玩玩 梦油 发表于 2023-2-3 12:53
这个画面挺有意思的。
空旷而不空荡 梦缘 发表于 2023-2-3 13:57
感谢老师的分享,真不错!
感谢支持 红影 发表于 2023-2-3 14:16
怕黑黑还要留楼层,就没敢回复。果然,等到了代码解说。
说一点点而已,很多不需要重复的 雨中悄然 发表于 2023-2-3 15:55
就是这样一点点变换解说,黑师真的太细致了
{:4_196:} 海笑 发表于 2023-2-3 14:16
欣赏老师佳作!
感谢支持