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 相关文章推荐
告诉大家什么是JSON
Jun 10 Javascript
javascript笔试题目附答案@20081025_jb51.net
Oct 26 Javascript
修改jQuery.Autocomplete插件 支持中文输入法 避免TAB、ENTER键失效、导致表单提交
Oct 11 Javascript
菜鸟javascript基础资料整理2
Dec 06 Javascript
基于JavaScript实现鼠标箭头移动图片跟着移动
Aug 30 Javascript
javascript 产生随机数的几种方法总结
Sep 26 Javascript
vue2 设置router-view默认路径的实例
Sep 20 Javascript
vue 项目build错误异常的解决方法
Apr 22 Javascript
jsonp实现百度下拉框功能的方法分析
May 10 Javascript
vue自定义组件(通过Vue.use()来使用)即install的用法说明
Aug 11 Javascript
Openlayers实现点闪烁扩散效果
Sep 24 Javascript
如何使用 JavaScript 操作浏览器历史记录 API
Nov 24 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 json_encode奇怪问题说明
2011/09/27 PHP
php通过数组实现多条件查询实现方法(字符串分割)
2014/05/06 PHP
php+Mysqli利用事务处理转账问题实例
2015/02/11 PHP
PHP中通过trigger_error触发PHP错误示例
2015/06/23 PHP
java模拟PHP的pack和unpack类
2016/04/13 PHP
JS在textarea光标处插入文本的小例子
2013/03/22 Javascript
提示$ is not defined错误分析及解决
2013/04/09 Javascript
解析页面加载与js函数的执行 onload or ready
2013/12/12 Javascript
JavaScript检测鼠标移动方向的方法
2015/05/22 Javascript
js根据手机客户端浏览器类型,判断跳转官网/手机网站多个实例代码
2016/04/30 Javascript
jQuery中ScrollTo用法示例
2016/09/04 Javascript
jQuery插件ContextMenu自定义图标
2017/03/15 Javascript
基于Bootstrap分页的实例讲解(必看篇)
2017/07/04 Javascript
Vue.js搭建移动端购物车界面
2020/06/28 Javascript
vue.js 微信支付前端代码分享
2018/02/10 Javascript
vue 点击按钮增加一行的方法
2018/09/07 Javascript
AngularJS实现的鼠标拖动画矩形框示例【可兼容IE8】
2019/05/17 Javascript
python模拟登陆阿里妈妈生成商品推广链接
2014/04/03 Python
python 系统调用的实例详解
2017/07/11 Python
python机器学习之神经网络实现
2018/10/13 Python
浅谈python中str字符串和unicode对象字符串的拼接问题
2018/12/04 Python
对python模块中多个类的用法详解
2019/01/10 Python
Django使用redis缓存服务器的实现代码示例
2019/04/28 Python
python 并发下载器实现方法示例
2019/11/22 Python
使用Python爬取Json数据的示例代码
2020/12/07 Python
实例讲解使用CSS实现多边框和透明边框的方法
2015/09/08 HTML / CSS
火山动力Java笔试题
2014/06/26 面试题
管理科学大学生求职信
2013/11/13 职场文书
保证书格式范文
2014/04/28 职场文书
文明市民先进事迹
2014/05/15 职场文书
讲党性心得体会
2014/09/03 职场文书
解放思想演讲稿
2014/09/11 职场文书
村干部任职承诺书
2015/01/21 职场文书
2015年数学教师工作总结
2015/05/20 职场文书
导游词之蜀山胜景瓦屋山
2019/11/29 职场文书
云服务器部署 Web 项目的实现步骤
2022/06/28 Servers