马黑黑 发表于 2024-5-29 08:05

三星望月

<style>
        #papa { margin: 20px 0 20px calc(50% - 721px); width: 1280px; height: 720px; background: lightblue; box-shadow: 2px 2px 6px #000; overflow: hidden; z-index: 1; position: relative; }
        .vid { position: absolute; top: -70px; width: 100%; height: calc(100% + 70px); object-fit: cover; pointer-events: none; }
        .vid:nth-of-type(2) { height: 60%; height: 60%; transform: rotate(-10deg); mix-blend-mode: screen; opacity: .5; }
        .star { position: absolute; left: 300px; top: 40px; cursor: pointer; animation: ani 1.5s linear infinite alternate var(--state); }
        .star:nth-of-type(2) { left: 480px; top: 160px; animation-delay: -.5s; }
        .star:nth-of-type(3) { left: 600px; top: 10px; animation-delay: -1s; }
        @keyframes ani { from { transform: rotate(-10deg) scale(.8); opacity: .2; } to { transform: rotate(10deg) scale(1.5); opacity: .9; } }
</style>

<div id="papa">
        <audio id="aud" src="https://music.163.com/song/media/outer/url?id=31563718" autoplay loop></audio>
        <video class="vid" src="https://img.tukuppt.com/video_show/2418175/00/08/31/5d231588f166b.mp4" loop muted></video>
        <video class="vid" src="https://img.tukuppt.com/video_show/2269348/00/02/02/5b4efb7022208.mp4" loop muted></video>
        <img class="star" alt="" src="https://638183.freep.cn/638183/t22/webp/star.webp" />
        <img class="star" alt="" src="https://638183.freep.cn/638183/t22/webp/star.webp" />
        <img class="star" alt="" src="https://638183.freep.cn/638183/t22/webp/star.webp" />
</div>

<script>
(function() {
        const vids = document.querySelectorAll('.vid'), stars = document.querySelectorAll('.star');
        aud.onplaying = aud.onpause = () => {
                papa.style.setProperty('--state', aud.paused ? 'paused' : 'running');
                vids.forEach( vid => aud.paused ? vid.pause() : vid.play());
                stars.forEach(star => star.title = aud.paused ? '点击播放' : '点击暂停');
        };
        stars.forEach(star => star.onclick = () => aud.paused ? aud.play() : aud.pause());
})();
</script>

马黑黑 发表于 2024-5-29 08:05

帖子代码
<style>
        #papa { margin: 20px 0 20px calc(50% - 721px); width: 1280px; height: 720px; background: lightblue; box-shadow: 2px 2px 6px #000; overflow: hidden; z-index: 1; position: relative; }
        .vid { position: absolute; top: -70px; width: 100%; height: calc(100% + 70px); object-fit: cover; pointer-events: none; }
        .vid:nth-of-type(2) { height: 60%; height: 60%; transform: rotate(-10deg); mix-blend-mode: screen; opacity: .5; }
        .star { position: absolute; left: 300px; top: 40px; cursor: pointer; animation: ani 1.5s linear infinite alternate var(--state); }
        .star:nth-of-type(2) { left: 480px; top: 160px; animation-delay: -.5s; }
        .star:nth-of-type(3) { left: 600px; top: 10px; animation-delay: -1s; }
        @keyframes ani { from { transform: rotate(-10deg) scale(.8); opacity: .2; } to { transform: rotate(10deg) scale(1.5); opacity: .9; } }
</style>

<div id="papa">
        <audio id="aud" src="https://music.163.com/song/media/outer/url?id=31563718" autoplay loop></audio>
        <video class="vid" src="https://img.tukuppt.com/video_show/2418175/00/08/31/5d231588f166b.mp4" loop muted></video>
        <video class="vid" src="https://img.tukuppt.com/video_show/2269348/00/02/02/5b4efb7022208.mp4" loop muted></video>
        <img class="star" alt="" src="https://638183.freep.cn/638183/t22/webp/star.webp" />
        <img class="star" alt="" src="https://638183.freep.cn/638183/t22/webp/star.webp" />
        <img class="star" alt="" src="https://638183.freep.cn/638183/t22/webp/star.webp" />
</div>

<script>
(function() {
        const vids = document.querySelectorAll('.vid'), stars = document.querySelectorAll('.star');
        aud.onplaying = aud.onpause = () => {
                papa.style.setProperty('--state', aud.paused ? 'paused' : 'running');
                vids.forEach( vid => aud.paused ? vid.pause() : vid.play());
                stars.forEach(star => star.title = aud.paused ? '点击播放' : '点击暂停');
        };
        stars.forEach(star => star.onclick = () => aud.paused ? aud.play() : aud.pause());
})();
</script>

马黑黑 发表于 2024-5-29 08:23

本帖没有新的知识点,主要是再次复习多按钮、多视频的联动控制。

(一)多按钮联动控制

按钮需要 class 标识,第15、16、17行代码,img 标签 class=“star",我们可以通过这一共性标识拿到操作它们的依据:声明一个全局变量 stars,通过 querySelectorAll() 获得操作标识并赋值给 stars(代码22行)。然后在相关代码流中,使用 stars.forEach(star => ...); 循环迭代语句逐一操作按钮的相关事件或属性(代码第26行、第28行)。

按钮的CSS关键帧动画则通过操作CSS变量 --state 加以实现。元素对应的CSS属性即 animation 属性加有var(--state)(代码在第 05 行),表明关键帧动画的开关是它,我们可以依据音频是否播放来决定此开关的运行状态,即停止或运行二选一(代码在第24行)。

(二)多视频联动控制

多视频的播放、暂停控制,应与音频同步。要实现联动控制,和按钮一样,也得先拿到操作标识,道理和按钮的一样:声明变量 vids 并赋值给它,然后按 vids.forEach(vid => ...); 遍历每一个视频、进行相关操作,代码在第 25 行)。

梦油 发表于 2024-5-29 09:52

三星望月美,群星更美。那群星渐渐汇集成银河,又渐渐散去,璀璨的星星在宇宙中绽放出绚丽的光彩,增添了无尽的神秘与美丽。

朵拉 发表于 2024-5-29 11:19

美不胜收~~{:4_178:}

愤怒的葡萄 发表于 2024-5-29 12:20

三颗星星挺漂亮的。

马黑黑 发表于 2024-5-29 12:24

愤怒的葡萄 发表于 2024-5-29 12:20
三颗星星挺漂亮的。

{:4_190:}

马黑黑 发表于 2024-5-29 12:25

朵拉 发表于 2024-5-29 11:19
美不胜收~~

{:4_190:}

马黑黑 发表于 2024-5-29 12:25

梦油 发表于 2024-5-29 09:52
三星望月美,群星更美。那群星渐渐汇集成银河,又渐渐散去,璀璨的星星在宇宙中绽放出绚丽的光彩,增添了无 ...

中午好{:4_190:}

愤怒的葡萄 发表于 2024-5-29 12:25

马黑黑 发表于 2024-5-29 12:24


马版一直在线啊?

马黑黑 发表于 2024-5-29 12:26

愤怒的葡萄 发表于 2024-5-29 12:25
马版一直在线啊?

{:4_191:}

愤怒的葡萄 发表于 2024-5-29 12:26

马黑黑 发表于 2024-5-29 12:26

我也刚刚上线,花潮是一个小众论坛,活跃的坛友相对较少,我也只是偶尔上来一会的。

马黑黑 发表于 2024-5-29 12:39

愤怒的葡萄 发表于 2024-5-29 12:26
我也刚刚上线,花潮是一个小众论坛,活跃的坛友相对较少,我也只是偶尔上来一会的。

热热闹闹的论坛现在也不多

南无月 发表于 2024-5-29 12:52

马黑黑 发表于 2024-5-29 08:23
本帖没有新的知识点,主要是再次复习多按钮、多视频的联动控制。

(一)多按钮联动控制


多按钮和多视频控制,这次写得更加详细了。。好笔记,拿走了。。{:4_173:}

南无月 发表于 2024-5-29 12:54

夜月视频加上飞翔的粒子,还有三个大的星光闪烁图片,
现在知道为何叫三星望月了。
这个夜空真美。。。{:4_199:}

马黑黑 发表于 2024-5-29 14:00

南无月 发表于 2024-5-29 12:54
夜月视频加上飞翔的粒子,还有三个大的星光闪烁图片,
现在知道为何叫三星望月了。
这个夜空真美。。。{: ...

{:4_190:}

马黑黑 发表于 2024-5-29 14:00

南无月 发表于 2024-5-29 12:52
多按钮和多视频控制,这次写得更加详细了。。好笔记,拿走了。。

这类问题以后不再重复讲解了

梦江南 发表于 2024-5-29 14:16

漂亮!音乐动听!{:4_199:}

梦油 发表于 2024-5-29 17:03

马黑黑 发表于 2024-5-29 12:25
中午好

你以你的知识为花潮带来了繁荣,真值得敬佩!

南无月 发表于 2024-5-29 17:59

马黑黑 发表于 2024-5-29 14:00


这几个元素协调的令人惊叹,十分完美 的画面{:4_199:}
页: [1] 2 3 4 5 6
查看完整版本: 三星望月