月照西楼
<style>#papa { margin: 0 0 0 calc(50% - 593px); width: 1024px; height: 640px; background: navy; box-shadow: 3px 3px 20px #000; overflow: hidden; position: relative; z-index: 1; }
#papa::before , #papa::after { position: absolute; content: ''; left: var(--begin1); top: 0px; width: 100%; height: 100%; background: url('https://638183.freep.cn/638183/t24/jpg/yzxl.jpg') no-repeat center/cover; z-index: -1; }
#papa::after { left: var(--begin2); transform: scale(-1,1); }
#play { position: absolute; right: 70px; top: 120px; width: 100px; mix-blend-mode: multiply; cursor: pointer; animation: rotating 5s linear infinite var(--state); }
#vid { position: absolute; width: calc(100% + 160px); height: 100%; object-fit: cover; mix-blend-mode: screen; pointer-events: none; }
@keyframes rotating { to { transform: rotate(360deg); } }
</style>
<div id="papa">
<audio id="aud" src="https://music.163.com/song/media/outer/url?id=2045451899" autoplay></audio>
<video id="vid" src="https://img.tukuppt.com/video_show/2422006/00/02/13/5b51af9e299f9.mp4" autoplay muted loop></video>
<img id="play" src="https://638183.freep.cn/638183/small/f01.png" alt="" />
</div>
<script>
var ww = papa.offsetWidth;
var step = 0.2, begin1 = 0, begin2 = ww, raf;
aud.loop = false;
aud.onpause = aud.onplaying = () =>moving();
aud.onseeked = () => cancelAnimationFrame(raf);
aud.onended = () => { cancelAnimationFrame(raf); aud.play(); };
play.onclick = () => { aud.paused ? aud.play() : aud.pause(); };
var moving = () => {
begin1 += step;
begin2 += step;
if(begin1 >= ww) begin1 = -ww;
if(begin2 >= ww) begin2 = -ww;
let b2 = begin2 + (begin1 >= 0 ? 1 : -1);
papa.style.setProperty('--begin1', begin1 + 'px');
papa.style.setProperty('--begin2', b2 + 'px');
aud.paused
? (cancelAnimationFrame(raf), papa.style.setProperty('--state', 'paused'), vid.pause())
: (raf = requestAnimationFrame(moving), papa.style.setProperty('--state', 'running'),vid.play());
};
</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> 640px; <span class="tBlue">background:</span> navy; <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">#papa::before , #papa::after { <span class="tBlue">position:</span> absolute; <span class="tBlue">content:</span> <span class="tMagenta">''</span>; <span class="tBlue">left:</span> <span class="tBlue">var</span>(--begin1); <span class="tBlue">top:</span> 0px; <span class="tBlue">width:</span> 100%; <span class="tBlue">height:</span> 100%; <span class="tBlue">background:</span> url(<span class="tMagenta">'https://638183.freep.cn/638183/t24/jpg/yzxl.jpg'</span>) no-repeat center/cover; <span class="tBlue">z-index:</span> -1; }</cl-cd>
<cl-cd data-idx="4">#papa::after { <span class="tBlue">left:</span> <span class="tBlue">var</span>(--begin2); <span class="tBlue">transform:</span> scale(-1,1); }</cl-cd>
<cl-cd data-idx="5">#play { <span class="tBlue">position:</span> absolute; <span class="tBlue">right:</span> 70px; <span class="tBlue">top:</span> 120px; <span class="tBlue">width:</span> 100px; <span class="tBlue">mix-blend-mode:</span> multiply; <span class="tBlue">cursor:</span> pointer; <span class="tBlue">animation:</span> rotating 5s linear infinite <span class="tBlue">var</span>(--state); }</cl-cd>
<cl-cd data-idx="6">#vid { <span class="tBlue">position:</span> absolute; <span class="tBlue">width:</span> calc(100% + 160px); <span class="tBlue">height:</span> 100%; <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="7">@keyframes rotating { to { <span class="tBlue">transform:</span> rotate(360deg); } }</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> <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>=2045451899"</span> autoplay><<span class="tDarkRed">/audio</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/2422006/00/02/13/5b51af9e299f9.mp4"</span> autoplay muted loop><<span class="tDarkRed">/video</span>></cl-cd>
<cl-cd data-idx="13"> <<span class="tDarkRed">img</span> <span class="tRed">id</span>=<span class="tMagenta">"play"</span> src=<span class="tMagenta">"https://638183.freep.cn/638183/small/f01.png"</span> alt=<span class="tMagenta">""</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">var</span> ww = papa.offsetWidth;</cl-cd>
<cl-cd data-idx="18"> </cl-cd>
<cl-cd data-idx="19"><span class="tBlue">var</span> step = 0.2, begin1 = 0, begin2 = ww, raf;</cl-cd>
<cl-cd data-idx="20"> </cl-cd>
<cl-cd data-idx="21">aud.loop = false;</cl-cd>
<cl-cd data-idx="22">aud.onpause = aud.onplaying = () =>moving();</cl-cd>
<cl-cd data-idx="23">aud.onseeked = () => cancelAnimationFrame(raf);</cl-cd>
<cl-cd data-idx="24">aud.onended = () => { cancelAnimationFrame(raf); aud.play(); };</cl-cd>
<cl-cd data-idx="25"> </cl-cd>
<cl-cd data-idx="26">play.onclick = () => { aud.paused ? aud.play() : aud.pause(); };</cl-cd>
<cl-cd data-idx="27"> </cl-cd>
<cl-cd data-idx="28"><span class="tBlue">var</span> moving = () => {</cl-cd>
<cl-cd data-idx="29"> begin1 += step;</cl-cd>
<cl-cd data-idx="30"> begin2 += step;</cl-cd>
<cl-cd data-idx="31"> <span class="tBlue">if</span>(begin1 >= ww) begin1 = -ww;</cl-cd>
<cl-cd data-idx="32"> <span class="tBlue">if</span>(begin2 >= ww) begin2 = -ww;</cl-cd>
<cl-cd data-idx="33"> <span class="tBlue">let</span> b2 = begin2 + (begin1 >= 0 ? 1 : -1);</cl-cd>
<cl-cd data-idx="34"> papa.style.setProperty(<span class="tMagenta">'--begin1'</span>, begin1 + <span class="tMagenta">'px'</span>);</cl-cd>
<cl-cd data-idx="35"> papa.style.setProperty(<span class="tMagenta">'--begin2'</span>, b2 + <span class="tMagenta">'px'</span>);</cl-cd>
<cl-cd data-idx="36"> aud.paused</cl-cd>
<cl-cd data-idx="37"> ? (cancelAnimationFrame(raf), papa.style.setProperty(<span class="tMagenta">'--state'</span>, <span class="tMagenta">'paused'</span>), vid.pause())</cl-cd>
<cl-cd data-idx="38"> : (raf = requestAnimationFrame(moving), papa.style.setProperty(<span class="tMagenta">'--state'</span>, <span class="tMagenta">'running'</span>),vid.play());</cl-cd>
<cl-cd data-idx="39">};</cl-cd>
<cl-cd data-idx="40"><<span class="tDarkRed">/script</span>></cl-cd>
</div>
本帖最后由 马黑黑 于 2024-4-8 07:33 编辑
帖子用到的媒体素材统计:
图片:
大图1张(做背景用)
https://638183.freep.cn/638183/t24/jpg/yzxl.jpg
小图1张(做按钮用)
https://638183.freep.cn/638183/small/f01.png
音频1个(月照西楼) https://music.163.com/song/media/outer/url?id=2045451899
视频1个(月照动态背景) https://img.tukuppt.com/video_sh ... 3/5b51af9e299f9.mp4 开始还以为是图片滚动有上下变化,原来是视频效果本来就这样的。
这个好看,船移让岸向后飘的感觉{:4_187:} 那张图图根本不需要是png的呢,开始以为是。只要放在下面,用视频去融合就可以了,而且这样图图还不会遮挡视频里的月亮,这构思真巧妙{:4_199:} 其实对这张图图,完全不用考虑衔接处的微小缝隙的影响呢{:4_173:} 老师的制作太棒了,感觉还少点啥~~{:4_173:} 很精彩的作品 游侠 发表于 2024-4-8 10:42
很精彩的作品
下午好 朵拉 发表于 2024-4-8 09:53
老师的制作太棒了,感觉还少点啥~~
人,在拍摄 红影 发表于 2024-4-8 09:25
其实对这张图图,完全不用考虑衔接处的微小缝隙的影响呢
那还是要的,不信你试试 红影 发表于 2024-4-8 09:19
开始还以为是图片滚动有上下变化,原来是视频效果本来就这样的。
这个好看,船移让岸向后飘的感觉{:4_187: ...
感谢点评 红影 发表于 2024-4-8 09:21
那张图图根本不需要是png的呢,开始以为是。只要放在下面,用视频去融合就可以了,而且这样图图还不会遮挡 ...
{:4_190:} 马黑黑 发表于 2024-4-8 07:31
帖子用到的媒体素材统计:
图片:
{:4_170:}
老师今天连素材都发出来了。。
这个还真是太好了。不然分不清背景图片和视频,都在动。。
第一眼就惊艳到了。蓝色梦幻之美,
漂亮的配色和完美的创意。。。
移动背景除了风景还可以这么处理。。
{:4_187:} 南无月 发表于 2024-4-8 17:55
第一眼就惊艳到了。蓝色梦幻之美,
漂亮的配色和完美的创意。。。
移动背景除了风景还可以这么处理。。
感谢盛赞,心里惶恐{:4_170:} 南无月 发表于 2024-4-8 17:53
老师今天连素材都发出来了。。
这个还真是太好了。不然分不清背景图片和视频,都在动。。
我知道我这个设计有点绕,所以酱紫做 马黑黑 发表于 2024-4-8 12:35
那还是要的,不信你试试
哦,我还以为边缘相同,就不用考虑了。应该是我错了{:4_173:} 马黑黑 发表于 2024-4-8 12:35
感谢点评
这个构思太妙了{:4_187:} 马黑黑 发表于 2024-4-8 12:36
这个设计很具匠心,很赞{:4_199:}