美文网首页
可拖拽的进度条

可拖拽的进度条

作者: 升龙无涯 | 来源:发表于2021-08-29 11:10 被阅读0次

    效果图如下:


    可拖拽的进度条

    html结构代码:

    <style>
    .box{
        width: 300px;
        height: 30px;
        border:1px solid #000;
        float:left;
    }
    .box .progress{
        width: 0;
        height: 30px;
        background-color:hotpink;
    }
    .percentBox{
        float:left;
        line-height: 30px;
        margin-left:20px;
    }
    </style>
    <div class="box">
        <div class="progress"></div>
    </div>
    <div class="percentBox">0</div>
    

    js逻辑代码:

    // 获取所有标签
    var box = document.querySelector('.box');
    var progress = document.querySelector('.progress');
    var percentBox = document.querySelector('.percentBox');
    // 在大盒子中按下鼠标设置进度条
    box.addEventListener('mousedown', mousedown)
    function mousedown() {
        // 获取事件对象 - 因为设置进度条需要鼠标的位置 - 鼠标的位置需要依赖事件对象
        var e = window.event;
        // 获取鼠标在大盒子上的位置
        var x = e.offsetX;
        // 将获取到的位置设置给进度条小盒子
        progress.style.width = x + 'px';
        // 计算进度条的进度比例 = 进度条小盒子的宽度 / 大盒子的宽度 
        var percent = x / box.clientWidth
        // 将计算好的比例转成比分比的整数
        percent = Math.round(percent * 100)
        // 将计算好的比例放在比例盒子中
        percentBox.innerText = percent
        // 当按下鼠标后,在大盒子中移动鼠标,也要能设置进度条
        box.onmousemove = function() {
            // 获取事件对象
            var ev = window.event;
            // 获取鼠标在大盒子中的位置
            var x = ev.offsetX;
            // 将获取到的位置设置给进度条小盒子
            progress.style.width = x + 'px';
            // 计算进度条的进度比例 = 进度条小盒子的宽度 / 大盒子的宽度 
            var percent = x / box.clientWidth
            // 将计算好的比例转成比分比的整数
            percent = Math.round(percent * 100)
            // 将计算好的比例放在比例盒子中
            percentBox.innerText = percent
        }
    }
    // 在文档中松开鼠标,大盒子中移动鼠标就不能设置进度条了
    document.addEventListener('mouseup', mouseup)
    function mouseup() {
        // 将大盒子的移动事件解绑
        box.onmousemove = null
    }
    

    相关文章

      网友评论

          本文标题:可拖拽的进度条

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