要素をドラッグしたとき#right
に、その親のサイズを変更したいと思います。私の例は正しく機能せず、その理由を理解できていません。それを修正する方法のヒントはありますか?
念のため、ここで私がやろうとしているのは、これに似たサイズ変更可能なスクロールを作成することです。しかし今のところ、私は正しい要素にのみ興味があります。
要素をドラッグしたとき#right
に、その親のサイズを変更したいと思います。私の例は正しく機能せず、その理由を理解できていません。それを修正する方法のヒントはありますか?
念のため、ここで私がやろうとしているのは、これに似たサイズ変更可能なスクロールを作成することです。しかし今のところ、私は正しい要素にのみ興味があります。
最も簡単な解決策は次のとおりです(SCSSの#leftと#rightの変更に注意してください)。
SCSS:
#container {
width: 500px;
height: 100px;
background: #f9f9f9;
}
#nav {
width: 100px;
height: 100px;
background: #e9e9e9;
cursor: move;
}
#left {
width: 10px;
height: 100px;
position: absolute;
top:0;
left:0px;
background: #a9a9a9;
cursor: w-resize;
&:hover {
background: #999;
}
}
#right {
width: 10px;
height: 100px;
position:absolute;
top:0;
right:0px;
background: #a9a9a9;
cursor: e-resize;
&:hover {
background: #999;
}
}
JavaScript:
var cont = $("#container")
var nav = $("#nav")
var left = $("#left")
var right = $("#right")
nav.draggable({
containment: cont
});
right.draggable({
containment: cont,
drag: function(e, ui) {
nav.width(ui.position.left);
}
});
唯一の問題は、JavaScriptに夢中になっていることでした。ui.position.leftには、必要なすべての情報が含まれていました。私がしたのは、コンテンツをフローティングからposition:absoluteに変更することだけでした。
古き良き純粋なJavaScriptを使用して、それを行うことができます
http://jsfiddle.net/DerekL/cCvGD/
var oriX = 0,
oriW = 0,
mousedown = false;
right.mousedown(function (e) {
oriX = $(this).offset().left; //store the initial x and width
oriW = nav.width();
mousedown = true; //mousedown sets to true
e.stopPropagation(); //prevent nav from being dragged
})
$(window).mousemove(function (e) {
if(mousedown == true) { //only when mouse is down (dragging)
nav.width(oriW + (e.clientX - oriX)); //calculate the width
}
}).mouseup(function () {
mousedown = false; //mousedown sets to false
});
左と右の両方:http://jsfiddle.net/DerekL/cCvGD/1/
問題は、ナビゲーションコンテナの幅を変更していて、これが正しい要素から移動していることです。したがって、ドラッグしている間、2倍の距離まで移動します。
ドラッグ可能な方法で正しい要素の位置をリセットすることで、これを回避できます
right.draggable({
containment: cont,
drag: function(e, ui){
dragged = ui.position.left;
nav.width(originNavWidth + dragged);
ui.position.left = nav.position.left;
}
})
参照: http: //jsfiddle.net/vf4eS