5

以下のようなレイアウトを作成する必要があります。

ここに画像の説明を入力

ご覧のとおり、セルの中心、つまりセルの左とセルの右にサイズ変更可能なセルが必要です

私は同じことを達成するためにhttp://methvin.com/splitter/3csplitter.htmlで jQuery プラグインを使用していました。

しかし、4 つのポートレットも作成する必要がありました (cell-center でわかるように)。私は同じために jQuery UI を使用しましたが、いくつかの理由で、2 つ (3cSplitter と jQuery UI ポートレット) がうまくいきません... レイアウトが完全に壊れてしまいます...絶対配置と関係があるかどうかはわかりません...

しかし、私の質問は、jQuery UI を使用して同様の種類のスプリッターを実現できるかということです。http://jqueryui.com/resizable/の下で見たものは、 http://methvin.com/splitter/3csplitter.html として欲しいものにはあまり適していないようです。 両方とも jQuery UI ベースの場合、私は推測します統合の問題はそれほど大きくないでしょう...

4

2 に答える 2

3

あなたはこのようなものが欲しいですか?

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();
    });
});
于 2013-03-09T14:17:12.403 に答える
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
});

そして、サイズ変更可能なペインを含むペイン ビューがあります。プラグインはかなり構成可能で、ペイン ハンドラーを好みに合わせてスタイル設定したり、ペインの最小サイズまたは最大サイズなどのプラグインの機能面を構成したりできます。さらに、より複雑なビューの場合、レイアウト ペインを他のペインと入れ子にして、プラグインを複数回インスタンス化できます。

于 2013-03-09T13:40:33.797 に答える