2013-03-09 94 views
4

我需要創建一個佈局如下;基於jQuery的Splitter插件

enter image description here

現在你可以看到,我想圍繞小區中心即可調整大小的細胞,細胞左和細胞右

我是用在http://methvin.com/splitter/3csplitter.html 的jQuery插件來實現相同的。

但我還需要創建4個portlet(正如您可以看到的cell-center)。我使用jQuery UI的原因是相同的,由於某些原因,2不太好(3cSplitter和jQuery UI Portlets)...佈局完全被破壞...不知道它是否與絕對定位有關...

但我的問題是,我可以使用jQuery UI來獲得類似的分離器。我http://jqueryui.com/resizable/ 下看到了一個似乎並沒有成爲我想要的東西作爲http://methvin.com/splitter/3csplitter.html 如果兩者都jQuery UI的基礎,我想整合問題將不會有太大的很好...

回答

3

jQuery Layout插件提供了這種功能。結合jQuery UI,您可以使用非常小的標記獲取可調整大小的窗格。爲了實現你在找什麼,你只需要一些標記,如:

<div id="container"> 
    <div class="ui-layout-west">Left</div> 
    <div class="ui-layout-center">Center</div> 
    <div class="ui-layout-east">Right</div> 
</div> 

在默認配置下,你根本就實例化的默認樣式插件:

$("#container").layout({ 
    applyDemoStyles: true 
}); 

而且你有窗格視圖與可調整大小的窗格。該插件是相當可配置的,允許您根據自己的喜好設置窗格處理程序的樣式,以及配置插件的功能方面,如窗格的最小或最大尺寸。另外,對於更復雜的視圖,您可以將佈局窗格與其他窗格進行嵌套並多次實例化插件。

+0

THX很多...使用這個插件,我可以配置這樣,如果我有一個北細胞(細胞頂部),我不想在那裏有任何分離器。我只想要細胞中心周圍的可調整大小的細胞,即細胞左和細胞右...我怎樣才能配置? – testndtv 2013-03-09 13:57:31

+0

jQuery Layout插件的標準是什麼?它是專業使用的嗎? – testndtv 2013-03-09 14:30:44

3

你想要類似this

HTML

<div class="left">left</div> 
<div class="center"> 
    <div class="column"> 

    <div class="portlet"> 
    <div class="portlet-header">Feeds</div> 
    <div class="portlet-content">Lorem ipsum dolor sit amet, consectetuer adipiscing elit</div> 
    </div> 

    <div class="portlet"> 
    <div class="portlet-header">News</div> 
    <div class="portlet-content">Lorem ipsum dolor sit amet, consectetuer adipiscing elit</div> 
    </div> 

</div> 
    <div class="column"> 

    <div class="portlet"> 
    <div class="portlet-header">Feeds</div> 
    <div class="portlet-content">Lorem ipsum dolor sit amet, consectetuer adipiscing elit</div> 
    </div> 

    <div class="portlet"> 
    <div class="portlet-header">News</div> 
    <div class="portlet-content">Lorem ipsum dolor sit amet, consectetuer adipiscing elit</div> 
    </div> 

</div> 
</div> 
<div class="right">right</div> 

CSS

body, html { 
    position: relative; 
    height: 100%; 
    width: 100%; 
    padding: 0; 
    margin: 0; 
} 
.left, .right { 
    height: 100%; 
    width: 170px; 
    float: left; 
    background: #e0e0e0; 
} 
.left { 
    border-right: 3px solid #DDD; 
    margin-right: 4px; 
} 
.right { 
    border-left: 3px solid #DDD; 
    left: 0!important; 
    margin-left: 4px; 
} 
.center { 
    height: 100%; 
    float: left; 
} 
.column { width: 50%; float: left; padding-bottom: 100px; } 
.portlet { margin: 0 1em 1em 0;} 
    .portlet-header { margin: 0.3em; padding-bottom: 4px; padding-left: 0.2em; } 
    .portlet-header .ui-icon { float: right; } 
    .portlet-content { padding: 0.4em; } 
    .ui-sortable-placeholder { border: 1px dotted black; visibility: visible !important; height: 50px !important; } 
    .ui-sortable-placeholder * { visibility: hidden; } 

jQuery的

$(function() { 
    var maxBorderCellWidth = 250; 
    var minBorderCellWidth = 150; 
    var resizeCenter = function() { 
     var clientWidth = $(document).innerWidth(); 
     var leftWidth = $(".left").outerWidth(true); 
     var rightWidth = $(".right").outerWidth(true); 
     console.log(clientWidth); $('.center').width(clientWidth-leftWidth-rightWidth); 
    } 

    $(".left").resizable({ 
     maxWidth: maxBorderCellWidth, 
     minWidth: minBorderCellWidth, 
     handles: 'e', 
     resize: function (event, ui){ 
      resizeCenter(); 
     } 
    }); 
    $(".right").resizable({ 
     maxWidth: maxBorderCellWidth, 
     minWidth: minBorderCellWidth, 
     handles: 'w', 
     resize: function (event, ui){ 
      resizeCenter(); 
     } 
    }); 
    $(".column").sortable({ 
     connectWith: ".column" 
    }); 

    $(".portlet").addClass("ui-widget ui-widget-content ui-helper-clearfix ui-corner-all") 
     .find(".portlet-header") 
     .addClass("ui-widget-header ui-corner-all") 
     .prepend("<span class='ui-icon ui-icon-minusthick'></span>") 
     .end() 
     .find(".portlet-content"); 

    $(".portlet-header .ui-icon").click(function() { 
     $(this).toggleClass("ui-icon-minusthick").toggleClass("ui-icon-plusthick"); 
     $(this).parents(".portlet:first").find(".portlet-content").toggle(); 
    }); 

    $(".column").disableSelection(); 

    resizeCenter(); 
    $(window).resize(function() { 
     console.log("test"); 
     resizeCenter(); 
    }); 
}); 
+0

@testndtv這應該是答案,我認爲按照要求確切。 – 2013-03-09 14:27:52

+0

Thx很多...由於某些原因,我得到一個生澀的行爲...例如。左邊的單元格突然調整大小...我沒有看到實時調整大小,因爲我移動了鼠標...... – testndtv 2013-03-10 08:18:29

+0

同樣在IE 8中,第三列(右)在我移動時正在下/左下角。 – testndtv 2013-03-10 08:50:43