Steps
<style>#papa { margin: 0 0 0 calc(50% - 593px); width: 1024px; height: 683px; background: url('https://638183.freep.cn/638183/t24/1/steps.jpeg') no-repeat center/cover; box-shadow: 3px 3px 20px #000; overflow: hidden; z-index: 1; position: relative; }
#papa::before, #papa::after { content: url('https://638183.freep.cn/638183/small/dolan.png'); position: absolute; left: 480px; z-index: -1; bottom: 80px; transform-origin: 50% 100%; animation: skew .5s infinite alternate var(--state); --scale: 1,1; }
#papa::after { left: 300px; animation-delay: -.5s; --scale: -1,1; }
#papa video { position: absolute; bottom: 0; width: 100%; height: calc(100% + 60px); object-fit: cover; mix-blend-mode: screen; pointer-events: none; }
#canv { display: block; position: absolute; bottom: -10px; left: calc(50% - 100px); transform: scale(0.75); cursor: pointer; }
@keyframes skew { from { transform: skew(-1.5deg) scale(var(--scale)); } to { transform: skew(1.5deg) scale(var(--scale)); } }
</style>
<div id="papa">
<audio src="https://music.163.com/song/media/outer/url?id=4278379" autoplay></audio>
<video src="https://img.tukuppt.com/video_show/2269348/00/14/10/5e17dd1440f72.mp4" loop muted></video>
<canvas id="canv" width="200" height="200" ></canvas>
</div>
<script>
(function() {
let sF = document.createElement('script');
sF.src = 'https://638183.freep.cn/638183/web/js/canvcircle_prg.js';
sF.charset = 'utf-8';
document.body.appendChild(sF);
btnUrl = 'https://638183.freep.cn/638183/small/4yc.png';
})();
</script>
<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"><<span class="tDarkRed">style</span>></cl-cd>
<cl-cd data-idx="2"> #papa { <span class="tBlue">margin:</span> 0 0 0 calc(50% - 593px); <span class="tBlue">width:</span> 1024px; <span class="tBlue">height:</span> 683px; <span class="tBlue">background:</span> url(<span class="tMagenta">'https://638183.freep.cn/638183/t24/1/steps.jpeg'</span>) no-repeat center/cover; <span class="tBlue">box-shadow:</span> 3px 3px 20px #000; <span class="tBlue">overflow:</span> hidden; <span class="tBlue">z-index:</span> 1; <span class="tBlue">position:</span> relative; }</cl-cd>
<cl-cd data-idx="3"> #papa::before, #papa::after { <span class="tBlue">content:</span> url(<span class="tMagenta">'https://638183.freep.cn/638183/small/dolan.png'</span>); <span class="tBlue">position:</span> absolute; <span class="tBlue">left:</span> 480px; <span class="tBlue">z-index:</span> -1; <span class="tBlue">bottom:</span> 80px; <span class="tBlue">transform-origin:</span> 50% 100%; <span class="tBlue">animation:</span> skew .5s infinite alternate <span class="tBlue">var</span>(--state); <span class="tBlue">--scale:</span> 1,1; }</cl-cd>
<cl-cd data-idx="4"> #papa::after { <span class="tBlue">left:</span> 300px; <span class="tBlue">animation-delay:</span> -.5s; <span class="tBlue">--scale:</span> -1,1; }</cl-cd>
<cl-cd data-idx="5"> #papa 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; <span class="tBlue">pointer-events:</span> none; }</cl-cd>
<cl-cd data-idx="6"> #canv { <span class="tBlue">display:</span> block; <span class="tBlue">position:</span> absolute; <span class="tBlue">bottom:</span> -10px; <span class="tBlue">left:</span> calc(50% - 100px); <span class="tBlue">transform:</span> scale(0.75); <span class="tBlue">cursor:</span> pointer; }</cl-cd>
<cl-cd data-idx="7"> @keyframes skew { from { <span class="tBlue">transform:</span> skew(-1.5deg) scale(<span class="tBlue">var</span>(--scale)); } to { <span class="tBlue">transform:</span> skew(1.5deg) scale(<span class="tBlue">var</span>(--scale)); } }</cl-cd>
<cl-cd data-idx="8"><<span class="tDarkRed">/style</span>></cl-cd>
<cl-cd data-idx="9"> </cl-cd>
<cl-cd data-idx="10"><<span class="tDarkRed">div</span> <span class="tRed">id</span>=<span class="tMagenta">"papa"</span>></cl-cd>
<cl-cd data-idx="11"> <<span class="tDarkRed">audio</span> src=<span class="tMagenta">"https://music.163.com/song/media/outer/url?<span class="tRed">id</span>=4278379"</span> autoplay><<span class="tDarkRed">/audio</span>></cl-cd>
<cl-cd data-idx="12"> <<span class="tDarkRed">video</span> src=<span class="tMagenta">"https://img.tukuppt.com/video_show/2269348/00/14/10/5e17dd1440f72.mp4"</span> loop muted><<span class="tDarkRed">/video</span>></cl-cd>
<cl-cd data-idx="13"> <<span class="tDarkRed">canvas</span> <span class="tRed">id</span>=<span class="tMagenta">"canv"</span> width=<span class="tMagenta">"200"</span> height=<span class="tMagenta">"200"</span> ><<span class="tDarkRed">/canvas</span>></cl-cd>
<cl-cd data-idx="14"><<span class="tDarkRed">/div</span>></cl-cd>
<cl-cd data-idx="15"> </cl-cd>
<cl-cd data-idx="16"><<span class="tDarkRed">script</span>></cl-cd>
<cl-cd data-idx="17">(<span class="tBlue">function</span>() {</cl-cd>
<cl-cd data-idx="18"> <span class="tBlue">let</span> sF = <span class="tRed">document</span>.createElement(<span class="tMagenta">'script'</span>);</cl-cd>
<cl-cd data-idx="19"> sF.src = <span class="tMagenta">'https://638183.freep.cn/638183/web/js/canvcircle_prg.js'</span>;</cl-cd>
<cl-cd data-idx="20"> sF.charset = <span class="tMagenta">'utf-8'</span>;</cl-cd>
<cl-cd data-idx="21"> <span class="tRed">document</span>.body.appendChild(sF);</cl-cd>
<cl-cd data-idx="22"> btnUrl = <span class="tMagenta">'https://638183.freep.cn/638183/small/4yc.png'</span>;</cl-cd>
<cl-cd data-idx="23">})();</cl-cd>
<cl-cd data-idx="24"><<span class="tDarkRed">/script</span>></cl-cd>
</div>
canvcircle_prg.js 约定:
canvas画布必须有,严格按 13 行代码那样写;
帖子标签不论,组织好结构就成;
audio音频标签得有,不需要id,程序认页面中出现的第一个;
video视频标签可有可无,无需id;
播放控制器里的图片,通过 22 行设定,btnUrl 变量不能改。如果没有 22 行代码也行,图片将使用默认的 .svg 格式的四叶草。
【注】如果 JS 文档存在自己的空间,建议修改图片引用地址,以保证媒体资源长期有效。 已测,完美循环。。{:4_170:} 这个画布进度条是可以手控进度的,而且是打包好的呢。{:4_199:} 这个的对称小人的动态真有趣{:4_187:} 红影 发表于 2024-4-1 22:36
这个的对称小人的动态真有趣
{:4_190:} 这个画布直接封装了?代码少少的,太好用了吧。{:4_173:} 南无月 发表于 2024-4-1 22:38
这个画布直接封装了?代码少少的,太好用了吧。
做帖子的代码少,JS资源也不多,就几十行 这个播放器有外圆进度条的{:4_199:} 小辣椒 发表于 2024-4-1 22:40
这个播放器有外圆进度条的
这类之前有的,svg的,现在是画布的,画布的比较难做 马黑黑 发表于 2024-4-1 22:41
这类之前有的,svg的,现在是画布的,画布的比较难做
很难做啊,那我肯定有不会了 小辣椒 发表于 2024-4-1 22:45
很难做啊,那我肯定有不会了
用现成的总会的
马黑黑 发表于 2024-4-1 22:45
用现成的总会的
套用应该可以的{:4_170:} 小辣椒 发表于 2024-4-1 22:48
套用应该可以的
核心实现机制不是人人可以编写的,懂得如何去使用就好。详细情况可以研究一下代码,有些工作还是要自己做的,比如CSS、HTML、帖子构思等等,具体要求看看板凳 马黑黑 发表于 2024-4-1 22:50
核心实现机制不是人人可以编写的,懂得如何去使用就好。详细情况可以研究一下代码,有些工作还是要自己做 ...
好的,已经看了,准备下了,今天太迟了
晚安 小辣椒 发表于 2024-4-1 22:51
好的,已经看了,准备下了,今天太迟了
晚安
88 马黑黑 发表于 2024-4-1 22:39
做帖子的代码少,JS资源也不多,就几十行
对视频的控制也一并封进去了。用了JS真是好简洁。。{:4_173:} 这些人在台阶上开音乐会,还有阳光照着。。。
老师你这构思和创意真是独特哈。。 南无月 发表于 2024-4-1 23:00
这些人在台阶上开音乐会,还有阳光照着。。。
老师你这构思和创意真是独特哈。。
嗯,胡思乱想的