南无月试贴
本帖最后由 南无月 于 2024-8-3 21:03 编辑 <br /><br /><style>#mydiv {
margin: 30px 0 30px calc(50% - 931px);
width: 1700px;
height:900px;
background: url('https://pic.imgdb.cn/item/66ae2051d9c307b7e9ddd76d.jpg') no-repeat center/cover;
display: grid;
place-items: center;
pointer-events: none;
box-shadow: 0 0 6px rgba(0,0,0,.6);
z-index: 1;
position: relative;
overflow: hidden;
--conic: 2%;
}
#mydiv::before {
position: absolute;
content: '';
top: 0px;
width: 1700px;
height:900px;
background: url('https://pic.imgdb.cn/item/66ae12fed9c307b7e9c98879.png') no-repeat center/cover;
z-index: 5;
}
#mydiv::after {
position: absolute;
content: '';
left:160px;
bottom: 300px;
width: 120px;
height: 120px;
background: repeating-conic-gradient(transparent, CadetBlue, transparent 6% var(--conic));
-webkit-mask: url('https://638183.freep.cn/638183/small/7s.png') no-repeat center/cover;
pointer-events: auto;
cursor: pointer;
animation: rot 8s linear infinite var(--state);
transform: rotate(var(--deg));
z-index: 4;
}
#mydiv:hover::after { --conic: 6%; filter: hue-rotate(210deg);}
#vid1 {
top:-80px;
position: absolute;
width: 100%;
height: 100%;
object-fit: cover;
-webkit-mask: linear-gradient(to top, transparent,red);
z-index: 2;
}
#vid2 {
bottom:-100px;
position: absolute;
width: 100%;
height: 80%;
opacity: .80;
object-fit: cover;
mix-blend-mode: multiply;
-webkit-mask: linear-gradient(to bottom,transparent,transparent, red);
z-index: 3;
}
@keyframes rot {
to { transform: rotate(1turn); }
}
</style>
<div id="mydiv">
<audio id="aud" src="https://music.163.com/song/media/outer/url?id=1485774690" autoplay loop></audio>
<video id="vid1" src="https://img.tukuppt.com/video_show/2418175/00/01/72/5b49440ab4e45.mp4" autoplay loop muted></video>
<video id="vid2" src="https://img.tukuppt.com/video_show/2475824/00/01/72/5b492fae7af99.mp4" autoplay loop muted></video>
</div>
<script>
aud.oncanplay = aud.onplaying = aud.onpause = () => {
mydiv.style.setProperty('--state', aud.paused ? 'paused' : 'running');
aud.paused ? (vid1.pause(), vid2.pause()): (vid1.play(), vid2.play());
};
mydiv.onclick = () => aud.paused ? aud.play() : aud.pause();
</script>
本帖最后由 南无月 于 2024-3-22 12:40 编辑 <br /><br /><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"><<span class="tDarkRed">style</span>></cl-cd>
<cl-cd data-idx="2"> #papa { <span class="tBlue">margin:</span> 130px 0 20px calc(50% - 931px); <span class="tBlue">width:</span> 1700px; <span class="tBlue">height:</span> 900px; <span class="tBlue">background:</span> url(<span class="tMagenta">'https://pic.imgdb.cn/item/65fbae639f345e8d03723b84.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"> #canv { <span class="tBlue">position:</span> absolute; <span class="tBlue">left:</span> 28%; <span class="tBlue">bottom:</span> 4px; <span class="tBlue">transform:</span> translate(-50%,0); <span class="tBlue">cursor:</span> pointer; }</cl-cd>
<cl-cd data-idx="4"> .pic { <span class="tBlue">position:</span> absolute; <span class="tBlue">width:</span> 240px; <span class="tBlue">mix-blend-mode:</span> screen; <span class="tBlue">offset-path:</span> path(<span class="tMagenta">'M1724,-80 Q1550,-20 -100,360'</span>); <span class="tBlue">offset-distance:</span> 100%; <span class="tBlue">animation:</span> fly 20s <span class="tBlue">var</span>(--delay) infinite <span class="tBlue">var</span>(--state); <span class="tBlue">--delay:</span> 0s; }</cl-cd>
<cl-cd data-idx="5"> .<span class="tBlue">pic:</span>nth-of-type(2) { <span class="tBlue">--delay:</span> -7s; }</cl-cd>
<cl-cd data-idx="6"> .<span class="tBlue">pic:</span>nth-of-type(3) { <span class="tBlue">--delay:</span> -14s; }</cl-cd>
<cl-cd data-idx="7"> @keyframes fly { to { <span class="tBlue">offset-distance:</span> 0; } }</cl-cd>
<cl-cd data-idx="8"> #vid { <span class="tBlue">position:</span> absolute; <span class="tBlue">width:</span> 120%; <span class="tBlue">height:</span> 100%; <span class="tBlue">object-fit:</span> cover; <span class="tBlue">pointer-events:</span> none; <span class="tBlue">mix-blend-mode:</span> screen; <span class="tBlue">z-index:</span> 2; <span class="tBlue">opacity:</span> .52; <span class="tBlue">transform:</span> rotateY(180deg); }</cl-cd>
<cl-cd data-idx="9"><<span class="tDarkRed">/style</span>></cl-cd>
<cl-cd data-idx="10"> </cl-cd>
<cl-cd data-idx="11"><<span class="tDarkRed">div</span> <span class="tRed">id</span>=<span class="tMagenta">"papa"</span>></cl-cd>
<cl-cd data-idx="12"><<span class="tDarkRed">video</span> <span class="tRed">id</span>=<span class="tMagenta">"vid"</span> src=<span class="tMagenta">"https://img.tukuppt.com/video_show/15653652/00/79/55/60c1c62b9766e.mp4"</span> autoplay=<span class="tMagenta">""</span> loop=<span class="tMagenta">""</span> muted=<span class="tMagenta">""</span>><<span class="tDarkRed">/video</span>></cl-cd>
<cl-cd data-idx="13"> <<span class="tDarkRed">img</span> class=<span class="tMagenta">"pic"</span> src=<span class="tMagenta">"https://638183.freep.cn/638183/t22/gif/bird1.gif"</span> alt=<span class="tMagenta">""</span> /></cl-cd>
<cl-cd data-idx="14"> <<span class="tDarkRed">img</span> class=<span class="tMagenta">"pic"</span> src=<span class="tMagenta">"https://638183.freep.cn/638183/t22/gif/bird1.gif"</span> alt=<span class="tMagenta">""</span> /></cl-cd>
<cl-cd data-idx="15"> <<span class="tDarkRed">img</span> class=<span class="tMagenta">"pic"</span> src=<span class="tMagenta">"https://638183.freep.cn/638183/t22/gif/bird1.gif"</span> alt=<span class="tMagenta">""</span> /></cl-cd>
<cl-cd data-idx="16"> <<span class="tDarkRed">canvas</span> <span class="tRed">id</span>=<span class="tMagenta">"canv"</span> width=<span class="tMagenta">"600"</span> height=<span class="tMagenta">"240"</span> title=<span class="tMagenta">"点击播放"</span>><<span class="tDarkRed">/canvas</span>></cl-cd>
<cl-cd data-idx="17"><<span class="tDarkRed">/div</span>></cl-cd>
<cl-cd data-idx="18"> </cl-cd>
<cl-cd data-idx="19"><<span class="tDarkRed">script</span>></cl-cd>
<cl-cd data-idx="20"> </cl-cd>
<cl-cd data-idx="21">(<span class="tBlue">function</span>() {</cl-cd>
<cl-cd data-idx="22"> </cl-cd>
<cl-cd data-idx="23"><span class="tBlue">let</span> aud = <span class="tBlue">new</span> Audio();</cl-cd>
<cl-cd data-idx="24">aud.src = <span class="tMagenta">'https://yinpin.s3-us-east-1.ossfiles.com/qihang.mp3'</span>;</cl-cd>
<cl-cd data-idx="25">aud.crossOrigin = <span class="tMagenta">''</span>;</cl-cd>
<cl-cd data-idx="26">aud.loop = true; </cl-cd>
<cl-cd data-idx="27">aud.load();</cl-cd>
<cl-cd data-idx="28">aud.play();</cl-cd>
<cl-cd data-idx="29"><span class="tBlue">let</span> AudioContext = <span class="tRed">window</span>.AudioContext || <span class="tRed">window</span>.webkitAudioContext;</cl-cd>
<cl-cd data-idx="30"><span class="tBlue">let</span> Ac = <span class="tBlue">new</span> AudioContext;</cl-cd>
<cl-cd data-idx="31"><span class="tBlue">let</span> analyser = Ac.createAnalyser();</cl-cd>
<cl-cd data-idx="32">analyser.fftSize = 256;</cl-cd>
<cl-cd data-idx="33"><span class="tBlue">let</span> source = Ac.createMediaElementSource(aud);</cl-cd>
<cl-cd data-idx="34">source.connect(analyser);</cl-cd>
<cl-cd data-idx="35">analyser.connect(Ac.destination);</cl-cd>
<cl-cd data-idx="36"><span class="tBlue">let</span> len = analyser.frequencyBinCount - 30;</cl-cd>
<cl-cd data-idx="37"><span class="tBlue">let</span> output = <span class="tBlue">new</span> Uint8Array(len);</cl-cd>
<cl-cd data-idx="38"><span class="tBlue">let</span> canvctx = canv.getContext(<span class="tMagenta">'2d'</span>);</cl-cd>
<cl-cd data-idx="39"><span class="tBlue">let</span> ppWidth = canv.width / len; </cl-cd>
<cl-cd data-idx="40"><span class="tBlue">let</span> ppHeight, x;</cl-cd>
<cl-cd data-idx="41"><span class="tBlue">let</span> gradient = canvctx.createLinearGradient(0,0,0,200);</cl-cd>
<cl-cd data-idx="42">gradient.addColorStop(0,<span class="tMagenta">'rgba(255,165,0'</span>); </cl-cd>
<cl-cd data-idx="43">gradient.addColorStop(.5,<span class="tMagenta">'rgba(255,165,0'</span>); </cl-cd>
<cl-cd data-idx="44">gradient.addColorStop(1,<span class="tMagenta">'rgba(128,128,128'</span>);</cl-cd>
<cl-cd data-idx="45">(<span class="tBlue">function</span> draw() {</cl-cd>
<cl-cd data-idx="46"> canvctx.clearRect(0, 0, canv.width, canv.height);</cl-cd>
<cl-cd data-idx="47"> analyser.getByteFrequencyData(output);</cl-cd>
<cl-cd data-idx="48"> x = 0.5; </cl-cd>
<cl-cd data-idx="49"> <span class="tBlue">for</span>(<span class="tBlue">let</span> i = 0; i < len; i ++) {</cl-cd>
<cl-cd data-idx="50"> ppHeight = output * .9 + ppWidth;</cl-cd>
<cl-cd data-idx="51"> canvctx.fillStyle = gradient;</cl-cd>
<cl-cd data-idx="52"> canvctx.fillRect(x, canv.height - ppHeight, ppWidth - 1, ppHeight);</cl-cd>
<cl-cd data-idx="53"> x += ppWidth;</cl-cd>
<cl-cd data-idx="54"> }</cl-cd>
<cl-cd data-idx="55"> requestAnimationFrame(draw); </cl-cd>
<cl-cd data-idx="56">})();</cl-cd>
<cl-cd data-idx="57">aud.onpause = aud.onplaying = () => aud.paused ?</cl-cd>
<cl-cd data-idx="58"> (canv.title = <span class="tMagenta">'点击播放'</span>, papa.style.setProperty(<span class="tMagenta">'--state'</span>, <span class="tMagenta">'paused'</span>)) :</cl-cd>
<cl-cd data-idx="59"> (canv.title = <span class="tMagenta">'点击暂停'</span>, papa.style.setProperty(<span class="tMagenta">'--state'</span>, <span class="tMagenta">'running'</span>));</cl-cd>
<cl-cd data-idx="60">canv.onclick = () => aud.paused ? aud.play() : aud.pause();</cl-cd>
<cl-cd data-idx="61"><span class="tGreen">//papa.onclick = () => aud.paused ? (vid.pause(),vid2.pause()) : (vid.play(),vid2.play()); </span></cl-cd>
<cl-cd data-idx="62"> </cl-cd>
<cl-cd data-idx="63">})();</cl-cd>
<cl-cd data-idx="64"><<span class="tDarkRed">/script</span>></cl-cd>
</div>
我的浏览器不行么,还是看不到频谱。@马黑黑 虽然不知道JS代码闭包啥意思{:4_173:}
电脑落后我知道,现在我用手机看看——也没显示频谱 南无月 发表于 2024-3-22 12:41
我的浏览器不行么,还是看不到频谱。@马黑黑
昨晚测试时行的,现在又不行了 南无月 发表于 2024-3-22 12:46
虽然不知道JS代码闭包啥意思
电脑落后我知道,现在我用手机看看——也没显示频谱
音乐也不能播放。本地测试没有问题,甚至可以不开启虚拟服务器。 <p>现在行了。踩了一个坑,这个坑过去也踩过:<br><br></p>
<p>论坛对 会做ubb解析,要写成 [ i ],i 的两边逗留空格。另外我在《三十里铺》发布的代码多出两行废码,现已修正。</p> 马黑黑 发表于 2024-3-22 13:38
现在行了。踩了一个坑,这个坑过去也踩过:
论坛对会做ubb解析,要写成 [ i ],i 的两边逗留空格。另 ...
这个坑时有时无啊。。
经常有也就记得了。。
这么突然的跳出一个,也是费劲{:4_173:} 马黑黑 发表于 2024-3-22 13:20
昨晚测试时行的,现在又不行了
这天家小坑有规律么 {:4_170:} 马黑黑 发表于 2024-3-22 13:21
音乐也不能播放。本地测试没有问题,甚至可以不开启虚拟服务器。
音画编辑里完全没问题,甚至到别的论坛测试都没问题。。{:4_173:}所以我也是纳了闷了 南无月 发表于 2024-3-22 17:43
音画编辑里完全没问题,甚至到别的论坛测试都没问题。。所以我也是纳了闷了
Discuz! X3.2 就是问题好多的,它的错误很多,按F12看看 南无月 发表于 2024-3-22 17:41
这个坑时有时无啊。。
经常有也就记得了。。
这么突然的跳出一个,也是费劲
过去碰上时,我就改用 j 做循环自增变量,后来用着用着就忘记了这回事,毕竟在本地机测试无需考虑这些 马黑黑 发表于 2024-3-22 18:59
Discuz! X3.2 就是问题好多的,它的错误很多,按F12看看
不看。。。按了一堆乱码又看不懂 马黑黑 发表于 2024-3-22 19:00
过去碰上时,我就改用 j 做循环自增变量,后来用着用着就忘记了这回事,毕竟在本地机测试无需考虑这些
这个问题是好久之前的,至少半年前。。{:4_170:} 南无月 发表于 2024-3-22 20:57
不看。。。按了一堆乱码又看不懂
反正每行标注一个红圆圈里面有叉叉的就是错误 南无月 发表于 2024-3-22 20:57
这个问题是好久之前的,至少半年前。。
不止半年了。都说好了伤疤忘了疼,此话不假 马黑黑 发表于 2024-3-22 20:58
反正每行标注一个红圆圈里面有叉叉的就是错误
传说中的F12,听你说过无数次,从来没真的实际用过 马黑黑 发表于 2024-3-22 20:59
不止半年了。都说好了伤疤忘了疼,此话不假
动网程序这个小BUG,亏是你能找到并解决,这么久它也没升级。
不过升了级又被限,好象还是这样的好。。{:4_173:} 南无月 发表于 2024-3-23 17:02
动网程序这个小BUG,亏是你能找到并解决,这么久它也没升级。
不过升了级又被限,好象还是这样的好。。{ ...
动网死掉了,现在是 discuz! 的天下,湾湾那边也都在用,目前由腾讯维护,早升级了的,是樵歌的论坛不敢更新。 南无月 发表于 2024-3-23 16:59
传说中的F12,听你说过无数次,从来没真的实际用过
就按一下它,然后一般向右看