如果大家也在使用Bootstrap3的话,应该有机会使用到其中的progress进度条组件,如下:
<div class="progress"> <div class="progress-bar" role="progressbar" aria-valuenow="60" aria-valuemin="0" aria-valuemax="100" style="width: 60%;"> <span class="sr-only">60% Complete</span> </div> </div>
这段代码可以生成静态的进度条效果,如下:
为此我们需要js控制进度条的进度。
但是如果我们希望在项目中使用到类似jQuery UI中Slider组件功能的话,会发现Bootstrap3没有提供相关的组件。
这里我们介绍一个Bootstrap的扩展 - Bootstrap Slider,它能够帮助我们强化progressbar的效果,添加滑动块的功能。
支持设备:
- 平板电脑
- 桌面
- android手机
类库依赖:
- jquery-1.9.1.js
- jquery-ui-1.10.3.custom.min.js 支持鼠标交互的jquery ui组件, 可到jquery官网下载
- jquery.ui.touch-punch.js 用于移动设备中,支持触控交互
- bootstrapslider.js 我们今天介绍的Bootstrap Slider组件 , 可到https://github.com/juanmendez/bootstrap-slider下载
基本使用
效果:
代码:
<html> <head> <meta http-equiv="Content-Type" content="text/html; charset=gb2312" /> <title>Bootstrap Slider简单实用</title> <script type="text/javascript" src="jquery-1.9.1.js"></script> <script type="text/javascript" src="jquery-ui-1.10.3.custom.min.js"></script> <link rel="stylesheet" type="text/css" href="bootstrap.min.css"> <script type="text/javascript" src="bootstrapslider.js"></script> <style type="text/css"> .slider-bar{ display:block; width:80px; background-color:darkred; position:relative; } .slider, .slider-bar{ height:30px; } </style> </head> <body> <div class="bs-example" > <div class="progress slider"> <div aria-valuemax="100" aria-valuemin="0" aria-valuenow="30" role="progressbar" class="progress-bar progress-bar-warning"> <span class="sr-only">60%</span> </div> </div> </body> </html>
注意不要忘了加 slider 类样式。
高级使用
另外,该插件还提供了一些方法、事件 来设置或者监听进度条的状态。
1。设置参数:最大值、最小值、当前值。
$p = $(".progress);
方法1:$p.slider({max:80, min:0, now:30} );
方法2:$p.slider("option", "now", 20);
$p.slider("option", "max", 90);
另外还可以通过 $p.slider("option", "disabled", true); 进度条的拖动按钮是否可拖动。true:可拖动 false:不可拖动
2。监听事件
提供了俩个事件:
sliderchange:进度条当前值改变时触发
slidercomplete:进度条完成时触发,即当前值到达了最大值,如:100%
实例:
<html> <head> <meta http-equiv="Content-Type" content="text/html; charset=gb2312" /> <title>Bootstrap Slider高级使用</title> <script type="text/javascript" src="jquery-1.9.1.js"></script> <script type="text/javascript" src="jquery-ui-1.10.3.custom.min.js"></script> <link rel="stylesheet" type="text/css" href="bootstrap.min.css"> <script type="text/javascript" src="bootstrapslider.js"></script> <style type="text/css"> .slider-bar{ display:block; width:80px; background-color:darkred; position:relative; } .slider, .slider-bar{ height:30px; } </style> <script type="text/javascript">//<![CDATA[ $(function () { //for jsfiddle so its mobile friendly. $('head').append('<meta name="viewport" content="width=device-width, initial-scale=1" />'); var $alert = $($(".alert")[0]); var $p = $($(".progress")[0]); var $b = $($("[type='submit']")[0]); var $d = $("#btn_enabled"); var $t = $("#progress-value"); //监听sliderchange事件 $p.on("sliderchange", function (e, result) { //显示当前值 $alert.html("action: " + result.action + ", value: " + result.value); }); //监听slidercomplete事件 $p.on("slidercomplete", function (e, result) { console.log('slider completed!'); }); //通过$p.slider("option", "now", value);方法设置当前值 $b.on('click', function (e) { var value = parseFloat($t.val()); $p.slider("option", "now", value); return false; }); //设置进度条是否可拖动 $d.on('click', function () { if (!$d.hasClass('active')) { $d.text('Disabled '); $p.slider("option", "disabled", true); } else { $d.text('Enabled'); $p.slider("option", "disabled", false); } }); }); //]]> </script> </head> <body> <div class="bs-example" style="margin:100px; width:600px;"> <div class="progress slider"> <div aria-valuemax="100" aria-valuemin="0" aria-valuenow="30" role="progressbar" class="progress-bar progress-bar-warning"> <span class="sr-only">60%</span> </div> </div> <div class="alert alert-success">hello world</div> <div class="form-inline"> <div class="form-group"> <input type="number" id="progress-value" min="0" max="100" class="form-control" placeholder="设置当前值"> </div> <div class="btn-group"> <button type="submit" class="btn btn-default">Update</button> <button class="btn btn-default" data-toggle="button" id="btn_enabled">Enabled</button> </div> </div> </div> </body> </html>
在文本框中设置当前值,点击update按钮来改变。 Enabled按钮设置是否可以拖动。
好了,完成了。
在线效果可访问:http://jsfiddle.net/juanmendez/v9zkB/
更多详细介绍:https://github.com/juanmendez/bootstrap-slider