• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号
您的位置:首页 > 程序设计 >jquery > jQuery拖拽通过八个点改变div大小

jQuery拖拽通过八个点改变div大小

作者:王翼鹏 字体:[增加 减小] 来源:互联网

王翼鹏 通过本文主要向大家介绍了JQuery拖拽改变div大小,JQuery八个点改变div大小,div改变大小等相关知识,希望对您有所帮助,也希望大家支持linkedu.com www.linkedu.com

jQuery拖拽通过八个点改变div大小

js:

(function($) { 
 
 /** 
  * 默认参数 
  */ 
 var defaultOpts = { 
  stage: document, //舞台 
  item: 'resize-item', //可缩放的类名 
 }; 
 
 /** 
  * 定义类 
  */ 
 var ZResize = function(options) { 
  this.options = $.extend({}, defaultOpts, options); 
  this.init(); 
 } 
 
 ZResize.prototype = { 
  init: function() { 
   this.initResizeBox(); 
  }, 
  /** 
   * 初始化拖拽item 
   */ 
  initResizeBox: function() { 
   var self = this; 
   $(self.options.item).each(function () { 
    //创建面板 
    var width = $(this).width(); 
    var height = $(this).height(); 
    var resizePanel = $('<div class"resize-panel"></div>'); 
    resizePanel.css({ 
     width: width, 
     height: height, 
     top: 0, 
     left: 0, 
     position: 'absolute', 
     'background-color': 'rgba(0,0,0,0.5)', 
     cursor: 'move', 
     display: 'none' 
    }); 
    self.appendHandler(resizePanel, $(this)); 
    /** 
     * 创建控制点 
     */ 
    var n = $('<div class="n"></div>');//北 
    var s = $('<div class="s"></div>');//南 
    var w = $('<div class="w"></div>');//西 
    var e = $('<div class="e"></div>');//东 
    var ne = $('<div class="ne"></div>');//东北 
    var nw = $('<div class="nw"></div>');//西北 
    var se = $('<div class="se"></div>');//东南 
    var sw = $('<div class="sw"></div>');//西南 
 
    //添加公共样式 
    self.addHandlerCss([n, s, w, e, ne, nw, se, sw]); 
    //添加各自样式 
    n.css({ 
     'top': '-4px', 
     'margin-left': '-4px', 
     'left': '50%', 
     'cursor': 'n-resize' 
    }); 
    s.css({ 
     'bottom': '-4px', 
     'margin-left': '-4px', 
     'left': '50%', 
     'cursor': 's-resize' 
    }); 
    e.css({ 
     'top': '50%', 
     'margin-top': '-4px', 
     'right': '-4px', 
     'cursor': 'e-resize' 
    }); 
    w.css({ 
     'top': '50%', 
     'margin-top': '-4px', 
     'left': '-4px', 
     'cursor': 'w-resize' 
    }); 
    ne.css({ 
     'top': '-4px', 
     'right': '-4px', 
     'cursor': 'ne-resize' 
    }); 
    nw.css({ 
     top: '-4px', 
     'left': '-4px', 
     'cursor': 'nw-resize' 
    }); 
    se.css({ 
     'bottom': '-4px', 
     'right': '-4px', 
     'cursor': 'se-resize' 
    }); 
    sw.css({ 
     'bottom': '-4px', 
     'left': '-4px', 
     'cursor': 'sw-resize' 
    }); 
 
    // 添加项目 
    self.appendHandler([n, s, w, e, ne, nw, se, sw], resizePanel); 
     
    //绑定拖拽缩放事件 
    self.bindResizeEvent(resizePanel, $(this)); 
 
    //绑定触发事件 
    self.bindTrigger($(this)); 
   }); 
   self.bindHidePanel(); 
  }, 
  //控制点公共样式 
  addHandlerCss: function(els) { 
   for(var i = 0; i < els.length; i++) { 
    el = els[i]; 
    el.css({ 
     position: 'absolute', 
     width: '8px', 
     height: '8px', 
     background: '#ff6600', 
     margin: '0', 
     'border-radius': '2px', 
     border: '1px solid #dd5500', 
    }); 
   } 
  }, 
  /** 
   * 插入容器 
   */ 
  appendHandler: function(handlers, target) { 
   for(var i = 0; i < handlers.length; i++) { 
    el = handlers[i]; 
    target.append(el); 
   } 
  }, 
  /** 
   * 显示拖拽面板 
   */ 
  triggerResize: function(el) { 
   var self = this; 
   el.siblings(self.options.item).children('div').css({ 
    display: 'none' 
   }); 
   el.children('div').css({ 
    display: 'block' 
   }); 
  }, 
  /** 
   * 拖拽事件控制 包含8个缩放点 和一个拖拽位置 
   */ 
  bindResizeEvent: function(el) { 
 
   var self = this; 
   var ox = 0; //原始事件x位置 
   var oy = 0; //原始事件y位置 
   var ow = 0; //原始宽度 
   var oh = 0; //原始高度 
 
   var oleft = 0; //原始元素位置 
   var otop = 0; 
   var org = el.parent('div'); 
 
   //东 
   var emove = false; 
   el.on('mousedown','.e', function(e) { 
    ox = e.pageX;//原始x位置 
    ow = el.width(); 
    emove = true; 
   }); 
 
   //南 
   var smove = false; 
   el.on('mousedown','.s', function(e) { 
    oy = e.pageY;//原始x位置 
    oh = el.height(); 
    smove = true; 
   }); 
 
   //西 
   var wmove = false; 
   el.on('mousedown','.w', function(e) { 
    ox = e.pageX;//原始x位置 
    ow = el.width(); 
    wmove = true; 
    oleft = parseInt(org.css('left').replace('px', '')); 
   }); 
 
   //北 
   var nmove = false; 
   el.on('mousedown','.n', function(e) { 
    oy = e.pageY;//原始x位置 
    oh = el.height(); 
    nmove = true; 
    otop = parseInt(org.css('top').replace('px', '')); 
   }); 
 
   //东北 
   var nemove = false; 
   el.on('mousedown','.ne', function(e) { 
    ox = e.pageX;//原始x位置 
    oy = e.pageY; 
    ow = el.width(); 
    oh = el.height(); 
    nemove = true; 
    otop = parseInt(org.css('top').replace('px', '')); 
   }); 
 
   //西北 
   var nwmove = false; 
   el.on('mousedown','.nw', function(e) { 
    ox = e.pageX;//原始x位置 
    oy = e.pageY; 
    ow = el.width(); 
    oh = el.height(); 
    otop = parseInt(org.css('top').replace('px', '')); 
    oleft = parseInt(org.css('left').replace('px', '')); 
    nwmove = true; 
   }); 
 
   //东南 
   var semove = false; 
   el.on('mousedown','.se', function(e) { 
    ox = e.pageX;//原始x位置 
    oy = e.pageY; 
    ow = el.width(); 
    oh = el.height(); 
    semove = true; 
   }); 
 
   //西南 
   var swmove = false; 
   el.on('mousedown','.sw', function(e) { 
    ox = e.pageX;//原始x位置 
    oy = e.pageY; 
    ow = el.width(); 
    oh = el.height(); 
    swmove = true; 
    oleft = parseInt(org.css('left').replace('px', '')); 
   }); 
 
   //拖拽 
   var drag = false; 
   el.on('mousedown', function(e) { 
    ox = e.pageX;//原始x位置 
    oy = e.pageY; 
    otop = parseInt(org.css('top').replace('px', '')); 
    oleft = parseInt(org.css('left').replace('px', '')); 
    drag = true; 
   }); 
 
   $(self.options.stage).on('mousemove', function(e) { 
    if(emove) { 
     var x = (e.pageX - ox); 
     el.css({ 
      width: ow + x 
     }); 
     org.css({ 
      width: ow + x 
     }); 
    } else if(smove) { 
     var y = (e.pageY - oy); 
     el.css({ 
      height: oh + y 
     }); 
     org.css({ 
      height: oh + y 
     }); 
    } else if(wmove) { 
     var x = (e.pageX - ox); 
     el.css({ 
      width: ow - x, 
      // left: oleft + x 
     }); 
     org.css({ 
      width: ow - x, 
      left: oleft + x 
     }); 
    } else if(nmove) { 
     var y = (e.pageY - oy); 
     el.css({ 
      height: oh - y, 
      // top: otop + y 
     }); 
     org.css({ 
      height: oh - y, 
      top: otop + y 
     }); 
    } else if(nemove) { 
     var x = e.pageX - ox; 
     var y = e.pageY - oy; 
     el.css({ 
      height: oh - y, 
      // top: otop + y, 
      width: ow + x 
     }); 
     org.css({ 
      height: oh - y, 
      top: otop + y, 
      width: ow + x 
     }); 
    } else if(nwmove) { 
     var x = e.pageX - ox; 
     var y = e.pageY - oy; 
     el.css({ 
      height: oh - y, 
      // top: otop + y, 
      width: ow - x, 
      // left: oleft + x 
     }); 
     org.css({ 
      height: oh - y, 
      top: otop + y, 
      width: ow - x, 
      left: oleft + x 
     }); 
    } else if(semove) { 
     var x = e.pageX - ox; 
     var y = e.pageY - oy; 
     el.css({ 
      width: ow + x, 
      height: oh + y 
     }); 
     org.css({ 
      width: ow + x, 
      height: oh + y 
     }); 
    } else if(swmove) { 
     var x = e.pageX - ox; 
     var y = e.pageY - oy; 
     el.css({ 
      width: ow - x, 
      // left: oleft + x, 
      height: oh + y 
     }); 
     org.css({ 
      width: ow - x, 
      left: oleft + x, 
      height: oh + y 
     }); 




 
分享到:QQ空间新浪微博腾讯微博微信百度贴吧QQ好友复制网址打印

您可能想查找下面的文章:

  • jQuery拖拽通过八个点改变div大小

相关文章

  • 基于jQuery的Spin Button自定义文本框数值自增或自减
  • jQuery 出现Cannot read property ‘msie’ of undefined错误的解决方法
  • ie下jquery.getJSON的缓存问题的处理方法
  • jQuery结合HTML5制作的爱心树表白动画
  • jQuery timers计时器简单应用说明
  • jquery实现网页的页面平滑滚动效果代码
  • jQuery动态产生select option下拉列表
  • jquery的live使用注意事项
  • jQuery实现鼠标滚轮动态改变样式或效果
  • jQuery使用before()和after()在元素前后添加内容的方法

文章分类

  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号

最近更新的内容

    • jquery text(),val(),html()方法区别总结
    • jQuery中的常用事件总结
    • 基于jQuery的ajax功能实现web service的json转化
    • 使用IE6看老赵的博客 jQuery初探
    • jQuery继承extend用法详解
    • jQuery中bind(),live(),delegate(),on()绑定事件方法实例详解
    • jQuery 调用WebService 实例讲解
    • jQuery简单实现中间浮窗效果
    • div模拟选择框示例代码
    • jQuery插件Tmpl的简单使用方法

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有