清华大佬耗费三个月吐血整理的几百G的资源,免费分享!....>>>
<!-- 购买时长 S -->
<html>
<head>
<meta charset="utf-8" />
<title>Slider</title>
<style type="text/css">
.uc-slider .unit i{background: url("month_chinese.png") no-repeat;}
.uc-slider{position: relative; display: inline-block; height: 26px; background-color: #f9f9f9; padding: 0 7px; border-radius: 4px; vertical-align: bottom; *vertical-align: text-bottom;}
.uc-slider .range{position: relative; height: 26px; background-color: #f9f9f9; border-radius: 4px;}
.uc-slider .range .block{display: inline-block; height: 24px;}
.uc-slider .block div{border-right: solid 1px #e6e6e6; height: 24px; padding: 1px 10px 1px 0; text-align: right;}
.uc-slider .block span{float: right; display: inline; line-height: 2; font-size: 12px; color: #999;}
.uc-slider .block .last{border-width: 0; padding-right: 11px;}
.uc-slider .container{position: absolute; left: -7px; top:0; width:0%; height: 24px; border: solid 1px #6dc5dc; padding: 0 6px; overflow: hidden; background-color: #eafbfe; border-radius: 4px;}
.uc-slider .container .current{height: 24px; overflow: hidden; width: 100%; background-color: #eafbfe; border-radius: 4px; white-space: nowrap;}
.uc-slider .current .unit{display: inline-block; margin-left: 0; height: 24px;}
.uc-slider .unit div{border-right: solid 1px #d0eaf9; height: 24px; padding-right: 10px; text-align: right;}
.uc-slider .unit span{float: right; display: inline; height: 24px; line-height: 2; font-size: 12px; color: #c8c1a8; -webkit-transition: color .3s; -moz-transition: color .3s; -ms-transition: color .3s; -o-transition: color .3s;}
.uc-slider .unit i{float: right; display: none; height: 8px; width: 13px; overflow: hidden; margin-top: 7px;}
.uc-slider .unit .last{border-width: 0; padding-right: 11px;}
.uc-slider .bar{position: absolute; top: 0; left: -7px; background-color: #f00; height: 26px; overflow: hidden; width: 100%; cursor: default; opacity: 0; filter: alpha(opacity=0);}
.uc-slider .drag{position: absolute; left: -7px; top: -2px; display: block; width: 10px; height: 19px; padding: 9px 0 0 3px; overflow: hidden; border: solid 1px #bbbbbb; background-color: #fff; cursor: default;
-webkit-transition: border-color .3s, -webkit-transform .3s; -moz-transition: border-color .3s, -moz-transform .3s; -ms-transition: border-color .3s, -ms-transform .3s; -o-transition: border-color .3s, -o-transform .3s; outline: none; box-shadow: 0 1px 5px rgba(0, 0, 0, 0.25); -webkit-transform: scale(1); -moz-transform: scale(1); -ms-transform: scale(1); -o-transform: scale(1);}
.uc-slider .drag:link,
.uc-slider .drag:visited{border-color: #ccc;}
.uc-slider .drag:hover{border-color: #aaa;}
.uc-slider .drag i{float: left; display: inline; margin: 0 0 0 1px; width: 1px; height: 10px; overflow: hidden; background: #ababab; background: -webkit-linear-gradient(top, #f2f2f2, #ababab, #f2f2f2); background: -moz-linear-gradient(top, #f2f2f2, #ababab, #f2f2f2); background: -o-linear-gradient(top, #f2f2f2, #ababab, #f2f2f2); background: -ms-linear-gradient(top, #f2f2f2, #ababab, #f2f2f2);}
/*.slider iframe{position: absolute; top: 0; left: 0; filter:alpha(opacity=0); width: 100%; height: 26px; background-color: #f00; border-width: 0;}*/
.uc-slider .w60{width: 60%; *width: 59.99%;}
.uc-slider .w50{width: 50%; *width: 49.99%;}
.uc-slider .w25{width: 25%; *width: 24.99%;}
.uc-slider .w20{width: 20%; *width: 19.99%;}
.duration{width: 506px;}
.uc-slider .mm{width: 37px;}
.uc-slider .yy{width: 57px;}
.uc-input{border: solid 1px #d4d4d4; width: 44px; height: 12px; padding: 6px 4px; font-size: 12px; line-height: 1; outline: none; border-radius: 4px; box-shadow: inset 1px 1px 1px #e8e8e8; color: #000;}
</style>
<script type="text/javascript" src="jquery-1.9.1.js"></script>
<script type="text/javascript">
var UC = {};
(function($, win, doc, U){
U.slider = function(selection, options){
var _t = this;
_t.sliderDom = $(selection);
_t.rangeDom = _t.sliderDom.find('.range');
_t.containerDom = _t.sliderDom.find('.container');
_t.dragDom = _t.sliderDom.find('.drag');
_t.barDom = _t.sliderDom.find('.bar');
_t.blockDom = _t.sliderDom.find('.block');
_t.unitDom = _t.sliderDom.find('.unit');
_t.inputDom = null;
_t.options = options;
_t.ismousedown = false;
_t.diffX = 0;
_t.distanceX = 0;
_t.start = 0;
_t.minWidth = 0;
_t.maxWidth = 0;
_t.minValue = 0;
_t.maxValue = 0;
_t.currentWidth = 0;
_t.currentIndex = 0;
_t.currentValue = 0;
_t.blockWidth = [];
_t.block = _t.options.data;
_t.hasInput = false;
_t.changeHandler = function(){};
_t.initUnit = function(){
var w, min, max;
for(var i = 0, len = _t.blockDom.length; i < len; i++){
w = $(_t.blockDom[i]).width();
$(_t.unitDom[i]).width(w);
_t.blockWidth.push(w);
_t.maxWidth += w;
}
_t.barDom.width(_t.maxWidth + 14);
//if(_t.block[0].min !== _t.currentValue){
//_t.currentValue = _t.block[0].min;
//}
/* 初始化允许选择的最小最大值 */
_t.currentValue = _t.minValue = !!_t.options.min ? _t.options.min : _t.block[0].min;
_t.maxValue = !!_t.options.max ? _t.options.max : _t.block[len - 1].max;
};
_t.initInput = function(){
var input;
if(!!_t.options.bindInput){
_t.hasInput = true;
_t.inputDom = $(_t.options.bindInput);
}
};
_t.initValue = function(){
var idx = 0, value = 0;
if(!!_t.options.defaultValue){
_t.currentValue = _t.options.defaultValue - 0;
}
_t.valueToWidth();
_t.moveToX();
};
_t.showValue = function(){
if(_t.hasInput){
_t.inputDom.val(_t.currentValue);
}
};
_t.changeInputValue = function(){
if(_t.hasInput){
function handler(){
var t = $(this), val = t.val(), reg = /^\d+$/, max, min, unit, idx;
min = _t.block[0].min;
max = _t.block[_t.block.length - 1].max;
if(reg.test(val)){
idx = _t.valueToIndex(val);
unit = _t.block[idx].unit;
val = val - 0 < min ? min : (val - 0 > max ? max : val);
val = Math.ceil(val / unit) * unit;
}else{
//val = min;
val = _t.options.defaultValue !== undefined ? _t.options.defaultValue : min;
}
_t.currentValue = val - 0;
_t.valueToWidth();
//_t.widthToValue();
//_t.valueToWidth();
_t.moveToX();
t.val(_t.currentValue);
}
_t.inputDom.blur(handler);
_t.inputDom.change(handler);
}
}
_t.showUnit = function(){
_t.unitDom.find('span').css('color', '#93c4e2');
_t.unitDom.find('i').css('display', 'none');
$(_t.unitDom[_t.currentIndex]).find('span').css('color', '#000');
$(_t.unitDom[_t.currentIndex]).find('i').css('display', 'inline');
//_t.changeHandler();
}
_t.setMaxValue = function(val){
_t.maxValue = val < _t.block[_t.block.length - 1].max ? val : _t.block[_t.block.length - 1].max;
if(_t.maxValue < _t.minValue){
_t.minValue = _t.maxValue;
}
return _t;
}
_t.setMinValue = function(val){
_t.minValue = val > _t.block[0].min ? val : _t.block[0].min;
return _t;
}
_t.change = function(fun){
_t.changeHandler = fun;
return _t;
}
_t.calculateVal = function(){
_t.widthToValue();
_t.showValue();
_t.showUnit();
//alert(1);
};
_t.moveToX = function(){
_t.showValue();
_t.showUnit();
_t.dragDom.stop().animate({
'left' : _t.currentWidth - 7
}, 200);
_t.containerDom.stop().animate({
'width' : _t.currentWidth
}, 200);
_t.changeHandler();
};
_t.valueToIndex = function(v){
var len = _t.block.length, idx = 0, i = 0, val;
val = !!v ? v : _t.currentValue;
//console.log(!!v? 'v' : 'currentValue');
for(; i < len; i++){
if(val <= _t.block[i].max){
idx = i;
break;
}
}
return idx;
};
_t.widthToValue = function(width){
var i = 0, w = 0, len = _t.blockWidth.length, unit, _w, _v;
_w = !!width ? width : _t.currentWidth;
for(; i < len; i++){
if(_w <= w + _t.blockWidth[i]){
break;
}
w += _t.blockWidth[i];
}
unit = _t.block[i];
_w = (_w - w) / _t.blockWidth[i];
//_v = (i < 1 ? _t.block[0].min : _t.block[i - 1].max) + Math.ceil(_w * ((unit.max - unit.min) / unit.unit)) * unit.unit;
_v = _t.block[i].min + Math.ceil(_w * ((unit.max - unit.min) / unit.unit)) * unit.unit;
/* 调整值 */
_t.currentValue = _v = _v < _t.minValue ? _t.minValue : (_v > _t.maxValue ? _t.maxValue : _v);
_t.currentValue = _v;
//_t.currentIndex = i;
_t.currentIndex = _t.valueToIndex();
return _t.currentValue;
};
_t.valueToWidth = function(value){
var i = 0, w = 0, len, idx, unit, _v;
_v = !!value ? value : _t.currentValue;
/* 调整值 */
_t.currentValue = _v = _v < _t.minValue ? _t.minValue : (_v > _t.maxValue ? _t.maxValue : _v);
len = _t.block.length;
for(; i < len; i++){
if(_v <= _t.block[i].max){
idx = i;
break;
}
}
for(i = 0, len = idx; i < len; i++){
w += _t.blockWidth[i];
}
unit = _t.block[idx];
//w += Math.floor((_v - (idx < 1 ? 0 : _t.block[idx - 1].max)) / (unit.max - unit.min) * _t.blockWidth[idx]);
w += Math.floor((_v - _t.block[idx].min) / (unit.max - unit.min) * _t.blockWidth[idx]);
_t.currentWidth = w;
_t.currentIndex = idx;
return w;
};
_t.value = function(val){
_t.currentValue = val - 0;
_t.valueToWidth();
_t.moveToX();
return _t;
};
_t.barDom.click(function(ev){
var width;
//_t.barDom.focus();
//alert($(doc).scrollLeft());
_t.distanceX = _t.rangeDom.offset().left;
width = Math.floor(ev.clientX + $(doc).scrollLeft() - _t.distanceX);
_t.currentWidth = width < 0 ? 0 : (width > _t.maxWidth ? _t.maxWidth : width);
_t.widthToValue();
_t.valueToWidth();
_t.moveToX();
});
_t.dragDom.mousedown(function(ev){
ev.preventDefault();
//$(this).blur();
//_t.dragDom.focus();
_t.minWidth = 0;
_t.maxWidth;
_t.distanceX = _t.rangeDom.offset().left;
_t.diffX = ev.clientX + $(doc).scrollLeft() - _t.dragDom.offset().left;
_t.ismousedown = true;
});
$(doc).mouseup(function(ev){
if(_t.ismousedown){
_t.valueToWidth();
_t.moveToX();
_t.ismousedown = false;
}
});
$(doc).mousemove(function(ev){
var x;
if(!_t.ismousedown){
return;
}
x = ev.clientX + $(doc).scrollLeft() - _t.diffX - _t.distanceX;
x = x <= -7 ? -7 : (x > _t.maxWidth - 7 ? _t.maxWidth - 7 : x);
_t.currentWidth = x + 7 > _t.maxWith ? _t.maxWith : x + 7;
_t.containerDom.css('width', _t.currentWidth);
_t.dragDom.css('left', x);
setTimeout(_t.calculateVal, 1);
//_t.calculateVal();
});
/* 重置长度 */
//$(win).resize();
_t.initUnit();
_t.initInput();
//setTimeout(_t.initValue, 1);
_t.initValue();
_t.showValue();
_t.changeInputValue();
};
})(jQuery, window, document, UC);
</script>
</head>
<body>
<div class="row">
<label class="row-name">购买时长:</label>
<div class="column">
<span id="uc-duration" class="uc-slider duration">
<div class="range">
<span class="block mm">
<div>
<span>1</span>
</div>
</span><span class="block mm">
<div>
<span>2</span>
</div>
</span><span class="block mm">
<div>
<span>3</span>
</div>
</span><span class="block mm">
<div>
<span>4</span>
</div>
</span><span class="block mm">
<div>
<span>5</span>
</div>
</span><span class="block mm">
<div>
<span>6</span>
</div>
</span><span class="block mm">
<div>
<span>7</span>
</div>
</span><span class="block mm">
<div>
<span>8</span>
</div>
</span><span class="block mm">
<div>
<span>9</span>
</div>
</span><span class="block yy">
<div >
<span>1年</span>
</div>
</span><span class="block yy">
<div >
<span>2年</span>
</div>
</span><span class="block yy">
<div class="last" >
<span>3年</span>
</div>
</span>
<div class="container">
<div class="current">
<span class="unit">
<div>
<i></i><span>1</span>
</div>
</span><span class="unit">
<div>
<i></i><span>2</span>
</div>
</span><span class="unit">
<div>
<i></i><span>3</span>
</div>
</span><span class="unit">
<div>
<i></i><span>4</span>
</div>
</span><span class="unit">
<div>
<i></i><span>5</span>
</div>
</span><span class="unit">
<div>
<i></i><span>6</span>
</div>
</span><span class="unit">
<div>
<i></i><span>7</span>
</div>
</span><span class="unit">
<div>
<i></i><span>8</span>
</div>
</span><span class="unit">
<div>
<i></i><span>9</span>
</div>
</span><span class="unit">
<div >
<span>1年</span>
</div>
</span><span class="unit">
<div >
<span>2年</span>
</div>
</span><span class="unit">
<div class="last" >
<span>3年</span>
</div>
</span>
</div>
</div>
<div class="bar"></div>
<a href="javascript:;" target="_self" rel="nofollow" class="drag" hidefocus>
<i></i>
<i></i>
<i></i>
</a>
</div>
</span>
<input class="uc-duration" type="text" value="12" />
</div>
</div>
<!-- 购买时长 E -->
<script type="text/javascript">
var F = new Object;
F.DurationConfig = {};
F.DurationConfig.data = [];
var vm_duration_config = [{"max":9,"min":1,"step":1,"unit":"month"},{"max":3,"min":1,"step":1,"unit":"year"},{"max":15,"min":1,"step":1,"unit":"day"}];
(function(){
var i = 0, l = 0, _i = 0, _l = 0,
step = 0,
min = 0,
max = 0,
type;
for(i = 0, l = vm_duration_config.length; i < l; i ++){
type = vm_duration_config[i].unit;
for(_i = vm_duration_config[i].min - 0, _l = vm_duration_config[i].max - 0; _i <= _l; _i ++){
min = max;
max = _i;
max = type === 'year' ? max * 12 : max;
step = max - min;
F.DurationConfig.data.push({
'unit': step,
'min': min,
'max': max
});
}
}
F.DurationConfig.defaultValue = 12;
})();
var t = new UC.slider("#uc-duration",{
data: F.DurationConfig.data,
min: 1,
bindInput: '.uc-duration'
})
t.change(function () {
alert(this.currentValue);
});
</script>
</body>
</html>