记录前端视频加图片轮播操作

一、前言

突然接到个需求,用户觉得单纯的图片轮播展示太单调了,需要把视频加上,使用audio在谷歌 上自动播放视频加图片进行轮播操作,废话也不多说了
注:简单写了个示例代码,如需其它要求自行研究

二、实现代码

html 复制代码
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>视频和图片轮播</title>
    <style>
        img{
            display: none;
        }
    </style>
</head>
<body>
<video id="video1" autoplay muted>
    <source src="img/20240129_163757.mp4" type="video/mp4">
</video>
<!--先隐藏第二个视频-->
<video id="video2" style="display:none;">
    <source src="img/20240129_165135.mp4" type="video/mp4">
</video>
<!--隐藏所有图片-->
<div id="imageCarousel" style="display: none;">
    <img src="img/evaluate_bg.png" alt="Image 1">
    <img src="img/img.png" alt="Image 2">
</div>
<script>
    var video1 = document.getElementById('video1');
    var video2 = document.getElementById('video2');
    var imageCarousel = document.getElementById('imageCarousel');
    var images = imageCarousel.getElementsByTagName('img');
    var currentIndex = 0;

    video1.addEventListener('ended', function () {
    	// 隐藏第一个视频
        video1.style.display = 'none';
        // 显示第二个视频
        video2.style.display = 'block';
        // 播放第二个视频
        video2.play();
    });
    video2.addEventListener('ended', function () {
    	// 隐藏第二个视频
        video2.style.display = 'none';
        // 显示图片信息
        imageCarousel.style.display = 'block';
        // 显示第一张图片
        images[currentIndex].style.display = 'block';
        // 第二个视频播放完后,轮播图片
        setTimeout(rotateImages, 5000);
    });

    function rotateImages() {
        images[currentIndex].style.display = 'none';
        currentIndex = (currentIndex + 1) % images.length;
        // 如果回到第一个图片,则播放第一个视频
        if (currentIndex === 0) {
            video1.style.display = 'block';
            video1.play();
        } else {
            images[currentIndex].style.display = 'block';
            setTimeout(rotateImages, 5000);
        }
    }
</script>
</body>
</html>
相关推荐
tryCbest5 分钟前
Vue3——第 11 篇:组合式 API(上)——setup 与响应式 API 深度解析
前端·javascript·vue.js
tryCbest1 小时前
Vue3——第 13 篇:计算属性与侦听器——computed 与 watch 的进化
前端·javascript·vue.js
怒放的生命19911 小时前
本地用 pnpm 省磁盘,团队继续用 npm:极简实践
前端·npm·node.js
用户117953654781 小时前
企业团队编程软件怎么选:AI编程工具的协作与落地能力对比
javascript
believed_breadfruit1 小时前
我开源了一个HTML 分页导出工具,解决了复杂页面的内容截断、跨页错乱和长文档白屏问题
前端·javascript·github
福狼1 小时前
从“网墙”到柔性曲面:一次 WebGPU 波浪的逆向分析与重建
前端·逆向
宝哥聊编程2 小时前
主流 Agent 平台对比:Coze、Dify、飞书、扣子、OpenClaw 落地实操手册
前端·人工智能·飞书
时间的情敌2 小时前
Vue3 + Cesium 实战:本地上传 GLB 模型、模型上叠加 GLB、点击控制透明度
前端·vue.js·cesium
拖孩2 小时前
流量主门槛从 500 降到 100,我的小程序上线 18 小时够到了线
前端·后端·微信小程序
深蓝AI2 小时前
编码 Agent 的界面味靠提示词压不住:Impeccable 用无模型规则拦同一套模板
前端·程序员