马黑黑 发表于 2024-5-12 10:47

时空撞击

<style>
        #mybox { margin: 20px 0 20px calc(50% - 593px); width: 1024px; height: 576px; background: url('https://638183.freep.cn/638183/t24/webp/1000.webp') no-repeat center/cover; box-shadow: 3px 3px 6px gray; overflow: hidden; z-index: 1; position: relative; }
        #canv { position: absolute; mix-blend-mode: screen; }
        #player { position: absolute; left: 30px; top: 30px; cursor: pointer; animation: rot 8s linear infinite var(--state); }
        #mybox > video { position: absolute; bottom: 0; width: 100%; height: calc(100% + 60px); object-fit: cover; mix-blend-mode: screen; }
        @keyframes rot { to { transform: rotate(360deg); } }
</style>

<div id="mybox">
        <audio id="aud" src="https://music.163.com/song/media/outer/url?id=1996509792" autoplay loop></audio>
        <video src="https://img.tukuppt.com/video_show/2405179/00/02/42/5b5fca1e49229.mp4" loop muted></video>
        <canvas width="1024" height="576" id="canv"></canvas>
        <img id="player" src="https://638183.freep.cn/638183/small/14w.png" width="120" height="120" alt="" title="播放/暂停" />
</div>

<script>
        var sF = document.createElement('script');
        sF.src = 'https://638183.freep.cn/638183/web/js2024/oc-lz.js';
        document.body.appendChild(sF);
        var lz = {papa: mybox, hue: 60, total: 10000, deep: -80};
        player.onclick = () => aud.paused ? aud.play() : aud.pause();
</script>

马黑黑 发表于 2024-5-12 10:53

关于 lz 的 hue 参数,解释一下:

lz 的颜色使用 hsl 颜色表达体系,h 指的是 hue,具体指色环中的度数,取值在 0~360 之间。lz 的颜色取决于 hue 值的设定,它们在起伏的时候会在此基础上产生一定的色差。

相关约定:

canvas id="canv",audio id="aud",这两个不能改。canvas画布的尺寸建议与帖子容器大小一致,特许需要可以自行设置。

马黑黑 发表于 2024-5-12 10:47

<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>

<h2>帖子代码</h2>
<div class='mum'>
<cl-cd data-idx="1">&lt;<span class="tDarkRed">style</span>&gt;</cl-cd>
<cl-cd data-idx="2">&nbsp; &nbsp; #mybox { <span class="tBlue">margin:</span> 20px 0 20px calc(50% - 593px); <span class="tBlue">width:</span> 1024px; <span class="tBlue">height:</span> 576px; <span class="tBlue">background:</span> url(<span class="tMagenta">'https://638183.freep.cn/638183/t24/webp/1000.webp'</span>) no-repeat center/cover; <span class="tBlue">box-shadow:</span> 3px 3px 6px gray; <span class="tBlue">overflow:</span> hidden; <span class="tBlue">position:</span> relative; }</cl-cd>
<cl-cd data-idx="3">&nbsp; &nbsp; #canv { <span class="tBlue">position:</span> absolute; <span class="tBlue">mix-blend-mode:</span> screen; }</cl-cd>
<cl-cd data-idx="4">&nbsp; &nbsp; #player { <span class="tBlue">position:</span> absolute; <span class="tBlue">left:</span> 30px; <span class="tBlue">top:</span> 30px; <span class="tBlue">cursor:</span> pointer; <span class="tBlue">animation:</span> rot 8s linear infinite <span class="tBlue">var</span>(--state); }</cl-cd>
<cl-cd data-idx="5">&nbsp; &nbsp; #mybox &gt; video { <span class="tBlue">position:</span> absolute; <span class="tBlue">bottom:</span> 0; <span class="tBlue">width:</span> 100%; <span class="tBlue">height:</span> calc(100% + 60px); <span class="tBlue">object-fit:</span> cover; <span class="tBlue">mix-blend-mode:</span> screen; }</cl-cd>
<cl-cd data-idx="6">&nbsp; &nbsp; @keyframes rot { to { <span class="tBlue">transform:</span> rotate(360deg); } }</cl-cd>
<cl-cd data-idx="7">&lt;<span class="tDarkRed">/style</span>&gt;</cl-cd>
<cl-cd data-idx="8">&nbsp;</cl-cd>
<cl-cd data-idx="9">&lt;<span class="tDarkRed">div</span> <span class="tRed">id</span>=<span class="tMagenta">"mybox"</span>&gt;</cl-cd>
<cl-cd data-idx="10">&nbsp; &nbsp; &lt;<span class="tDarkRed">audio</span> <span class="tRed">id</span>=<span class="tMagenta">"aud"</span> src=<span class="tMagenta">"https://music.163.com/song/media/outer/url?<span class="tRed">id</span>=1996509792"</span> autoplay loop&gt;&lt;<span class="tDarkRed">/audio</span>&gt;</cl-cd>
<cl-cd data-idx="11">&nbsp; &nbsp; &lt;<span class="tDarkRed">video</span> src=<span class="tMagenta">"https://img.tukuppt.com/video_show/2405179/00/02/42/5b5fca1e49229.mp4"</span> loop muted&gt;&lt;<span class="tDarkRed">/video</span>&gt;</cl-cd>
<cl-cd data-idx="12">&nbsp; &nbsp; &lt;<span class="tDarkRed">canvas</span> width=<span class="tMagenta">"1024"</span> height=<span class="tMagenta">"576"</span> <span class="tRed">id</span>=<span class="tMagenta">"canv"</span>&gt;&lt;<span class="tDarkRed">/canvas</span>&gt;</cl-cd>
<cl-cd data-idx="13">&nbsp; &nbsp; &lt;<span class="tDarkRed">img</span> <span class="tRed">id</span>=<span class="tMagenta">"player"</span> src=<span class="tMagenta">"https://638183.freep.cn/638183/small/14w.png"</span> width=<span class="tMagenta">"120"</span> height=<span class="tMagenta">"120"</span> alt=<span class="tMagenta">""</span> title=<span class="tMagenta">"播放/暂停"</span> /&gt;</cl-cd>
<cl-cd data-idx="14">&lt;<span class="tDarkRed">/div</span>&gt;</cl-cd>
<cl-cd data-idx="15">&nbsp;</cl-cd>
<cl-cd data-idx="16">&lt;<span class="tDarkRed">script</span>&gt;</cl-cd>
<cl-cd data-idx="17">&nbsp; &nbsp; <span class="tBlue">var</span> sF = <span class="tRed">document</span>.createElement(<span class="tMagenta">'script'</span>);</cl-cd>
<cl-cd data-idx="18">&nbsp; &nbsp; sF.src = <span class="tMagenta">'https://638183.freep.cn/638183/web/js2024/oc-lz.js'</span>;</cl-cd>
<cl-cd data-idx="19">&nbsp; &nbsp; <span class="tRed">document</span>.body.appendChild(sF);</cl-cd>
<div class="tGreen"><cl-cd data-idx="20">&nbsp; &nbsp; /* 粒子配置</cl-cd>
<cl-cd data-idx="21">&nbsp; &nbsp;    papa&nbsp;: 指定帖子容器 <span class="tRed">id</span>(不要引号)</cl-cd>
<cl-cd data-idx="22">&nbsp; &nbsp;    hue&nbsp;: 粒子色彩在色环中的角度(0~360)</cl-cd>
<cl-cd data-idx="23">&nbsp; &nbsp;    total&nbsp;: 粒子数量</cl-cd>
<cl-cd data-idx="24">&nbsp; &nbsp;    deep&nbsp;: 粒子起伏深度(负值朝下起伏、正值朝上起伏)</cl-cd>
<cl-cd data-idx="25">&nbsp; &nbsp; */</cl-cd></div>
<cl-cd data-idx="26">&nbsp; &nbsp; <span class="tBlue">var</span> lz = {<span class="tBlue">papa:</span> mybox, <span class="tBlue">hue:</span> 60, <span class="tBlue">total:</span> 10000, <span class="tBlue">deep:</span> -80};</cl-cd>
<cl-cd data-idx="27">&nbsp; &nbsp; player.onclick = () =&gt; aud.paused ? aud.play() : aud.pause();</cl-cd>
<cl-cd data-idx="28">&lt;<span class="tDarkRed">/script</span>&gt;</cl-cd>
</div>

朵拉 发表于 2024-5-12 10:48

这效果 赞一个{:4_178:}

愤怒的葡萄 发表于 2024-5-12 11:16

这个音画作品看上去挺酷的。

起个网名好难 发表于 2024-5-12 11:30

https://img.soogif.com/olrt53z1tMMdY6VqE2K7nSCkMRVWeFe0.gif

南无月 发表于 2024-5-12 12:25

这个粒子波浪效果酷炫,气势磅礴。。
视 频和背景色彩一体化,漂亮。。{:4_199:}

南无月 发表于 2024-5-12 12:26

马黑黑 发表于 2024-5-12 10:53
关于 lz 的 hue 参数,解释一下:

lz 的颜色使用 hsl 颜色表达体系,h 指的是 hue,具体指色环中的度数 ...

说明很详细,颜色原来在这里改的{:4_199:}

红影 发表于 2024-5-12 14:41

这场景太壮观了,这样的粒子真惊艳{:4_199:}

红影 发表于 2024-5-12 14:43

这视频也找得这么好,和粒子这么相配的,黑黑太棒了{:4_199:}

马黑黑 发表于 2024-5-12 15:00

南无月 发表于 2024-5-12 12:26
说明很详细,颜色原来在这里改的

{:4_181:}

马黑黑 发表于 2024-5-12 15:00

红影 发表于 2024-5-12 14:43
这视频也找得这么好,和粒子这么相配的,黑黑太棒了

{:4_203:}

马黑黑 发表于 2024-5-12 15:01

红影 发表于 2024-5-12 14:41
这场景太壮观了,这样的粒子真惊艳

还不错

南无月 发表于 2024-5-12 17:09

马黑黑 发表于 2024-5-12 15:00


粒子有一万个,{:4_170:}一万年就是这么多

马黑黑 发表于 2024-5-12 18:14

南无月 发表于 2024-5-12 17:09
粒子有一万个,一万年就是这么多

因为要模拟3d,波浪线由点组成,所以需要这么多的点,最少应不低于5000。

红影 发表于 2024-5-12 19:21

马黑黑 发表于 2024-5-12 15:00


这个效果好看,空了我也去学做个{:4_187:}

红影 发表于 2024-5-12 19:21

马黑黑 发表于 2024-5-12 15:01
还不错

效果很震撼{:4_187:}

马黑黑 发表于 2024-5-12 19:22

红影 发表于 2024-5-12 19:21
这个效果好看,空了我也去学做个

相对来说比较简单的,设计好帖子就行

马黑黑 发表于 2024-5-12 19:22

红影 发表于 2024-5-12 19:21
效果很震撼

视频和画布动画相得益彰

南无月 发表于 2024-5-12 21:20

马黑黑 发表于 2024-5-12 18:14
因为要模拟3d,波浪线由点组成,所以需要这么多的点,最少应不低于5000。

之前那个有粒子点个数设置吗。
我以为这类粒子数应是固定的,不能随意更改,不然达不到最优效果
既然可改,回头就试着改看看。。
页: [1] 2 3 4
查看完整版本: 时空撞击