Dans ce plunk j'ai trois DIV
s divisés par deux autres DIV
s qui sont draggable (couleur grise). Lorsque les DIV
s entraînables sont entraînées vers le haut / vers le bas ou vers la gauche / droite, les autres DIV
s doivent être redimensionnés.
Le premier DIV compressible fonctionne bien (celui de gauche qui redimensionne les autres DIV verticalement). Mais le deuxième DIV
compressible ne fonctionne pas, bien que la méthode soit identique à la première DIV
compressible. Une idée de comment réparer ça?
Javascript
var top1H, bottom1H; $( "#div1" ).draggable({ axis: "y", start: function(event, ui) { shiftInitial = ui.position.top; top1H = $("#top1").height(); bottom1H = $("#bottom1").height(); }, drag: function(event,ui) { var shift = ui.position.top; $("#top1").height(top1H + shift - shiftInitial); $("#bottom1").height(bottom1H - shift + shiftInitial); } }); var right1W, left1W; $( "#div2" ).draggable({ axis: "y", start: function(event, ui) { shiftInitial = ui.position.left; right1W = $("#right1").height(); left1W = $("#left1").height(); }, drag: function(event,ui) { var shift = ui.position.left; $("#right1").height(right1W + shift - shiftInitial); $("#left1").height(left1W - shift + shiftInitial); } });
HTML
<div> <div id="left1"> <div id="top1"></div> <div id="div1"></div> <div id="bottom1"></div> </div> <div id="div2"></div> <div id="right1"></div> </div>
CSS
#div1 { width:180px; height:6px; background-color:#e0e0e0; cursor:ns-resize; position: absolute; } #div2{ width:6px; height:200px; background-color:#e0e0e0; float:left; cursor:ew-resize; } #top1{ width:180px; height:100px; background-color:orange; } #bottom1 { width:180px; height:100px; background-color:blue; } #left1{ width:180px; height:200px; float:left; background-color:orange; } #right1{ height:200px; background-color:red; width:100%; }
Puisque vous avez mentionné que votre premier DIV
traction fonctionne bien, je n'ai réglé que le second.
Il y a deux problèmes avec votre code:
axis: "y"
attribut axis: "y"
(alors que le second doit être grad sur l'axe des X
$(function() { var top1H, bottom1H; var right1W, left1W; $( "#div1" ).draggable({ axis: "y", start: function(event, ui) { shiftInitial = ui.position.top; top1H = $("#top1").height(); bottom1H = $("#bottom1").height(); }, drag: function(event,ui) { var shift = ui.position.top; $("#top1").height(top1H + shift - shiftInitial); $("#bottom1").height(bottom1H - shift + shiftInitial); } }); $( "#div2" ).draggable({ axis: "x", start: function(event, ui) { shiftInitial = ui.position.left; right1W = $("#right1").width(); left1W = $("#left1").width(); }, drag: function(event,ui) { var shift = ui.position.left; $("#left1 div").width(left1W + shift); } }); });
#div1 { width:180px; height:6px; background-color:#e0e0e0; cursor:ns-resize; position: absolute; } #div2{ width:6px; height:200px; background-color:#e0e0e0; float:left; cursor:ew-resize; left: 180px; } #top1{ width:180px; height:100px; background-color:orange; } #bottom1 { width:180px; height:100px; background-color:blue; } #left1{ width:0; height:200px; float:left; background-color:orange; } #right1{ height:200px; background-color:red; width:100%; }
<script src="//code.jquery.com/jquery-2.1.3.min.js"></script> <link rel="stylesheet" href="//cdnjs.cloudflare.com/ajax/libs/jqueryui/1.10.0/css/smoothness/jquery-ui-1.10.0.custom.min.css" /> <script src="//cdnjs.cloudflare.com/ajax/libs/jqueryui/1.10.0/jquery-ui.js"></script> <div> <div id="left1"> <div id="top1"></div> <div id="div1"></div> <div id="bottom1"></div> </div> <div id="div2"></div> <div id="right1"></div> </div>