马黑黑 发表于 2024-4-8 07:23

月照西楼

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

马黑黑 发表于 2024-4-8 07:24

<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">#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">&lt;<span class="tDarkRed">/style</span>&gt;</cl-cd>
<cl-cd data-idx="9">&nbsp;</cl-cd>
<cl-cd data-idx="10">&lt;<span class="tDarkRed">div</span> <span class="tRed">id</span>=<span class="tMagenta">"papa"</span>&gt;</cl-cd>
<cl-cd data-idx="11">&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>=2045451899"</span> autoplay&gt;&lt;<span class="tDarkRed">/audio</span>&gt;</cl-cd>
<cl-cd data-idx="12">&nbsp; &nbsp; &lt;<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&gt;&lt;<span class="tDarkRed">/video</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">"play"</span> src=<span class="tMagenta">"https://638183.freep.cn/638183/small/f01.png"</span> alt=<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"><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 = () =&gt;moving();</cl-cd>
<cl-cd data-idx="23">aud.onseeked = () =&gt; cancelAnimationFrame(raf);</cl-cd>
<cl-cd data-idx="24">aud.onended = () =&gt; { cancelAnimationFrame(raf); aud.play(); };</cl-cd>
<cl-cd data-idx="25"> </cl-cd>
<cl-cd data-idx="26">play.onclick = () =&gt; { 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 = () =&gt; {</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 &gt;= ww) begin1 = -ww;</cl-cd>
<cl-cd data-idx="32">    <span class="tBlue">if</span>(begin2 &gt;= ww) begin2 = -ww;</cl-cd>
<cl-cd data-idx="33">    <span class="tBlue">let</span> b2 = begin2 + (begin1 &gt;= 0 ? 1&nbsp;: -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">&lt;<span class="tDarkRed">/script</span>&gt;</cl-cd>
</div>

马黑黑 发表于 2024-4-8 07:31

本帖最后由 马黑黑 于 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

红影 发表于 2024-4-8 09:19

开始还以为是图片滚动有上下变化,原来是视频效果本来就这样的。
这个好看,船移让岸向后飘的感觉{:4_187:}

红影 发表于 2024-4-8 09:21

那张图图根本不需要是png的呢,开始以为是。只要放在下面,用视频去融合就可以了,而且这样图图还不会遮挡视频里的月亮,这构思真巧妙{:4_199:}

红影 发表于 2024-4-8 09:25

其实对这张图图,完全不用考虑衔接处的微小缝隙的影响呢{:4_173:}

朵拉 发表于 2024-4-8 09:53

老师的制作太棒了,感觉还少点啥~~{:4_173:}

游侠 发表于 2024-4-8 10:42

很精彩的作品

马黑黑 发表于 2024-4-8 12:34

游侠 发表于 2024-4-8 10:42
很精彩的作品

下午好

马黑黑 发表于 2024-4-8 12:35

朵拉 发表于 2024-4-8 09:53
老师的制作太棒了,感觉还少点啥~~

人,在拍摄

马黑黑 发表于 2024-4-8 12:35

红影 发表于 2024-4-8 09:25
其实对这张图图,完全不用考虑衔接处的微小缝隙的影响呢

那还是要的,不信你试试

马黑黑 发表于 2024-4-8 12:35

红影 发表于 2024-4-8 09:19
开始还以为是图片滚动有上下变化,原来是视频效果本来就这样的。
这个好看,船移让岸向后飘的感觉{:4_187: ...

感谢点评

马黑黑 发表于 2024-4-8 12:36

红影 发表于 2024-4-8 09:21
那张图图根本不需要是png的呢,开始以为是。只要放在下面,用视频去融合就可以了,而且这样图图还不会遮挡 ...

{:4_190:}

南无月 发表于 2024-4-8 17:53

马黑黑 发表于 2024-4-8 07:31
帖子用到的媒体素材统计:

图片:


{:4_170:}
老师今天连素材都发出来了。。
这个还真是太好了。不然分不清背景图片和视频,都在动。。

南无月 发表于 2024-4-8 17:55

第一眼就惊艳到了。蓝色梦幻之美,
漂亮的配色和完美的创意。。。
移动背景除了风景还可以这么处理。。
{:4_187:}

马黑黑 发表于 2024-4-8 18:18

南无月 发表于 2024-4-8 17:55
第一眼就惊艳到了。蓝色梦幻之美,
漂亮的配色和完美的创意。。。
移动背景除了风景还可以这么处理。。


感谢盛赞,心里惶恐{:4_170:}

马黑黑 发表于 2024-4-8 18:19

南无月 发表于 2024-4-8 17:53
老师今天连素材都发出来了。。
这个还真是太好了。不然分不清背景图片和视频,都在动。。

我知道我这个设计有点绕,所以酱紫做

红影 发表于 2024-4-8 20:39

马黑黑 发表于 2024-4-8 12:35
那还是要的,不信你试试

哦,我还以为边缘相同,就不用考虑了。应该是我错了{:4_173:}

红影 发表于 2024-4-8 20:40

马黑黑 发表于 2024-4-8 12:35
感谢点评

这个构思太妙了{:4_187:}

红影 发表于 2024-4-8 20:41

马黑黑 发表于 2024-4-8 12:36


这个设计很具匠心,很赞{:4_199:}
页: [1] 2 3 4
查看完整版本: 月照西楼