源码网商城,靠谱的源码在线交易网站 我的订单 购物车 帮助

源码网商城

jquery实现拖拽调整Div大小

  • 时间:2020-12-14 18:00 编辑: 来源: 阅读:
  • 扫一扫,手机访问
摘要:jquery实现拖拽调整Div大小
今天写了一天这个jquery插件: 可以实现对div进行拖拽来调整大小的功能。
[u]复制代码[/u] 代码如下:
(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();
 记录一下今天的劳动成果,可能会有很多不成熟的地方,欢迎大家来指正,谢谢! 以上就是本文的全部内容了,希望大家能够喜欢。
  • 全部评论(0)
联系客服
客服电话:
400-000-3129
微信版

扫一扫进微信版
返回顶部