原生js 手写进度条

js手写滚动条

效果图

可拖动进度条

HTML

 <!--进度条-->
        <div class="bar">
            <div class="progress">
                <div id="oDiv" class="circle"></div>
            </div>
        </div>

css

 html, body {
        background-color: #f1f1f1;
    }

    .bar {
        width: 600px;
        height: 8px;
        background-color: #5A5A5A;
        margin: 200px auto;
        position: relative;
    }

    .progress {
        position: absolute;
        top: 0px;
        left: 0px;
        height: 100%;
        width: 0px;
        background-color: dodgerblue;
    }

    .circle {
        width: 20px;
        height: 20px;
        background-color: red;
        border-radius: 50%;
        position: absolute;
        top: -5px;
        left: -10px;
    }

js代码

 dragFn('oDiv', 600, 10)//设置可拖拽元素
    /*
    * params id
    * params max 最大长度
    * params r  半径
    * */
    function dragFn(id, max ,r) {
        var oDiv = document.getElementById(id);
        var disX = 0, disY = 0;
        oDiv.onmousedown = function (ev) {
            var oEvent = ev || event;
            disX = oEvent.clientX - oDiv.offsetLeft;
            disY = oEvent.clientY - oDiv.offsetTop;
            document.onmousemove = function (ev) {
                var oEvent = ev || event;

                var l = oEvent.clientX - disX;
                var t = oEvent.clientY - disY;
                if (l >= max) {
                    l = max - r
                }
                console.log(l);
                if (l <= 0) {
                    l = 0
                }
                if (t < 0) {
                    t = 0
                }
                if (l > document.documentElement.clientWidth - oDiv.offsetWidth) {
                    l = document.documentElement.clientWidth - oDiv.offsetWidth;
                }
                if (t > document.documentElement.clientHeight - oDiv.offsetHeight) {
                    t = document.documentElement.clientHeight - oDiv.offsetHeight;
                }

                oDiv.style.left = l + 'px';
                // oDiv.style.top = t + 'px';

            }

            document.onmouseup = function (ev) {
                document.onmousemove = null;
                document.onmouseup = null;
            }

        }
    }

可根据具体位置播放对应内容

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值