- UID
- 909
- 主题
- 回帖
- 0
- 精华
- 积分
- 5266
- 金币
- 枚
- 草籽
- 颗
- 鲜花
- 朵
- 注册时间
- 2024-5-13
- 最后登录
- 1970-1-1
|
楼主 |
发表于 2024-5-24 20:20
|
显示全部楼层
本帖最后由 凡哥 于 2024-5-24 20:23 编辑
2024年5月24日 星期五
关于帖子中的联动函数 mState
音画帖以 audio 控件的播放与暂停作为依据对帖子的其他元素进行科学有效的联动控制,比如帖子中按钮的CSS关键帧动画、背景视频的播放暂停等等。假设帖子容器元素标签 id="papa"、播放器控件 audio 标签 id="aud",我们来讲讲 mState() 函数的编写,看示例:
var mState = () => {
//控制 关键帧动画,要求 animation 属性有 var(--state) 参数
papa.style.setProperty('--state', aud.paused ? 'paused' : 'running');
//控制视频 : 与音频的播放暂停同步,这里假设 video 标签 id="vid"
aud.paused ? vid.pause() : vid.play();
};
以上 mState() 函数,控制了CSS变量 --state 的值和 视频的播放暂停,以达到关键帧动画、背景视频与音频同步联动的效果。这个函数,至少需要绑定到 audio 标签的两个事件之上:
aud.onplaying = aud.onpause = () => mState();
音频控件 playing 和 pause 事件,就是播放和暂停事件,这两个事件一旦触发都运行 mState() 函数,而函数又依据音频是否暂停来控制 --state 的值和 vid 的播放或暂停,从而实现了同步联动目的。
音频的播放/暂停的控制,则通过按钮的点击事件来完成,假设按钮的 id="player",则:
player.onclick = () => aud.paused ? aud.play() : aud.pause();
click 事件就是单击事件,该事件被触发时,假如 audio 标签处于暂停中,则令其播放,反之令其暂停。
以上这些,有必要集中一下(注意HTML代码中 id 的对应关系):
<script>
var mState = () => {
papa.style.setProperty('--state', aud.paused ? 'paused' : 'running');
aud.paused ? vid.pause() : vid.play();
};
aud.onplaying = aud.onpause = () => mState();
player.onclick = () => aud.paused ? aud.play() : aud.pause();
</script>
mState() 函数可以扩展,比如我们希望多个按钮都可以控制音频、我们在帖子中使用了多个背景视频并且也想能够联动控制,这是可以实现的,明天继续。 |
评分
-
1
查看全部评分
-
|