`

JQ 精简的拖动框

阅读更多
<!DOCTYPE html>
<html lang="zh-cn">
<head>
<meta charset="UTF-8">
<title></title>
<link rel="stylesheet" href="base.css" />
<script src="jquery-1.10.1.min.js" ></script>
<style>
.page{text-align:left;}
.dragDiv{border:1px solid #ddd; padding:10px; width:300px; margin:0 auto; border-radius:4px; box-shadow:0 1px 2px #fefefe; position: fixed; cursor:move;}
</style>
</head>
<body>
<div class="dragDiv" id="drag">
	<div class="drag-head">点击拖动</div>
	<div class="drag-body">
		一站式网络<br/>
		博客:<a href="http://onestopweb.iteye.com/" target="_blank">http://onestopweb.iteye.com/</a><br/>
		网站:<a href="http://onestopweb.cn/" target="_blank">http://onestopweb.cn/</a>
	</div>
</div>
<script type="text/javascript">
//视频小窗口播放和还原
//全局保存拖动的位置
var _drag = {};
_drag.top = 0; //拖动过的位置距离上边
_drag.left = 0; //拖动过的位置距离左边
_drag.maxLeft; //距离左边最大的距离
_drag.maxTop; //距离上边最大的距离
_drag.dragging = false; //是否拖动标志
//拖动函数
function bindDrag(el){ 
	var winWidth = $(window).width(), winHeight =$(window).height(),objWidth = $(el).outerWidth(), objHeight = $(el).outerHeight();
	_drag.maxLeft = winWidth - objWidth, _drag.maxTop = winHeight - objHeight;
	var els = el.style,x=0,y=0;
	var objTop = $(el).offset().top, objLeft = $(el).offset().left;
	$(el).mousedown(function(e){ 
		_drag.dragging = true;
		_drag.isDragged = true;
		x = e.clientX - el.offsetLeft; 
		y = e.clientY - el.offsetTop; 
		el.setCapture && el.setCapture(); 
		$(document).bind('mousemove',mouseMove).bind('mouseup',mouseUp);
		return false;
	}); 
	function mouseMove(e){ 
		e = e || window.event;
		if(_drag.dragging){
			_drag.top = e.clientY - y; 
			_drag.left = e.clientX - x;
			_drag.top = _drag.top > _drag.maxTop ? _drag.maxTop : _drag.top;
			_drag.left = _drag.left > _drag.maxLeft ? _drag.maxLeft : _drag.left;
			_drag.top = _drag.top < 0 ? 0 : _drag.top;
			_drag.left = _drag.left <0 ? 0 : _drag.left;
			els.top = _drag.top + 'px'; 
			els.left = _drag.left+ 'px';
			return false;
		}
	} 
	function mouseUp(e){ 
		_drag.dragging = false; 
		el.releaseCapture && el.releaseCapture(); 
		e.cancelBubble = true;
		$(document).unbind('mousemove',mouseMove).unbind('mouseup',mouseUp); 
	}
	$(window).resize(function(){
		var winWidth = $(window).width(),
		winHeight = $(window).height(),
		el = $(el),
		elWidth = el.outerWidth(),
		elHeight = el.outerHeight(),
		elLeft = parseFloat(el.css('left')),
		elTop = parseFloat(el.css('top'));
		_drag.maxLeft = winWidth - elWidth;
		_drag.maxTop = winHeight - elHeight;
		_drag.top = _drag.maxTop < elTop ? _drag.maxTop : elTop;
		_drag.left = _drag.maxLeft < elLeft ? _drag.maxLeft : elLeft;
		el.css({
			top:_drag.top,
			left:_drag.left
		})
	})
} 
bindDrag(document.getElementById('drag'));
</script>
</body>
</html>

 

效果图:

 

 

 

 

 

 

 

 

 

  • 大小: 19.5 KB
2
0
分享到:
评论

相关推荐

    jq图片缩放与拖动

    本实例"jq图片缩放与拖动"是基于jQuery实现的一个功能,允许用户对图片进行缩放和拖动操作,提高了网页的交互性和用户体验。 首先,我们来看"jq图片缩放与拖动"的核心技术点: 1. **jQuery选择器**:jQuery提供了...

    Jquery时间滑块TimeSlider增强显示(精简优化,有刻度,有调用方法)

    Jquery时间滑块TimeSlider增强显示。 有刻度,可用CSS设置长短,可以隐藏中间部分刻度的标签。 调用方法: $("#timeBarSlider") .slider({ min: 0, max: 1440, range: false, value: 0, slide: function (event,...

    基于jquery的dialog插件

    5. **可配置性**:为了适应不同的应用场景,dialog插件通常提供多种配置选项,如宽高、位置、是否可拖动、是否显示关闭按钮等。 6. **回调函数**:在对话框打开和关闭时,可以设定回调函数执行特定的逻辑,如数据的...

    jquery.nestable实例demo

    jquery.nestable是目前经常用的拖动排序插件。很多论文或者博客,都说用到了ace.min.css,但是好像这个下载的有点困难,于是笔者自己精简出这部分代码,形成了行内样式,同时提供了静态实例。

    jquery-ui-1.8.16.custom.zip

    主要文件可能有“jquery-ui.min.js”,它是精简版的jQuery UI库,还有可能包含其他辅助脚本或用户自定义的JavaScript代码。 - **development-bundle** 文件夹:这是一个开发人员使用的完整包,包含了未压缩和未合并...

    jquery.simple.tree插件 更简单,兼容性更好的无限树插件

    此外,该插件的代码专一且精简,仅关注树形结构的实现,因此文件体积小,加载速度快,更符合轻量级应用的需求。 使用jQuery.simple.tree插件的步骤如下: 1. 引入所需资源:包括CSS样式文件、jQuery核心库以及...

Global site tag (gtag.js) - Google Analytics