jquery实现拖拽调整Div大小_Javascript教程-查字典教程网
jquery实现拖拽调整Div大小
jquery实现拖拽调整Div大小
发布时间:2016-12-30 来源:查字典编辑
摘要:今天写了一天这个jquery插件:可以实现对div进行拖拽来调整大小的功能。复制代码代码如下:(function($){$.fn.dragD...

今天写了一天这个jquery插件:

可以实现对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();

记录一下今天的劳动成果,可能会有很多不成熟的地方,欢迎大家来指正,谢谢!

以上就是本文的全部内容了,希望大家能够喜欢。

相关阅读
推荐文章
猜你喜欢
附近的人在看
推荐阅读
拓展阅读
  • 大家都在看
  • 小编推荐
  • 猜你喜欢
  • 最新Javascript教程学习
    热门Javascript教程学习
    编程开发子分类