easyui源码翻译1.32--Resizable(调整大小)
前言
使用$.fn.resizable.defaults重写默认值对象 下载该插件翻译源码
源码
/**
* jQuery EasyUI 1.3.2
*
*翻译:qq 1364386878 Resizable(调整大小)
*/
(function ($) {
var resizable = false;
//创建控件
$.fn.resizable = function (options, param) { if (typeof options == "string") {
return $.fn.resizable.methods[options](this, param);
}
//初始化函数
function resize(e) {
var resizeData = e.data;
var opts = $.data(resizeData.target, "resizable").options;
if (resizeData.dir.indexOf("e") != -1) {
var width = resizeData.startWidth + e.pageX - resizeData.startX;
width = Math.min(Math.max(width, opts.minWidth), opts.maxWidth);
resizeData.width = width;
}
if (resizeData.dir.indexOf("s") != -1) {
var height = resizeData.startHeight + e.pageY - resizeData.startY;
height = Math.min(Math.max(height, opts.minHeight), opts.maxHeight);
resizeData.height = height;
}
if (resizeData.dir.indexOf("w") != -1) {
resizeData.width = resizeData.startWidth - e.pageX + resizeData.startX;
if (resizeData.width >= opts.minWidth && resizeData.width <= opts.maxWidth) {
resizeData.left = resizeData.startLeft + e.pageX - resizeData.startX;
}
}
if (resizeData.dir.indexOf("n") != -1) {
resizeData.height = resizeData.startHeight - e.pageY + resizeData.startY;
if (resizeData.height >= opts.minHeight && resizeData.height <= opts.maxHeight) {
resizeData.top = resizeData.startTop + e.pageY - resizeData.startY;
}
}
};
//设置对象位置
function applySize(e) {
var resizeData = e.data;
var target = resizeData.target;
$(target).css({
left: resizeData.left,
top: resizeData.top
});
$(target)._outerWidth(resizeData.width)._outerHeight(resizeData.height);
}; function doDown(e) {
resizable = true;
$.data(e.data.target, "resizable").options.onStartResize.call(e.data.target, e);
return false;
};
function doMove(e) {
resize(e);
if ($.data(e.data.target, "resizable").options.onResize.call(e.data.target, e) != false) {
applySize(e);
}
return false;
}; function doUp(e) {
resizable = false;
resize(e, true);
applySize(e);
$.data(e.data.target, "resizable").options.onStopResize.call(e.data.target, e);
$(document).unbind(".resizable");
$("body").css("cursor", "");
return false;
};
return this.each(function () {
var opts = null;
var state = $.data(this, "resizable");
if (state) {
$(this).unbind(".resizable");
opts = $.extend(state.options, options || {});
} else {
opts = $.extend({}, $.fn.resizable.defaults, $.fn.resizable.parseOptions(this), options || {});
$.data(this, "resizable", { options: opts });
}
if (opts.disabled == true) {
return;
}
//绑定事件
$(this).bind("mousemove.resizable", { target: this }, function (e) {
if (resizable) {
return;
}
var dir = getDirection(e);
if (dir == "") {
$(e.data.target).css("cursor", "");
} else {
$(e.data.target).css("cursor", dir + "-resize");
}
}).bind("mouseleave.resizable", { target: this }, function (e) {
$(e.data.target).css("cursor", "");
}).bind("mousedown.resizable", { target: this }, function (e) {
var dir = getDirection(e);
if (dir == "") {
return;
}
//获取样式值
function getCssValue(css) {
var val = parseInt($(e.data.target).css(css));
if (isNaN(val)) {
return 0;
} else {
return val;
}
};
var _13 = { target: e.data.target, dir: dir, startLeft: getCssValue("left"), startTop: getCssValue("top"), left: getCssValue("left"), top: getCssValue("top"), startX: e.pageX, startY: e.pageY, startWidth: $(e.data.target).outerWidth(), startHeight: $(e.data.target).outerHeight(), width: $(e.data.target).outerWidth(), height: $(e.data.target).outerHeight(), deltaWidth: $(e.data.target).outerWidth() - $(e.data.target).width(), deltaHeight: $(e.data.target).outerHeight() - $(e.data.target).height() };
$(document).bind("mousedown.resizable", _13, doDown);
$(document).bind("mousemove.resizable", _13, doMove);
$(document).bind("mouseup.resizable", _13, doUp);
$("body").css("cursor", dir + "-resize");
}); function getDirection(e) {
var tt = $(e.data.target);
var dir = "";
var offset = tt.offset();
var width = tt.outerWidth();
var height = tt.outerHeight();
var edge = opts.edge;
if (e.pageY > offset.top && e.pageY < offset.top + edge) {
dir += "n";
} else {
if (e.pageY < offset.top + height && e.pageY > offset.top + height - edge) {
dir += "s";
}
}
if (e.pageX > offset.left && e.pageX < offset.left + edge) {
dir += "w";
} else {
if (e.pageX < offset.left + width && e.pageX > offset.left + width - edge) {
dir += "e";
}
}
var handles = opts.handles.split(",");
for (var i = 0; i < handles.length; i++) {
var handle = handles[i].replace(/(^\s*)|(\s*$)/g, "");
if (handle == "all" || handle == dir) {
return dir;
}
}
return "";
};
});
};
//默认方法
$.fn.resizable.methods = {
//返回调整大小属性
options: function (jq) {
return $.data(jq[0], "resizable").options;
},
//启用调整大小功能
enable: function (jq) {
return jq.each(function () {
$(this).resizable({ disabled: false });
});
},
//禁用调整大小功能
disable: function (jq) {
return jq.each(function () {
$(this).resizable({ disabled: true });
});
}
};
//解析器配置
$.fn.resizable.parseOptions = function (target) {
var t = $(target);
return $.extend({},
$.parser.parseOptions(target, ["handles", { minWidth: "number", minHeight: "number", maxWidth: "number", maxHeight: "number", edge: "number" }]),
{ disabled: (t.attr("disabled") ? true : undefined) });
};
//默认属性+事件
$.fn.resizable.defaults = {
disabled: false,//如果为true,则禁用大小调整
handles: "n, e, s, w, ne, se, sw, nw, all",//声明调整方位,'n'=北,'e'=东,'s'=南等
minWidth: 10,//当调整大小时候的最小宽度
minHeight: 10,//当调整大小时候的最小高度
maxWidth: 10000,//当调整大小时候的最大宽度
maxHeight: 10000,//当调整大小时候的最大高度
edge: 5,//边框边缘大小
//在开始改变大小的时候触发
onStartResize: function (e) {
},
//在调整大小期间触发。当返回false的时候,不会实际改变DOM元素大小
onResize: function (e) {
},
//在停止改变大小的时候触发
onStopResize: function (e) {
}
};
})(jQuery);
示例代码
<!DOCTYPE html>
<html>
<head>
<title>Basic Resizable - jQuery EasyUI Demo</title>
<link rel="stylesheet" type="text/css" href="../../themes/default/easyui.css">
<link rel="stylesheet" type="text/css" href="../../themes/icon.css">
<link rel="stylesheet" type="text/css" href="../demo.css">
<script type="text/javascript" src="../../jquery-1.8.0.min.js"></script>
<script src="../../plugins2/jquery.parser.js"></script>
<script src="../../plugins/jquery.draggable.js"></script>
<script src="../../plugins2/jquery.resizable.js"></script>
</head>
<body>
<h2>Basic Resizable</h2>
<div class="demo-info">
<div class="demo-tip icon-tip"></div>
<div>Click on the edge of box and move the edge to resize the box.</div>
</div>
<div style="margin:10px 0;"></div>
<div class="easyui-resizable" data-options="minWidth:50,minHeight:50" style="width:500px;height:150px;border:1px solid #ccc;">
<div style="padding:20px">Resize Me(拉伸)</div>
</div>
<div id="dd" class="easyui-draggable easyui-resizable" data-options="handle:'#mytitle'" style="width:250px;height:150px;border:1px solid #ccc">
<div id="mytitle" style="background:#ddd;padding:5px;">Title</div>
<div style="padding:20px">Drag and Resize Me(可拖动可拉伸)</div>
</div>
</body>
</html>
插件效果

easyui源码翻译1.32--Resizable(调整大小)的更多相关文章
- easyui源码翻译1.32+API翻译全篇导航 (提供下载源码)
前言 EasyUI每个组件都会有 属性.方法.事件 属性 所有的属性都定义在jQuery.fn.{plugin}.defaults里面.例如,对话框属性定义在jQuery.fn.dialog.defa ...
- easyui源码翻译1.32--datagrid(数据表格)
前言 此前网上有easyui1.25的源码 应该算是比较老的版本 之后又经历了1.26 . 1.3. 1.31. 1.32 .1.33.1.34 1.33开始支持css3 算是又一个转折 但是 ...
- easyui源码翻译1.32--panel(面板)
前言 昨天发布了表格datagrid的翻译源码 ,easyui的许多插件有依赖关系 比如datagrid 的渲染需要panel.resizable.linkbutton.pagination 今 ...
- easyui源码翻译1.32--Layout(布局)
前言 使用$.fn.layout.defaults重写默认值对象.下载该插件翻译源码 布局容器有5个区域:北.南.东.西和中间.中间区域面板是必须的,边缘的面板都是可选的.每个边缘区域面板都可以通过拖 ...
- easyui源码翻译1.32--Window(窗口)
前言 扩展自$.fn.panel.defaults.使用$.fn.window.defaults重写默认值对象.下载该插件翻译源码 窗口控件是一个浮动和可拖拽的面板可以用作应用程序窗口.默认情况下,窗 ...
- easyui源码翻译1.32--EasyLoader(简单加载)
前言 扩展自$.fn.datebox.defaults,使用$.fn.datetimebox.defaults重写默认值对象.下载该插件翻译源码 源码 /** * jQuery EasyUI 1.3. ...
- easyui源码翻译1.32---ProgressBar(进度条)
前言 使用$.fn.progressbar.defaults重写默认值对象.下载该插件翻译源码 进度条提供了一个反馈显示一个长时间运行的操作进展.可以更新的进展条,让用户知道当前正在执行操作. 源码 ...
- easyui源码翻译1.32--accordion(手风琴)
前言 前几天加班比较忙 未能及时更新翻译的 今天多发布几篇..下载该插件翻译源码 Accordion 分类空间允许用户使用多面板,但在同一时间只会显示一个.每个面板都内建支持展开和折叠功能.点击一个面 ...
- easyui源码翻译1.32--ComboGrid(数据表格下拉框)
前言 扩展自$.fn.combo.defaults和$.fn.datagrid.defaults.使用$.fn.combogrid.defaults重写默认值对象.下载该插件翻译源码 数据表格下拉框结 ...
随机推荐
- gd库复制图片做水印
将复制源图片的某个位置复制到目标图片中,不能调整大小 imagecopy(目标图片画布,复制源画布,目标画布左上角x,y,源画布左上角x,y,复制图片的宽,高); 允许调整大小 imagecopyre ...
- Hadoop源代码分析
http://wenku.baidu.com/link?url=R-QoZXhc918qoO0BX6eXI9_uPU75whF62vFFUBIR-7c5XAYUVxDRX5Rs6QZR9hrBnUdM ...
- 转--T-SQL 总结
把长日期转换为短日期 Convert(char(10),getdate(),120) MS-SQL数据库开发常用汇总 1.按姓氏笔画排序:Select * From TableName Orde ...
- 【JAVA】final修饰Field
一.简介 final修饰符可以用来修饰变量.方法.类.final修饰变量时一旦被赋值就不可以改变. 二.final成员变量 成员变量是随类初始化或对象初始化而初始化的.当类初始化的时候,会给类变量分配 ...
- 【转】图解SQL的各种连接join
原帖地址:http://www.nowamagic.net/librarys/veda/detail/936 图解SQL的各种连接join 让你对SQL的连接一目了然 在 2011年12月22日 那天 ...
- FancyBox——jQuery弹出窗口插件
最近工作项目中有用到这款插件,就查找了一下相关资料和用法,下面是一些基本的简单用法,比较容易掌握,有需要的小伙伴可以参考.:) FancyBox是一款基于jquery开发的类Lightbox插件.支持 ...
- 再也不要看到Eclipse万恶的arg0,arg1提示
不知道大家跟我是否一下,遇到arg的提示. @Override public void onDateChanged(DatePicker arg0, int arg1, int arg2, int a ...
- 把十进制整数转换为r(r=2)进制输出(顺序栈实现)
上周的第二个作业补上~~ 上周的要求: 1.给出顺序栈的存储结构定义. 2.完成顺序栈的基本操作函数. 1) 初始化顺序栈 2) 实现入栈和出栈操作 3) 实现取栈顶元素 ...
- redis 入门笔记(一)
redis是一个开源,先进的key-value存储,并用于构建高性能,可扩展的web应用程序的完美解决方案 三个主要特点: 1,Redis数据库完全在内存中,使用磁盘仅用于持久性 ...
- 安装Debian 7.8 过程,以及该系统的配置过程
最近,我给自己的电脑安装了Debian操作系统,版本7.8 stable.Debian我相信大家都能了解,它是Ubuntu的基础,Ubuntu是基于Debian的unstable开发的.我安装这个系统 ...