jQuery布局插件UI Layout简介及使用方法


Posted in Javascript onApril 03, 2013

UI Layout是一种基于jQuery的布局框架,项目主页http://layout.jquery-dev.net/。该框架的参考原型是ExtJS的border-layout,因此十分适用于将原有使用ExtJS的项目改造成jQuery项目。其核心是一个大小自适应的中心面板(必选),面板的上下左右四个方向可以放置可折叠、可缩放的面板(可选),各个面板可以添加任意数量的页眉和页脚面板。UI Layout支持内层布局的嵌套,任意块元素都可以当作布局的容器,最基本的布局容器是body。

基本使用方法:获取容器元素并调用layout方法,传入配置参数(可选)options即可:
$('body').layout( [options] );通常保留布局的引用,以便于进一步通过代码控制布局的形态。

var myLayout = $('body').layout(); 
// 读取布局配置选项 
var is_west_resizable = myLayout.options.west.resizable; 
var north_maxHeight = myLayout.options.north.maxSize; 
// 调用布局函数 
myLayout.toggle("north"); 
myLayout.sizePane("west", 300); 
// 调用布局工具 
myLayout.addPinBtn("#myPinButton", "west"); 
myLayout.allowOverflow("north");

所有面板基于现有的HTML元素,而面板的附属组件(缩放器和折叠开关)是自动生成的div元素,并且加上了对应的class属性。几乎所有的面板元素都必须是容器元素的直接子元素,form容器是一个例外。我们可以为相应的HTML元素赋予默认的类名,或者自定义的类名、id,来指定布局面板。下面举个直观的例子:
$(document).ready(function() { 
$("body").layout({ 
/* 
east & west panes require 'ID' selectors 
because they are 'nested inside a div' 
*/ 
west__paneSelector: "#west" 
, east__paneSelector: "#east" 
/* 
north & south panes are 'children of body' 
*/ 
, north__paneSelector: ".ui-layout-north"//默认配置,可省略 
, south__paneSelector: ".myclass-south" 
/* 
center pane is a 'child of the first form' 
default-selector shown just for reference 
*/ 
, center__paneSelector: ".ui-layout-center"//默认配置,可省略 
}); 
});

对应的页面:
<body> 
<!-- 'north' & 'south' are children of body --> 
<div class="ui-layout-north">north</div> 
<div class="myclass-south">south</div> 
<!-- 'center' is nested inside a form --> 
<form> 
<div class="ui-layout-center">center</div> 
</form> 
<!-- 'east' & 'west' are nested inside a div --> 
<div> 
<div id="west">west</div> 
<div id="east">east</div> 
</div> 
</body>

在本例中,布局容器是body,南、北面板是容器的直接子元素,南面板使用自定义类名“myclass-south”,需要在布局参数south__paneSelector中指定jQuery选择器;北面板使用默认类名“ui-layout-north”。东、西面板不是容器的直接子元素,需要指定id才能识别(不可以用类选择器),并且在布局参数“west__paneSelector”中指明对应的id。中心面板嵌套在form中,此时面板可以使用默认类名或自定义类名来识别。当一个面板满足下列两个条件时才可以使用自定义类选择器,否则只能用id选择器来识别:1、面板是form的直接子元素2、该form是容器的直接子元素,并且是容器中的第一个form。

面板之间的空隙构成了面板的边,边的概念是相对于上下左右方向的面板而言的,由于可以设置拖动面板的边实现对应面板的缩放,所以称这些边为“缩放器”;缩放器上面通常附加一个折叠开关负责面板的折叠与打开。当两个面板之间没有空隙时,缩放器和折叠开关随之消失。面板打开和折叠状态下,缩放器的宽度可以分别指定为不同的值。上例的效果图如下:
jQuery布局插件UI Layout简介及使用方法

Javascript 相关文章推荐
Firefox下提示illegal character并出现乱码的原因
Mar 25 Javascript
编写高性能的JavaScript 脚本的加载与执行
Apr 19 Javascript
jquery autocomplete自动完成插件的的使用方法
Aug 07 Javascript
IE6、IE7中setAttribute不支持class/for/rowspan/colspan等属性
Aug 28 Javascript
两种方法实现在HTML页面加载完毕后运行某个js
Jun 16 Javascript
浅谈JavaScript function函数种类
Dec 29 Javascript
Vue-Cli中自定义过滤器的实现代码
Aug 12 Javascript
详解如何在Vue项目中发送jsonp请求
Oct 25 Javascript
浅谈Vue.js之初始化el以及数据的绑定说明
Nov 14 Javascript
微信小程序订阅消息(java后端实现)开发
Jun 01 Javascript
vue实现移动端项目多行文本溢出省略
Jul 29 Javascript
Vue 实例中使用$refs的注意事项
Jan 29 Vue.js
简单实例处理url特殊符号&amp;处理(2种方法)
Apr 02 #Javascript
JS获取浏览器版本及名称实现函数
Apr 02 #Javascript
js 火狐下取本地路径实现思路
Apr 02 #Javascript
input 输入框获得/失去焦点时隐藏/显示文字(jquery版)
Apr 02 #Javascript
JQuery给元素添加/删除节点比如select
Apr 02 #Javascript
Extjs4 消息框去掉关闭按钮(类似Ext.Msg.alert)
Apr 02 #Javascript
extjs关于treePanel+chekBox全部选中以及清空选中问题探讨
Apr 02 #Javascript
You might like
discuz免激活同步登入代码修改方法(discuz同步登录)
2013/12/24 PHP
PHP中ini_set和ini_get函数的用法小结
2014/02/18 PHP
thinkphp在模型中自动完成session赋值示例代码
2014/09/09 PHP
深入浅析php json 格式控制
2015/12/24 PHP
Javascript 多浏览器兼容总结(实战经验)
2013/10/30 Javascript
js/jquery获取文本框输入焦点的方法
2014/03/04 Javascript
实例说明为什么不要行内使用javascript
2014/04/18 Javascript
JavaScript中setUTCFullYear()方法的使用简介
2015/06/12 Javascript
Bootstrap中CSS的使用方法
2016/02/17 Javascript
ClearTimeout消除闪动实例代码
2016/02/29 Javascript
Knockoutjs 学习系列(二)花式捆绑
2016/06/07 Javascript
基于NodeJS+MongoDB+AngularJS+Bootstrap开发书店案例分析
2017/01/12 NodeJs
详谈Angular路由与Nodejs路由的区别
2017/03/05 NodeJs
angularjs2中父子组件的数据传递的实例代码
2017/07/05 Javascript
javascript  数组排序与对象排序的实例
2017/07/17 Javascript
Scala解析Json字符串的实例详解
2017/10/11 Javascript
利用nvm管理多个版本的node.js与npm详解
2017/11/02 Javascript
基于vue中css预加载使用sass的配置方式详解
2018/03/13 Javascript
详解基于DllPlugin和DllReferencePlugin的webpack构建优化
2018/06/28 Javascript
2种在vue项目中使用百度地图的简单方法
2018/09/28 Javascript
JavaScript实现多张图片放大镜效果示例【不限定图片尺寸,rem单位】
2019/05/14 Javascript
Layui数据表格跳转到指定页的实现方法
2019/09/05 Javascript
javascript设计模式 ? 访问者模式原理与用法实例分析
2020/04/26 Javascript
Node.js API详解之 net模块实例分析
2020/05/18 Javascript
原生JS利用transform实现banner的无限滚动示例代码
2020/06/15 Javascript
[01:05:56]Liquid vs VP Supermajor决赛 BO 第二场 6.10
2018/07/04 DOTA
Python基于csv模块实现读取与写入csv数据的方法
2018/01/18 Python
django之对FileField字段的upload_to的设定方法
2019/07/28 Python
Python如何通过Flask-Mail发送电子邮件
2020/01/29 Python
如何理解Python中包的引入
2020/05/29 Python
关于探究python中sys.argv时遇到的问题详解
2021/02/23 Python
岗位职责风险防控
2014/02/18 职场文书
材料采购员岗位职责
2015/04/03 职场文书
证婚人婚礼致辞
2015/07/28 职场文书
员工旷工检讨书
2015/08/15 职场文书
Nginx速查手册及常见问题
2022/04/07 Servers