千灯展卷
<style>#papa { margin: 0 0 0 calc(50% - 621px); display: grid; place-items: center; width: 1080px; height: 683px; background: url('https://638183.freep.cn/638183/t24/1/bbce.jpeg') no-repeat center/cover, radial-gradient(black, rgba(0,150,150,.2)); background-blend-mode: screen; box-shadow: 3px 3px 20px #000; overflow: hidden; position: relative; z-index: 1; }
#lrc { position: absolute; top: 10px; font: bold 2.4em sans-serif; color: gray; text-shadow: 1px 1px 1px rgba(250,250,250,.45); --ani: lrcGo1; --duration: 1s; }
#lrc::before { position: absolute; content: attr(data-lrc); width: 100%; height: 100%; color: transparent; background: repeating-radial-gradient(circle, orange, snow 28px); background-clip: text; -webkit-background-clip: text; clip-path: inset(0 100% 0 0); animation: var(--ani) var(--duration) linear forwards var(--state); border-bottom: 2px dotted gray; }
#mplayer { position: absolute; bottom: 10px; text-align: center; color: lightblue; }
#mplayer::before { position: absolute; content: attr(data-tt); left: 0; bottom: 25px; width: 100%; text-align-last: justify; }
#mprog { width: 280px; accent-color: orange; outline: none; cursor: pointer; opacity: .7; }
#mprog:focus { accent-color: gold; }
#btnplay { width: 50px; height: 50px; cursor: pointer; animation: rotating 6s infinite linear var(--state); }
#btnplay:hover { filter: invert(.2); }
li-zi { position: absolute; background: url('https://638183.freep.cn/638183/t23/btn/y5j.png') no-repeat center/cover; offset-path: path('M0 400 Q570 -260 1140 400'); offset-distance: 0; animation: move 10s linear infinite var(--state), rotating 5s infinite var(--state); }
@keyframes rotating { to { transform: rotate(360deg); } }
@keyframes lrcGo0 { to { clip-path: inset(0 0 0 0); } }
@keyframes lrcGo1 { to { clip-path: inset(0 0 0 0); } }
@keyframes move { to { offset-distance: 100%; } }
</style>
<div id="papa">
<audio src="https://music.163.com/song/media/outer/url?id=2016147084"></audio>
<div id="mplayer" data-tt="0:00 0:00">
<img id="btnplay" src="https://638183.freep.cn/638183/t23/btn/y5j.png" alt="" /><br>
<input id="mprog" type="range" min="0" max="100" step="any" value="0" title="调节进度" />
</div>
<div id="lrc" data-lrc="HuaChao LRC">HuaChao LRC</div>
</div>
<script>
var geci = [ , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , ];
var sF = document.createElement('script');
sF.charset = 'utf-8';
sF.src = 'https://638183.freep.cn/638183/web/js/rangelrc2024-01.js';
document.querySelector('body').appendChild(sF);
sF.onload = () => {
Array.from({length: all=40}).forEach(star => {
var size = 30 + Math.floor(Math.random() * 30);
star = document.createElement('li-zi');
star.style.cssText += `
left: 0;
top: ${Math.random() * 140 + 60}px;
width: ${size}px;
height: ${size}px;
opacity: ${Math.random() * 0.4 + 0.4};
animation-delay: -${Math.random() * 10}s, -${Math.random() * 5}s;
`;
papa.prepend(star);
});
};
</script>
本帖最后由 马黑黑 于 2024-2-28 08:46 编辑 <br /><br /><h2>帖子代码</h2>
<style>
.mum { position: relative; margin: 0; padding: 10px; font: normal 16px/20px Consolas, Monaco, 'Andale Mono', 'Ubuntu Mono', monospace; color: black; background: rgba(240, 240, 240,.95); box-shadow: 2px 2px 4px gray; border: thick groove lightblue; border-radius: 6px; }
.mum ::selection { background-color: rgba(0,100,100,.35); }
.mum div { margin: 0; padding: 0; }
.mum cl-cd { display: block; position: relative; margin: 0 0 0 50px; padding: 0 0 0 10px; white-space: pre-wrap; overflow-wrap: break-word; border-left: 1px solid silver; }
.mum cl-cd::before { position: absolute; content: attr(data-idx); width: 50px; color: gray; text-align: right; transform: translate(-70px); }
.tRed { color: red; }
.tBlue { color: blue; }
.tGreen { color: green; }
.tDarkRed { color: darkred; }
.tMagenta { color: magenta; }
</style>
<div class='mum'>
<cl-cd data-idx="1"><style></cl-cd>
<cl-cd data-idx="2"> #papa { <span class="tBlue">margin:</span> 0 0 0 calc(50% - 621px); <span class="tBlue">display:</span> grid; <span class="tBlue">place-items:</span> center; <span class="tBlue">width:</span> 1080px; <span class="tBlue">height:</span> 683px; <span class="tBlue">background:</span> url(<span class="tMagenta">'https://638183.freep.cn/638183/t24/1/bbce.jpeg'</span>) no-repeat center/cover, radial-gradient(black, rgba(0,150,150,.2)); <span class="tBlue">background-blend-mode:</span> screen; <span class="tBlue">box-shadow:</span> 3px 3px 20px #000; <span class="tBlue">overflow:</span> hidden; <span class="tBlue">position:</span> relative; <span class="tBlue">z-index:</span> 1; }</cl-cd>
<cl-cd data-idx="3"> #lrc { <span class="tBlue">position:</span> absolute; <span class="tBlue">top:</span> 10px; <span class="tBlue">font:</span> bold 2.4em sans-serif; <span class="tBlue">color:</span> gray; <span class="tBlue">text-shadow:</span> 1px 1px 1px rgba(250,250,250,.45); <span class="tBlue">--ani:</span> lrcGo1; <span class="tBlue">--duration:</span> 1s; }</cl-cd>
<cl-cd data-idx="4"> #lrc::before { <span class="tBlue">position:</span> absolute; <span class="tBlue">content:</span> attr(data-lrc); <span class="tBlue">width:</span> 100%; <span class="tBlue">height:</span> 100%; <span class="tBlue">color:</span> transparent; <span class="tBlue">background:</span> repeating-radial-gradient(circle, orange, snow 28px); <span class="tBlue">background-clip:</span> text; <span class="tBlue">-webkit-background-clip:</span> text; <span class="tBlue">clip-path:</span> inset(0 100% 0 0); <span class="tBlue">animation:</span> <span class="tBlue">var</span>(--ani) <span class="tBlue">var</span>(--duration) linear forwards <span class="tBlue">var</span>(--state); <span class="tBlue">border-bottom:</span> 2px dotted gray; }</cl-cd>
<cl-cd data-idx="5"> #mplayer { <span class="tBlue">position:</span> absolute; <span class="tBlue">bottom:</span> 10px; <span class="tBlue">text-align:</span> center; <span class="tBlue">color:</span> lightblue; }</cl-cd>
<cl-cd data-idx="6"> #mplayer::before { <span class="tBlue">position:</span> absolute; <span class="tBlue">content:</span> attr(data-tt); <span class="tBlue">left:</span> 0; <span class="tBlue">bottom:</span> 25px; <span class="tBlue">width:</span> 100%; <span class="tBlue">text-align-last:</span> justify; }</cl-cd>
<cl-cd data-idx="7"> #mprog { <span class="tBlue">width:</span> 280px; <span class="tBlue">accent-color:</span> orange; <span class="tBlue">outline:</span> none; <span class="tBlue">cursor:</span> pointer; <span class="tBlue">opacity:</span> .7; }</cl-cd>
<cl-cd data-idx="8"> #<span class="tBlue">mprog:</span>focus { <span class="tBlue">accent-color:</span> gold; }</cl-cd>
<cl-cd data-idx="9"> #btnplay { <span class="tBlue">width:</span> 50px; <span class="tBlue">height:</span> 50px; <span class="tBlue">cursor:</span> pointer; <span class="tBlue">animation:</span> rotating 6s infinite linear <span class="tBlue">var</span>(--state); }</cl-cd>
<cl-cd data-idx="10"> #<span class="tBlue">btnplay:</span>hover { <span class="tBlue">filter:</span> invert(.2); }</cl-cd>
<cl-cd data-idx="11"> li-zi { <span class="tBlue">position:</span> absolute; <span class="tBlue">background:</span> url(<span class="tMagenta">'https://638183.freep.cn/638183/t23/btn/y5j.png'</span>) no-repeat center/cover; <span class="tBlue">offset-path:</span> path(<span class="tMagenta">'M0 400 Q570 -260 1140 400'</span>); <span class="tBlue">offset-distance:</span> 0; <span class="tBlue">animation:</span> move 10s linear infinite <span class="tBlue">var</span>(--state), rotating 5s infinite <span class="tBlue">var</span>(--state); }</cl-cd>
<cl-cd data-idx="12"> @keyframes rotating { to { <span class="tBlue">transform:</span> rotate(360deg); } }</cl-cd>
<cl-cd data-idx="13"> @keyframes lrcGo0 { to { <span class="tBlue">clip-path:</span> inset(0 0 0 0); } }</cl-cd>
<cl-cd data-idx="14"> @keyframes lrcGo1 { to { <span class="tBlue">clip-path:</span> inset(0 0 0 0); } }</cl-cd>
<cl-cd data-idx="15"> @keyframes move { to { <span class="tBlue">offset-distance:</span> 100%; } }</cl-cd>
<cl-cd data-idx="16"></style></cl-cd>
<cl-cd data-idx="17"><br></cl-cd>
<cl-cd data-idx="18"><div <span class="tRed">id</span>=<span class="tMagenta">"papa"</span>></cl-cd>
<cl-cd data-idx="19"> <audio src=<span class="tMagenta">"https://music.163.com/song/media/outer/url?<span class="tRed">id</span>=2016147084"</span>></audio></cl-cd>
<cl-cd data-idx="20"> <div <span class="tRed">id</span>=<span class="tMagenta">"mplayer"</span> data-tt=<span class="tMagenta">"0:00 0:00"</span>></cl-cd>
<cl-cd data-idx="21"> <img <span class="tRed">id</span>=<span class="tMagenta">"btnplay"</span> src=<span class="tMagenta">"https://638183.freep.cn/638183/t23/btn/y5j.png"</span> alt=<span class="tMagenta">""</span> /><br></cl-cd>
<cl-cd data-idx="22"> <input <span class="tRed">id</span>=<span class="tMagenta">"mprog"</span> type=<span class="tMagenta">"range"</span> min=<span class="tMagenta">"0"</span> max=<span class="tMagenta">"100"</span> step=<span class="tMagenta">"any"</span> value=<span class="tMagenta">"0"</span> title=<span class="tMagenta">"调节进度"</span> /></cl-cd>
<cl-cd data-idx="23"> </div></cl-cd>
<cl-cd data-idx="24"> <div <span class="tRed">id</span>=<span class="tMagenta">"lrc"</span> data-lrc=<span class="tMagenta">"HuaChao LRC"</span>>HuaChao LRC</div></cl-cd>
<cl-cd data-idx="25"></div></cl-cd>
<cl-cd data-idx="26"><br></cl-cd>
<cl-cd data-idx="27"><script></cl-cd>
<cl-cd data-idx="28"><span class="tBlue">var</span> geci = [ , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , ];</cl-cd>
<cl-cd data-idx="29"><span class="tBlue">var</span> sF = <span class="tRed">document</span>.createElement(<span class="tMagenta">'script'</span>);</cl-cd>
<cl-cd data-idx="30">sF.charset = <span class="tMagenta">'utf-8'</span>;</cl-cd>
<cl-cd data-idx="31">sF.src = <span class="tMagenta">'https://638183.freep.cn/638183/web/js/rangelrc2024-01.js'</span>;</cl-cd>
<cl-cd data-idx="32"><span class="tRed">document</span>.querySelector(<span class="tMagenta">'body'</span>).appendChild(sF);</cl-cd>
<cl-cd data-idx="33">sF.onload = () => {</cl-cd>
<cl-cd data-idx="34"> <span class="tRed">Array</span>.from({<span class="tBlue">length:</span> all=40}).forEach(star => {</cl-cd>
<cl-cd data-idx="35"> <span class="tBlue">var</span> size = 30 + <span class="tRed">Math</span>.floor(<span class="tRed">Math</span>.random() * 30);</cl-cd>
<cl-cd data-idx="36"> star = <span class="tRed">document</span>.createElement(<span class="tMagenta">'li-zi'</span>);</cl-cd>
<cl-cd data-idx="37"> star.style.cssText += `</cl-cd>
<cl-cd data-idx="38"> <span class="tBlue">left:</span> 0;</cl-cd>
<cl-cd data-idx="39"> <span class="tBlue">top:</span> ${<span class="tRed">Math</span>.random() * 140 + 60}px;</cl-cd>
<cl-cd data-idx="40"> <span class="tBlue">width:</span> ${size}px;</cl-cd>
<cl-cd data-idx="41"> <span class="tBlue">height:</span> ${size}px;</cl-cd>
<cl-cd data-idx="42"> <span class="tBlue">opacity:</span> ${<span class="tRed">Math</span>.random() * 0.4 + 0.4};</cl-cd>
<cl-cd data-idx="43"> <span class="tBlue">animation-delay:</span> -${<span class="tRed">Math</span>.random() * 10}s, -${<span class="tRed">Math</span>.random() * 5}s;</cl-cd>
<cl-cd data-idx="44"> `;</cl-cd>
<cl-cd data-idx="45"> papa.prepend(star);</cl-cd>
<cl-cd data-idx="46"> });</cl-cd>
<cl-cd data-idx="47">};</cl-cd>
<cl-cd data-idx="48"></script></cl-cd>
</div> 按钮和粒子都是这些可爱的小星星呢,真美。
粒子用JS加了那么多大小不一、明暗相间、轨迹错落的小星星,增添了许多活泼的趣味{:4_199:} 歌词的景象渐变也很漂亮,跟小星星那么搭配。
歌词的内容很喜庆呢,很适合灯节。这个帖子太完美了{:4_199:} 太太完美鸟{:4_195:} 仔细看了这歌词也写得特别好。 嗬!璀璨夺目、灿若繁星,太美啦!歌曲也很好听。{:5_116:} 老师的音画好漂亮啊!好想学习也制作一下,不知道如何下手 老师的音画好漂亮啊!好想学习也制作一下,不知道如何下手 执著 发表于 2024-2-28 21:36
老师的音画好漂亮啊!好想学习也制作一下,不知道如何下手
如果没有代码基础,就先套用,换个图片,换个音乐,换个按钮啥的 马黑黑 发表于 2024-2-28 21:37
如果没有代码基础,就先套用,换个图片,换个音乐,换个按钮啥的
好的,谢谢老师指点 执著 发表于 2024-2-28 21:44
好的,谢谢老师指点
{:4_190:} 灯光璀璨。锣鼓喧天。。。有仪式感的节日贴。。。 星星点灯。。。 南无月 发表于 2024-2-29 17:14
星星点灯。。。
点着木有 马黑黑 发表于 2024-2-29 18:28
点着木有
木有不可能滴 南无月 发表于 2024-2-29 18:30
木有不可能滴
那太厉害了 马黑黑 发表于 2024-2-29 18:34
那太厉害了
木有是不可能滴。。
厉害是木有滴 南无月 发表于 2024-2-29 18:45
木有是不可能滴。。
厉害是木有滴
也许厉害就是厉害