所以我有一个容器,里面有三列需要调整大小。容器本身最终也需要调整大小,但现在它可以是静态的,只要里面的列在拖动时可以灵活。
我认为我的想法是正确的,但它并不完全存在。调整大小时,某些部分会正确移动,但其他部分会跳到后面或正确调整部分大小,然后开始向后移动。你可以在这里看到我到目前为止,抓住中间手柄并尝试调整大小:
http://jsbin.com/arulel/1/edit
任何帮助将不胜感激,它只需要在 Firefox 中工作。如果可能的话,最好不要额外的插件。
这里也是代码:
<div id="container">
<div id="col1" class="col">
<p>"Lorem ipsum.."</p>
</div>
<div class="resizer first"></div>
<div id="col2" class="col">
<p>"Lorem ipsum.."</p>
</div>
<div class="resizer second"></div>
<div id="col3" class="col">
<p>"Lorem ipsum..."</p>
</div>
</div>
CSS:
#container {
background: none no-repeat 0 0 scroll #aaa;
height: 600px;
border-radius: 0 0 6px 6px;
width: 700px;
position: relative;
}
.col {
height: 100%;
position: absolute;
z-index: 8000;
padding: 0 10px;
}
.first {
width: 4px;
height: 100%;
position: absolute;
left: 33.33%;
background-color: white;
z-index: 9000;
}
.second {
width: 4px;
height: 100%;
position: absolute;
right: 33.33%;
background-color: white;
z-index: 9000;
}
.resizer:hover {
cursor: col-resize;
}
#col1 {
background: none no-repeat 0 0 scroll #444;
border-radius: 0 0 0 6px;
left: 0;
right: calc(66.66% - 4px);
}
#col2 {
background: none no-repeat 0 0 scroll #111;
left: calc(33.33% + 4px);
right: calc(33.33% - 4px);
color: white;
}
#col3 {
background: none no-repeat 0 0 scroll #777;
border-radius: 0 0 6px 0;
left: calc(66.66% - 4px);
right: 0;
}
Javascript/jQuery:
$(document).ready(function(){
$(".first").on("mousedown", function(e){
mousedownFirst = true;
});
$(".second").on("mousedown", function(e){
mousedownSecond = true;
});
$("#container").on("mouseup", function(e){
mousedownFirst = false;
mousedownSecond = false;
});
$("#container").on("mousemove", function(e){
parentOffset = $(this).offset();
if(mousedownFirst){
$(".first").css("left", e.pageX - parentOffset.left);
$("#col1").css("right", e.pageX - parentOffset.left);
$("#col2").css("left", e.pageX - parentOffset.left);
}
if(mousedownSecond){
$(".second").css("left", e.pageX - parentOffset.left);
$("#col2").css("right", e.pageX - parentOffset.left);
$("#col3").css("left", e.pageX - parentOffset.left);
}
});
});