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 相关文章推荐
JavaScript mapreduce工作原理简析
Nov 25 Javascript
JQuery中使用on方法绑定hover事件实例
Dec 09 Javascript
NODE.JS跨域问题的完美解决方案
Oct 20 Javascript
Jquery实时监听input value的实例
Jan 26 Javascript
Vue.js手风琴菜单组件开发实例
May 16 Javascript
ES6 系列之 Generator 的自动执行的方法示例
Oct 19 Javascript
微信小程序冒泡事件及其阻止方法实例分析
Dec 06 Javascript
详解vuex之store源码简单解析
Jun 13 Javascript
微信小程序中button去除默认的边框实例代码
Aug 01 Javascript
js获取浏览器地址(获取第1个斜杠后的内容)
Sep 03 Javascript
vue element-ui el-date-picker限制选择时间为当天之前的代码
Nov 07 Javascript
Vue Router中应用中间件的方法
Aug 06 Javascript
简单实例处理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
php mysql索引问题
2008/06/07 PHP
php中flush()、ob_flush()、ob_end_flush()的区别介绍
2013/02/17 PHP
PHP array_multisort() 函数的深入解析
2013/06/20 PHP
PHP使用OB缓存实现静态化功能示例
2019/03/23 PHP
PhpStorm2020.1 安装 debug - Postman 调用的详细教程
2020/08/17 PHP
不间断滚动JS打包类,基本可以实现所有的滚动效果,太强了
2007/12/08 Javascript
Extjs中DisplayField的日期或者数字格式化扩展
2010/09/03 Javascript
jQuery autocomplate 自扩展插件、自动完成示例代码
2011/03/28 Javascript
基于Jquery+Ajax+Json的高效分页实现代码
2011/10/29 Javascript
关于JS控制代码暂停的实现方法分享
2012/10/11 Javascript
js弹出框轻量级插件jquery.boxy使用介绍
2013/01/15 Javascript
js 字符串转换成数字的三种方法
2013/03/23 Javascript
jquery.ajax之beforeSend方法使用介绍
2014/12/08 Javascript
Nodejs为什么选择javascript为载体语言
2015/01/13 NodeJs
Jquery ajax加载等待执行结束再继续执行下面代码操作
2015/11/24 Javascript
JS获取随机数和时间转换的简单实例
2016/07/10 Javascript
js获取Get值的方法
2016/09/29 Javascript
JS中去掉array中重复元素的方法
2017/05/26 Javascript
jackson解析json字符串,首字母大写会自动转为小写的方法
2017/12/22 Javascript
angular中两种表单的区别(响应式和模板驱动表单)
2018/12/06 Javascript
基于leaflet.js实现修改地图主题样式的流程分析
2020/05/15 Javascript
[02:14]2016国际邀请赛中国区预选赛Ehome晋级之路
2016/07/01 DOTA
web.py获取上传文件名的正确方法
2014/08/26 Python
Python Sleep休眠函数使用简单实例
2015/02/02 Python
python操作ie登陆土豆网的方法
2015/05/09 Python
Python3使用SMTP发送带附件邮件
2020/06/16 Python
Python List cmp()知识点总结
2019/02/18 Python
Django  ORM 练习题及答案
2019/07/19 Python
Numpy与Pytorch 矩阵操作方式
2019/12/27 Python
css3实现一个div设置多张背景图片及background-image属性实例演示
2017/08/10 HTML / CSS
购买200个世界上最好的内衣品牌:Bare Necessities
2017/02/11 全球购物
意大利奢侈品零售商:ilDuomo Novara
2019/09/11 全球购物
博士毕业生自我鉴定范文
2014/04/13 职场文书
小学见习报告
2015/06/23 职场文书
2016秋季幼儿园开学寄语
2015/12/03 职场文书
详解Spring Boot使用系统参数表提升系统的灵活性
2021/06/30 Java/Android