模拟播放器倒计时效果

简介:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>模拟视频播放</title>
    <meta name="viewport" content="maximum-scale=1.0,minimum-scale=1.0,user-scalable=0,width=device-width,initial-scale=1.0">
    <link rel="stylesheet" href="../css/aui.2.0.css">
    <link rel="stylesheet" href="../css/api.css">
    <style>
        html,body{
            background-color: #000;
            width: 100%;
            height: 100%;
        }
        header img{
            position: absolute;
            width: 1.5rem;
            height: 1.5rem;
            left: 1rem;
            top: 1rem;
        }
        #play{
            width: 3rem;
            height: 3rem;
            background: url(../image/message/news_start_ico.png) no-repeat;
            background-size: 100% 100%;
            position: absolute;
            left: 50%;
            top: 50%;
            margin: -1.5rem 0 0 -1.5rem;
        }
        footer{
            width: 100%;
            height: 3rem;
            position: fixed;
            bottom: 0;
            left: 0;
        }
        #foot-left{
            width: 3rem;
            height: 3rem;
            float: left;
            position: relative;
            z-index: 100;
        }
        #foot-left img{
            width: 1.5rem;
            height: 1.5rem;
            margin: 0.75rem;
        }
        #foot-right{
            width: 100%;
            height: 3rem;
            line-height: 3rem;
            padding-left: 3rem;
            padding-right: 0.5rem;
            position: relative;
            z-index: -1;
            -webkit-overflow-scrolling: touch;
        }
        #foot-right .time-a,.time-c{
            height: 3rem;
            width: 20%;
            text-align: center;
            line-height: 3rem;
            color: #fff;
        }
        #foot-right .time-a,.time-b{
            float: left;
        }
        #foot-right .time-c{
            float: right;
        }
        #foot-right .time-b{
            width: 60%;
            height: 3rem;
        }
        #progress{
            width: 100%;
            height: 0.25rem;
            margin-top: 1.35rem;
            background-color: #69594f;
        }
        #progress .aui-progress-bar{
            background-color: #fff;
        }
    </style>
</head>
<body>
<header><img src="../image/message/video_off_ico.png" alt=""></header>
<div id="play"></div>
<footer>
    <div id="foot-left">
        <img src="../image/message/news_goon_ico.png" alt="" id="play_switch">
    </div>
    <div id="foot-right">
        <div class="time-a" id="start-time">00:00</div>
        <div class="time-b">
            <div class="aui-progress aui-progress-xxs" id="progress">
                <div class="aui-progress-bar" id="slider"></div>
            </div>
        </div>
        <div class="time-c" id="total-time">00:00</div>
    </div>
</footer>

<script type="text/javascript" src="../script/jquery.min.js"></script>

<script>

    !function (d) {
        var runs = false;

        var video_time = 5;
        if (video_time >= 10) {
            document.querySelector('#total-time').innerText = '00:'+video_time;
        } else {
            document.querySelector('#total-time').innerText = '00:0'+video_time;
        }
        d.querySelector('#play').onclick=function () {
            runs = !runs;
            run('slider',video_time);
        }

        d.querySelector('#play_switch').onclick=function () {
            runs = !runs;
            run('slider',video_time);
        }


        var settime,playtime=0;
        function run(id,time) {
            var i = 0,start;
            if(runs){
                dealswitch('start');
                settime = setInterval(function () {
                        start = parseInt((playtime+1)*time/100);
                        if (start >= 10) {
                            document.querySelector('#start-time').innerText = '00:'+start;
                        } else {
                            document.querySelector('#start-time').innerText = '00:0'+start;
                        }

                        if(playtime != 0){
                            document.querySelector('#'+id).style.width = (playtime++)+'%';
                        } else {
                            document.querySelector('#'+id).style.width = (i++)+'%';
                            playtime = i;
                        }
                        if (playtime == 100) {
                            playtime = 0;
                            runs =  !runs;
                            dealswitch('stop');
                            clearInterval(settime);
                        }
                    },time*10);
            }else{
                clearInterval(settime);
                dealswitch('stop');
            }

        }

        function dealswitch(operation) {
            if (operation == 'stop') {
                $("#play").show();
                $("#play_switch").attr('src','../image/message/news_goon_ico.png');
            } else {
                $("#play").hide();
                $("#play_switch").attr('src','../image/message/news_stop_ico.png');
            }
        }
    }(document);

</script>

</body>
</html>

值得好好参谋。



本文转自TBHacker博客园博客,原文链接:http://www.cnblogs.com/jiqing9006/p/7172358.html,如需转载请自行联系原作者

相关文章
|
9月前
|
JSON C++ 数据格式
C++20 高性能基础库--兰亭集库助力开发者构建高性能应用
这次分享的主题是《高性能基础库--兰亭集库助力开发者构建高性能应用》的实践经验。主要分为三个部分: 1. 业务背景 2. 雅兰亭库架构 3. 业务优化
216 9
|
12月前
|
搜索推荐 关系型数据库 MySQL
#874358#基于django/neo4j的电视剧浏览数据推荐系统
#874358#基于django/neo4j的电视剧浏览数据推荐系统
324 0
|
SDN 网络虚拟化 网络架构
深入解析网络类型及其特点
【8月更文挑战第24天】
1557 0
|
数据库 Android开发 数据库管理
sqlite数据库查看里面数据库版本号
终于建了一个自己个人小站:https://huangtianyu.gitee.io,以后优先更新小站博客,欢迎进站,O(∩_∩)O~~ 在android sqlite数据库开发中,常会把手机上的具体数据库拷贝到电脑上进行查看。
5178 0
|
弹性计算
阿里云服务器续费优惠券和续费流程(2023年更新)
阿里云服务器续费优惠券领取和续费流程,阿里云服务器续费流程2023年新版教程,云服务器续费可以领取300元优惠券,还享受续费折扣
1431 0
阿里云服务器续费优惠券和续费流程(2023年更新)
|
JSON 前端开发 JavaScript
搭建Vue3组件库:第十六章 品质保证:发布覆盖率测试报告
本章介绍如何发布你的组件代码覆盖率已经获取对应徽章。
898 0
搭建Vue3组件库:第十六章 品质保证:发布覆盖率测试报告
|
安全 Unix Linux
Linux异常进程排查 命令记录
Linux异常进程排查 命令记录
752 0
|
人工智能 JSON 移动开发
DingTalk「开发者说」钉钉连接平台,OA审批场景下如何实现系统互通
钉钉连接平台通过简单的低代码配置,帮助企业迅捷实现系统集成和连接,降低集成实施的周期和成本。本文主要介绍在OA审批场景下,如何通过连接平台实现系统互通。
2690 0
DingTalk「开发者说」钉钉连接平台,OA审批场景下如何实现系统互通
|
存储 缓存 Dragonfly
Nydus 镜像加速之内核演进之路
多年来容器化实践告诉我们,优化后的容器镜像搭配 P2P 网络等技术可以有效降低容器部署启动的时间,并可保障容器持续稳定运行,相关背景细节可以参考[“容器技术之容器镜像篇”](https://mp.weixin.qq.com/s/s4lFGbKlXuer8mlE8kqQOA)、[“让容器应用管理更快更安全,Dragonfly 发布 Nydus 容器镜像加速服务”](https://mp.weixin
1559 0
Nydus 镜像加速之内核演进之路
|
云安全 弹性计算 运维
阿里云重磅发布云原生裸金属方案:裸金属+容器,解锁云计算的新方式
新一代容器服务ACK,可以将最新神龙弹性裸金属实例的强大性能发挥得淋漓尽致,具备极致性能、高效调度、全面安全的特点。
2156 0
阿里云重磅发布云原生裸金属方案:裸金属+容器,解锁云计算的新方式