Javascript 基于jQuery的拆分器插件
我需要创建一个布局如下 正如你们所看到的,我希望在单元格中心周围有可调整大小的单元格,即左单元格和右单元格 我当时正在使用jQuery插件 实现同样的目标 但我还需要创建4个portlet(正如您在cell center中看到的那样)。我使用jQuery UI也是出于同样的原因,但由于某些原因,这2个版本运行得不是很好(3cSplitter和jQuery UI Portlet)…布局完全被破坏…不确定是否与绝对定位有关 但我的问题是,我可以使用jQueryUI实现类似的拆分器吗。我在下面看到的那个 似乎对我想要的东西不是很好 如果两者都是基于jQuery UI的,我想集成问题不会太大……插件提供了这种功能。与jQueryUI结合使用,您可以获得具有最小标记的可调整大小的窗格。要实现您想要的目标,您只需要一些标记,如:Javascript 基于jQuery的拆分器插件,javascript,jquery,jquery-ui,Javascript,Jquery,Jquery Ui,我需要创建一个布局如下 正如你们所看到的,我希望在单元格中心周围有可调整大小的单元格,即左单元格和右单元格 我当时正在使用jQuery插件 实现同样的目标 但我还需要创建4个portlet(正如您在cell center中看到的那样)。我使用jQuery UI也是出于同样的原因,但由于某些原因,这2个版本运行得不是很好(3cSplitter和jQuery UI Portlet)…布局完全被破坏…不确定是否与绝对定位有关 但我的问题是,我可以使用jQueryUI实现类似的拆分器吗。我在下面看到的
<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>
并且您有一个具有可调整大小窗格的窗格视图。该插件是相当可配置的,允许您根据自己的喜好设置窗格处理程序的样式,以及配置插件的功能方面,例如窗格的最小或最大大小。此外,对于更复杂的视图,您可以将布局窗格与其他窗格嵌套,并多次实例化插件。您希望类似于 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>
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();
});
});
$(函数(){
var maxBorderCellWidth=250;
var minBorderCellWidth=150;
var resizeCenter=函数(){
var clientWidth=$(文档).innerWidth();
var leftWidth=$(“.left”).outerWidth(true);
var rightWidth=$(“.right”).outerWidth(true);
console.log(clientWidth);$('.center').width(clientWidth leftWidth rightWidth);
}
$(“.left”)。可调整大小({
maxWidth:maxBorderCellWidth,
minWidth:minBorderCellWidth,
句柄:'e',
调整大小:函数(事件、ui){
调整中心的大小();
}
});
$(“.right”)。可调整大小({
maxWidth:maxBorderCellWidth,
minWidth:minBorderCellWidth,
句柄:“w”,
调整大小:函数(事件、ui){
调整中心的大小();
}
});
$(“.column”).sortable({
连接到:“.column”
});
$(“.portlet”).addClass(“ui小部件ui小部件内容ui帮助程序clearfix ui角点全部”)
.find(“.portlet头”)
.addClass(“ui小部件标题ui角点全部”)
.prepend(“”)
(完)
.find(“.portlet内容”);
$(“.portlet头.ui图标”)。单击(函数(){
$(this).toggleClass(“ui图标厚度”).toggleClass(“ui图标厚度”);
$(this.parents(“.portlet:first”).find(“.portlet内容”).toggle();
});
$(“.column”).disableSelection();
调整中心的大小();
$(窗口)。调整大小(函数(){
控制台日志(“测试”);
调整中心的大小();
});
});
Thx很多…使用此插件,我可以配置为如果我有一个北单元格(单元格顶部),并且我不需要任何拆分器。我只需要单元格中心周围的可调整大小的单元格,即左单元格和右单元格…我如何配置?jQuery布局插件有多标准?它是专业使用的吗?@testndtv这应该是答案,我认为完全符合要求。Thx很多…出于某些原因,我有一种不正常的行为…例如。左单元格突然调整大小…我移动鼠标时没有看到实时调整大小…同样在IE 8中,第三列(右)在我移动后立即向下/低于左列…通常ie8的问题在此版本()上得到解决,但我无法测试。。。我不知道是什么原因导致干的在这里效果很好。
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; }
$(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();
});
});