jquery插件——滑动条(1)

以下是一个基于jquery的滑动条实例,实现了简单的滑动效果:

<!DOCTYPE html>
<html>
<head>
	<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
	<title>jquery插件-滚动条</title>
	<script type="text/javascript" src="../js/jquery_172.js"></script>
	<style type="text/css">
	.myslider{
		width: 300px;
		height: 5px;
		margin: 10px;
		background-color: #FFFFE0;
		border: 1px solid #A9C9E2;
		position: relative;
	}
	.myslider .completed{
		height: 3px;
		background-color: #7d9edb;
		top: 1px;
		left: 1px;
		position: absolute;
	}
	.myslider .slider{
		height: 15px;
		background-color: #E6E6FA;
		border: 1px solid #A5B6C8;
		top: -6px;
		width: 4px;
		display: block;
		cursor: pointer;
		position: absolute;
	}
	</style>
	<script type="text/javascript">
	(function ($){

		function mySlider(obj,settings){

			var _this = this;

			var myslider;			// 滚动条整体
			var myslider_completed;	// 已完成进度块
			var myslider_slider;	// 拖拽条

			// 默认配置项
			var defaults = {
				myCssName: 'myslider',
				completedCssName: 'completed',
				sliderCssName: 'slider',
				max: 100,
				min: 0
			};

			// 滚动条初始化
			this.onInit = function(){
				// 合并设置
				$.extend(defaults,settings);

				// 拼接html
				myslider_completed = $('<div></div>')
										.attr('class',defaults.completedCssName);

				myslider_slider = $('<div></div>')
									.attr('class',defaults.sliderCssName);

				myslider = $('<div></div>')
								.attr('class',defaults.myCssName)
									.append(myslider_completed)
										.append(myslider_slider);

				// 显示html
				obj.html(myslider);

				// bind事件
				myslider_slider.bind('mousedown',function(e){
					_this.onMouseDown(e);
				});

			};
			// 构造函数
			this.onInit();

			// 设置滚动条显示的值 [min,max]之间
			this.setProcess = function(value){
				var max = defaults.max;
				var min = defaults.min;
				value = (value > max) ? max : value;
				value = (value < min) ? min : value;

				var width = this.getWidth();
				var val = width*value/max;

				myslider_completed.css('width',val);
				myslider_slider.css('left',val);
			};

			this.onMouseDown = function(e){
				$(document).bind('mousemove',function(e){
					_this.onMouseMove(e);
				}).bind('mouseup',function(e){
					_this.onMouseUp(e);
				});
			};

			this.onMouseMove = function(e){
				var val = e.pageX - parseInt(myslider.offset().left);

				var max = defaults.max;
				var width = this.getWidth();
				var value = max*val/width;

				_this.setProcess(value);
			};

			this.onMouseUp = function(e){
				$(document).unbind('mousemove');
			};

			this.getWidth = function(e){
				var w = myslider.width();
				var s = myslider_slider.width();
				return w-s;
			};

		}

		$.fn.extend({

			jSlider: function(settings){
				return new mySlider($(this),settings);
			}

		});

	})(jQuery);
	</script>
</head>
<body>

	<div id="myslider1"></div>

	<div id="myslider2"></div>

	<script type="text/javascript">

		$(document).ready(function(){

			$('#myslider1').jSlider().setProcess(50);

			$('#myslider2').jSlider().setProcess(30);


		});

	</script>

</body>
</html>


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值