美文网首页
进度条案例

进度条案例

作者: 升龙无涯 | 来源:发表于2021-08-04 18:22 被阅读0次

点击开始按钮,进度条可以开始,如果当前进度不为0,开始按钮就没有作用;点击暂停按钮,进度可以停下来;点击继续按钮可以让进度条继续,当进度条进度为0的时候,点击暂停就不起作用;点击停止按钮让进度条停下来,进度设置为0。
最终效果:


进度条

html结构代码:

<style>
.box{
    width: 300px;
    height: 30px;
    border:1px solid #000;
}
.progress{
    width: 0;
    height: 30px;
    background-color: pink;
}
</style>
<div class="box">
    <div class="progress"></div>
</div>
<button class="start">开始</button>
<button class="pause">暂停</button>
<button class="continue">继续</button>
<button class="stop">停止</button>

js代码:

// 获取所有标签
var box = document.querySelector('.box');
var progress = document.querySelector('.progress');
var startBtn = document.querySelector('.start');
var pauseBtn = document.querySelector('.pause');
var continueBtn = document.querySelector('.continue');
var stopBtn = document.querySelector('.stop');
// 定义定时器变量
var timerId = null;
// 设置开关变量
var flag = true;
// 给开始按钮添加点击时间
startBtn.onclick = function(){
    // 如果开关是关闭状态,点击按钮不起作用
    if(!flag){
        return false;
    }
    // 如果进度条的宽度不为0,点击就没有效果,此时应该点击继续按钮
    if(progress.offsetWidth !== 0){
        return false;
    }
    // 如果点击按钮能起作用,进度条可以进行,那在进度条走的过程中,将开关关闭
    flag = false
    // 定义初始宽度为0 - 因为开始一定是从0开始
    var num = 0;
    // 设置定时器让进度条的宽度不停的增加
    timerId = setInterval(function(){
        // 让宽度num增加
        num += 2;
        // 如果num增加到了大盒子的宽度,就停止定时器
        if(num>=box.clientWidth){
            num = box.clientWidth;
            clearInterval(timerId)
            // 进度条不动了,将开关打开,方便下次操作
            flag = true
        }
        // 将增加后的数字设置给进度条
        progress.style.width = num + "px"
    },50)
}
// 给暂停按钮添加点击事件
pauseBtn.onclick = function(){
    // 停止定时器
    clearInterval(timerId)
    // 进度条不动了,将开关打开,方便下次操作
    flag = true
}
// 给继续按钮添加点击事件
continueBtn.onclick = function(){
    // 如果开关是关闭状态,点击按钮不起作用
    if(!flag){
        return false;
    }
    // 如果当前进度为0,点击继续按钮没有效果,此时应该点击开始按钮
    if(progress.offsetWidth === 0){
        return false;
    }
    // 如果点击按钮能起作用,进度条可以进行,那在进度条走的过程中,将开关关闭
    flag = false;
    // 获取进度条当前的宽度
    var num = progress.offsetWidth;
    // 设置定时器让num增加
    timerId = setInterval(function(){
        // 让宽度增加
        num += 2;
        // 如果num增加到了大盒子的宽度,就停止定时器
        if(num>=box.clientWidth){
            num = box.clientWidth;
            clearInterval(timerId)
            // 进度条不动了,将开关打开,方便下次操作
            flag = true
        }
        // 将增加后的数字设置给进度条
        progress.style.width = num + "px"
    },50)
}
// 给停止按钮添加点击事件
stopBtn.onclick = function(){
    // 清除定时器
    clearInterval(timerId)
    // 进度条不动了,将开关打开,方便下次操作
    flag = true
    // 将进度条的宽度设置为0
    progress.style.width = 0
}

相关文章

  • 用户必须等待时的处理方式

    使用进度条/娱乐项目/预加载内容,分散用户注意力,让用户觉得时间更快。 案例1. 下载时的进度条 案例2. 网上购...

  • progress进度条

    问题一:进度条组件是否需要饱含操作? 问题二:进度条本身是否需要双端适配? 案例: mobile.ant.desi...

  • 进度条案例

    点击开始按钮,进度条可以开始,如果当前进度不为0,开始按钮就没有作用;点击暂停按钮,进度可以停下来;点击继续按钮可...

  • 进度条

    1 案例描述 1.1 场景描述 进度条,从0到100逐渐增长,上方显示百分比。 1.2 思路分析 1)进度条,就是...

  • 03、CSS3-UI样式

    一、圆角 二、线性渐变 案例: 进度条 三、径向渐变 四、背景 五、遮罩 作者:西门奄链接:https://www...

  • 进程池

    程序的创建和销毁是需要大量的资源 ps:vim中 . 可以执行上次的命令 案例 加进度条版本

  • Axure RP 9 教程—记录你的颜值

    前言 本案例教你记录你的颜值,哈哈,开玩笑啦,言归正传,本案例制作一个可拖动的条形进度条,同时可以显示当前位置的百...

  • sys模块

    打印进度条 进度条的效果 [# ][## ][### ...

  • 橡皮筋进度条ElasticProgressBar

    橡皮筋进度条ElasticProgressBar 橡皮筋进度条是一个极具动画效果的进度条。该进度条不仅具有皮筋效果...

  • iOS开发基础篇--CAShapeLayer的strokeSta

    一、案例演示 最近有一个小需求,就是要做一个圆形进度条,大概样子如下: 。 在不知道有CAShapeLayer的s...

网友评论

      本文标题:进度条案例

      本文链接:https://www.haomeiwen.com/subject/sbnuvltx.html