使用jq制作一个可拖拽的进度条

html部分
<div class="progress">
        <div class="progress_bg">
            <div class="progress_bar"></div>
        </div>
        <div class="progress_btn"></div>
        <div class="text">0%</div>
</div>

主要由背景条,背景bar和按钮组成

css部分
.progress {
            position: relative;
            width: 300px;
            margin: 100px auto;
        }

        .progress_bg {
            height: 10px;
            border: 1px solid #ddd;
            border-radius: 5px;
            overflow: hidden;
            background-color: #f2f2f2;
        }

        .progress_bar {
            background: #5FB878;
            width: 0;
            height: 10px;
            border-radius: 5px;
        }

        .progress_btn {
            width: 20px;
            height: 20px;
            border-radius: 5px;
            position: absolute;
            background: #fff;
            left: 0px;
            margin-left: -10px;
            top: -5px;
            cursor: pointer;
            border: 1px #ddd solid;
            box-sizing: border-box;
        }

        .progress_btn:hover {
            border-color: #F7B824;
        }

主要对html部分进行“装修”。

js部分
$(function () {
            var tag = false, ox = 0, left = 0, bgleft = 0;
            $('.progress_btn').mousedown(function (e) {
                ox = e.pageX - left;
                tag = true;
            });
            $(document).mouseup(function () {
                tag = false;
            });
            $('.progress').mousemove(function (e) {//鼠标移动
                if (tag) {
                    left = e.pageX - ox;
                    if (left <= 0) {
                        left = 0;
                    } else if (left > 300) {
                        left = 300;
                    }
                    $('.progress_btn').css('left', left);
                    $('.progress_bar').width(left);
                    $('.text').html(parseInt((left / 300) * 100) + '%');
                }
            });
            $('.progress_bg').click(function (e) {//鼠标点击
                if (!tag) {
                    bgleft = $('.progress_bg').offset().left;
                    left = e.pageX - bgleft;
                    if (left <= 0) {
                        left = 0;
                    } else if (left > 300) {
                        left = 300;
                    }
                    $('.progress_btn').css('left', left);
                    $('.progress_bar').animate({ width: left }, 300);
                    $('.text').html(parseInt((left / 300) * 100) + '%');
                }
            });
        });

主要由鼠标按下,鼠标松开,鼠标移动几个事件组成。
重要的方法:
offset():获取鼠标指针位置相对于触发事件的对象的 x 坐标和y坐标
e.page:相对于document的坐标

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,以下是一个简单的示例代码: HTML 代码: ```html <!-- 进度条 --> <div class="progress"> <div class="progress-bar progress-bar-striped progress-bar-animated bg-success" role="progressbar" aria-valuenow="0" aria-valuemin="0" aria-valuemax="100" style="width: 0;"></div> </div> <!-- 按钮 --> <button id="submit-btn" class="btn btn-primary">提交请求</button> ``` JavaScript 代码: ```javascript $(function() { // 绑定按钮点击事件 $('#submit-btn').click(function() { // 发送请求 $.ajax({ url: 'your-api-url', type: 'POST', data: { /* 请求参数 */ }, beforeSend: function() { // 请求发送之前,显示进度条并将进度条宽度重置为 0 $('.progress').show(); $('.progress-bar').css('width', '0%'); }, xhr: function() { // 创建 XMLHttpRequest 对象,用于获取请求进度 var xhr = $.ajaxSettings.xhr(); if (xhr.upload) { xhr.upload.addEventListener('progress', function(e) { if (e.lengthComputable) { // 计算并更新进度条宽度 var percent = e.loaded / e.total * 100; $('.progress-bar').css('width', percent + '%'); } }, false); } return xhr; }, success: function(data) { // 请求成功,隐藏进度条 $('.progress').hide(); // 处理返回数据 // ... }, error: function(jqXHR, textStatus, errorThrown) { // 请求失败,隐藏进度条 $('.progress').hide(); // 处理错误信息 // ... } }); }); }); ``` 这个示例代码会在发送 AJAX 请求时显示一个进度条,并监听请求的进度,实时更新进度条的宽度。当请求成功或失败时,进度条会被隐藏。你可以根据实际情况对代码进行修改和优化。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值