实现效果:
css样式代码略。
html代码:
页面上导入了jquery.mobile 、jquery
http://apps.bdimg.com/libs/jquery/1.10.2/jquery.min.js\"></script>
<script src=\"http://apps.bdimg.com/libs/jquerymobile/1.4.2/jquery.mobile.min.js\"></script>
<div id=\"pageSlide\">
<input type=\"hidden\" value=\"\" id=\"captcha\"/>
<div id=\"slider\" class=\"slider\">
<span id=\"label\" class=\"label\"></span>
<span id=\"lableTip\">Slide to confirm I am human!</span>
</div>
</div>
js代码:
<script type=\"text/javascript\">
window.onload = function () {
var slider1 = new Slider();
slider1.Init();
///屏幕大小发生改变时触发
$(window).resize(function () {
slider1.HanderIn();
slider1.HanderOut();
});
}
//滑动条对象
function Slider(swipestart, min, max, index, IsOk, lableIndex) {
var _self = this;
//是否开始滑动
_self.swipestart = swipestart;
//最小值
_self.min = min;
//最大值
_self.max = max;
//当前滑动条所处的位置
_self.index = index;
//是否滑动成功
_self.IsOk = IsOk;
//鼠标在滑动按钮的位置
_self.lableIndex = lableIndex;
}
//初始化
Slider.prototype.Init = function () {
var _self = this;
$(\"#label\").on(\"mousedown\", function (event) {
var e = event || window.event;
_self.lableIndex = e.clientX - this.offsetLeft;
_self.HanderIn();
});
$(\"#pageSlide\").on(\"mousemove\", function (event) {
_self.HanderMove(event);
});
$(document).on(\"mouseup\", function (event) {
_self.HanderOut();
});
$(\"#label\").on(\"touchstart\", function (event) {
var e = event || window.event;
_self.lableIndex = e.originalEvent.pageX - this.offsetLeft;
_self.HanderIn();
});
$(\"#pageSlide\").on(\"touchmove\", function (event) {
_self.HanderMove(event, \"mobile\");
});
$(document).on(\"touchend\", function (event) {
_self.HanderOut();
});
}
//鼠标/手指接触滑动按钮
Slider.prototype.HanderIn = function () {
var _self = this;
_self.swipestart = true;
_self.min = 0;
_self.max = $(\"#slider\").width();
}
//鼠标/手指移出
Slider.prototype.HanderOut = function () {
var _self = this;
//停止
_self.swipestart = false;
_self.Move();
}
//鼠标/手指移动
Slider.prototype.HanderMove = function (event, type) {
var _self = this;
if (_self.swipestart) {
event.preventDefault();
var event = event || window.event;
if (type == \"mobile\") {
_self.index = event.originalEvent.pageX - _self.lableIndex;
} else {
_self.index = event.clientX - _self.lableIndex;
}
_self.Move();
}
}
//鼠标/手指移出
Slider.prototype.Move = function () {
var _self = this;
$(\".warn\").text(\"index:\" + _self.index + \", max\" + _self.max + \",lableIndex:\" + _self.lableIndex + \",value:\" + $(\"#captcha\").val() + \" date:\" + new Date().getUTCDate());
if ((_self.index + 20) >= _self.max) {
_self.index = _self.max - 20;
}
if (_self.index < 0) {
_self.index = _self.min;
}
$(\".label\").css(\"left\", _self.index + \"px\");
if (_self.index == (_self.max - 20)) {
//停止
_self.swipestart = false;
_self.IsOk = true;//解锁
$(\"#captcha\").val(1);
var style = {\"filter\": \"alpha(opacity=1)\",
\"-moz-opacity\": \"1\", \"opacity\": \"1\"}
$(\".ui-btn.ui-input-btn.ui-corner-all.ui-shadow\").css(style);
$(\"#slider\").css(\"background-color\", \"#E5EE9F\");
$(\"#lableTip\").text(\"Thank You!\");
} else {
_self.IsOk = false;//未解锁
$(\"#captcha\").val(0);
var style = { \"filter\": \"alpha(opacity=0.2)\",
\"-moz-opacity\": \"0.2\", \"opacity\": \"0.2\"}
$(\".ui-btn.ui-input-btn.ui-corner-all.ui-shadow\").css(style);
$(\"#slider\").css(\"background-color\", \"#FDEB9C\");
$(\"#lableTip\").text(\"Slide to confirm I am human!\");
}
}
</script>
效果实现: