jquery实现拖拽调整Div大小
2015-01-30 00:00
831 查看
今天写了一天这个jquery插件:
可以实现对div进行拖拽来调整大小的功能。
记录一下今天的劳动成果,可能会有很多不成熟的地方,欢迎大家来指正,谢谢!
以上就是本文的全部内容了,希望大家能够喜欢。
可以实现对div进行拖拽来调整大小的功能。
(function ($) { $.fn.dragDivResize = function () { var deltaX, deltaY, _startX, _startY; var resizeW, resizeH; var size = 20; var minSize = 10; var scroll = getScrollOffsets(); var _this = this; for (var i = 0; i < _this.length; i++) { var target = this[i]; $(target).on("mouseover mousemove", overHandler); } function outHandler() { for (var i = 0; i < _this.length; i++) { target.style.outline = "none"; } document.body.style.cursor = "default"; } function overHandler(event) { target = event.target || event.srcElement; var startX = event.clientX + scroll.x; var startY = event.clientY + scroll.y; var w = $(target).width(); var h = $(target).height(); _startX = parseInt(startX); _startY = parseInt(startY); if ((0 < target.offsetLeft + w - _startX && target.offsetLeft + w - _startX < size) || (0 < target.offsetTop + h - _startY && target.offsetTop + h - _startY < size)) { target.style.outline = "2px dashed #333"; if ((0 > target.offsetLeft + w - _startX || target.offsetLeft + w - _startX > size) && 0 < target.offsetTop + h - _startY && target.offsetTop + h - _startY < size) { resizeW = false; resizeH = true; document.body.style.cursor = "s-resize"; } if (0 < target.offsetLeft + w - _startX && target.offsetLeft + w - _startX < size && (0 > target.offsetTop + h - _startY || target.offsetTop + h - _startY > size)) { resizeW = true; resizeH = false; document.body.style.cursor = "w-resize"; } if (0 < target.offsetLeft + w - _startX && target.offsetLeft + w - _startX < size && 0 < target.offsetTop + h - _startY && target.offsetTop + h - _startY < size) { resizeW = true; resizeH = true; document.body.style.cursor = "se-resize"; } $(target).on('mousedown', downHandler); } else { resizeW = false; resizeH = false; $(target).off('mousedown', downHandler); } } function downHandler(event) { target = event.target || event.srcElement; var startX = event.clientX + scroll.x; var startY = event.clientY + scroll.y; _startX = parseInt(startX); _startY = parseInt(startY); if (document.addEventListener) { document.addEventListener("mousemove", moveHandler, true); document.addEventListener("mouseup", upHandler, true); } else if (document.attachEvent) { target.setCapture(); target.attachEvent("onlosecapeture", upHandler); target.attachEvent("onmouseup", upHandler); target.attachEvent("onmousemove", moveHandler); } if (event.stopPropagation) { event.stopPropagation(); } else { event.cancelBubble = true; } if (event.preventDefault) { event.preventDefault(); } else { event.returnValue = false; } } function moveHandler(e) { if (!e) e = window.event; var w, h; var startX = parseInt(e.clientX + scroll.x); var startY = parseInt(e.clientY + scroll.y); target = target || e.target || e.srcElement; if (target == document.body) { return; } if (resizeW) { deltaX = startX - _startX; w = $(target).width() + deltaX < minSize ? minSize : $(target).width() + deltaX; target.style.width = w + "px"; _startX = startX; } if (resizeH) { deltaY = startY - _startY; h = $(target).height() + deltaY < minSize ? minSize : $(target).height() + deltaY; target.style.height = h + "px"; _startY = startY; } if (e.stopPropagation) { e.stopPropagation(); } else { e.cancelBubble = true; } } function upHandler(e) { if (!e) { e = window.event; } resizeW = false; resizeH = false; target = e.target || e.srcElement; $(target).on("mouseout", outHandler); if (document.removeEventListener) { document.removeEventListener("mousemove", moveHandler, true); document.removeEventListener("mouseup", upHandler, true); } else if (document.detachEvent) { target.detachEvent("onlosecapeture", upHandler); target.detachEvent("onmouseup", upHandler); target.detachEvent("onmousemove", moveHandler); target.releaseCapture(); } if (e.stopPropagation) { e.stopPropagation(); } else { e.cancelBubble = true; } } function getScrollOffsets(w) { w = w || window; if (w.pageXOffset != null) { return { x: w.pageXOffset, y: w.pageYOffset }; } var d = w.document; if (document.compatMode == "CSS1Compat") { return { x: d.documentElement.scrollLeft, y: d.documentElement.scrollTop }; } return { x: d.body.scrollLeft, y: d.body.scrollTop }; } } }(jQuery)); jQuery("div").dragDivResize();
记录一下今天的劳动成果,可能会有很多不成熟的地方,欢迎大家来指正,谢谢!
以上就是本文的全部内容了,希望大家能够喜欢。
相关文章推荐
- jquery实现拖拽调整Div大小
- jquery实现div内图片水平左右滚动,滚动到最后一张停止、可根据需求调整图片数量及大小
- Javascript实现Div可拖拽 (jquery)
- jQuery实现鼠标拖拽div
- jQuery使用drag效果实现自由拖拽div
- jQuery实现div拖拽效果实例分析
- Jquery 实现div拖拽
- JQuery拖拽元素改变大小尺寸实现代码
- Jquery实现div拖拽
- jQuery实现自动调整字体大小的方法
- jQuery实现div横向拖拽排序
- jQuery实现div拖拽效果实例分析
- jQuery拖拽div实现
- javascript实现div的拖动并调整大小
- jquery 实现DIV拖拽
- jquery实现div拖拽宽度
- jquery入门 动态调整div大小,使其宽度始终为浏览器宽度
- jquery入门 动态调整div大小,使其宽度始终为浏览器宽度
- 基于jquery实现图片相关操作(重绘、获取尺寸、调整大小、缩放)
- jQuery实现自动调整字体大小的方法