jQuery UI和Splitter

使用jQuery UI,我如何使用像http://methvin.com/splitter/3csplitter.html那样的Splitter特性?

我问这个,因为我需要在我的页面上实现两件事; Portlet(Draggable):: http://jqueryui.com/sortable/#portlets和Vertical Splitter :: http://methvin.com/splitter/3csplitter.html

如果我包含2个独立的库(即使两者都是基于jQuery的),我不确定它的编码实践有多好; 比如用于Portlets的http://host.sonspring.com/portlets/和用于Splitter的http://methvin.com/splitter/3csplitter.html

以下是如何使用jQuery UI创建拆分器的示例:

HTML:

脚本:

 $(function () { $(".resizable1").resizable( { autoHide: true, handles: 'e', resize: function(e, ui) { var parent = ui.element.parent(); var remainingSpace = parent.width() - ui.element.outerWidth(), divTwo = ui.element.next(), divTwoWidth = (remainingSpace - (divTwo.outerWidth() - divTwo.width()))/parent.width()*100+"%"; divTwo.width(divTwoWidth); }, stop: function(e, ui) { var parent = ui.element.parent(); ui.element.css( { width: ui.element.width()/parent.width()*100+"%", }); } }); }); 

这是一个流行的脚本。 我对流体布局添加了一些修改。

jsFiddle示例

我用Dmitriy的答案作为我实施的基础。 请注意,当滑块向右拖动时,没有什么能阻止特定实现使边界框加倍。

我现在需要一个简单的不可移动分割器(为了使窗格在将来可以resize),我的应用程序已经在使用jQuery,所以我通过更改部分代码实现了这一点,如下所示:

 $(function () { $(".resizable1").resizable( { autoHide: false, containment: "#wrap", ... 

我还更改了css游标样式(以及其他内容)以防止可resize的光标显示如下:

 .ui-resizable-e { cursor: default; ... 

谢谢Dmitriy!

我的第一个想法是:首先你选择除了最后一个之外的所有方框。 那些得到了右侧的分裂器。 然后,当移动分路器时,仅调整接触分路器的两个方框的大小。

这是一个可以复制粘贴的例子; 它按原样工作。 这可以用于任意数量的列; 只是确保你也适应了CSS。

我添加了一些按钮来扩展1个盒子; 还有一个重置按钮。

     jQuery UI 4-Column Splitter     
HELLO
WORLD
FOO
BAR

Shield UI框架的Splitter组件部分允许您使用水平和垂直分割器的混合。