javascript – 从加载和调整大小的jQuery UI中的Resizable div获取宽度百分比

所以我把这两个div分开了.可以使用jQuery UI调整两个div的大小.

在调整div的大小时,我抓住宽度使其成为一个百分比并将其输出到相应的输入,但发生了一些奇怪的事情.

HTML

<div id="parent">
   <div id="div1"> My Data1
     <input type="text" class="div1">
   </div> 
   <div id="div2"> My Data2
     <input type="text" class="div2">
   </div> 
</div>

Javascript:

$("#div1").resizable();
$('#div1').resize(function(){
   $('#div2').width($("#parent").width()-$("#div1").width()); 
});
$(window).resize(function(){

   var div1width = $(".div1").width() / $('.div1').parent().width() * 100;
   // Paste percentage into the inputs
   $('.div1').val(div1width);

   var div2width = $(".div2").width() / $('.div2').parent().width() * 100;
   // Paste percentage into the inputs
   $('.div2').val(div2width);
});

CSS:

#parent{
    position:absolute;
    height:100%;
    margin:0;
    padding:0;
    width:100%;
}
#div1{
    position:relative;
    float:left;
    height:100%;
    width:50%;
    background-color:#A2A;
}
#div2{
    position:relative;
    float:left;
    height:100%;
    width:50%;
    background-color:#BBB;
}
.ui-resizable-e {
    cursor: e-resize;
    width: 7px;
    right: -5px;
    top: 0;
    height: 100%;
    background: black;
}

小提琴:https://jsfiddle.net/uvcxfmfy/1/

会发生的事情是,当我使div1变小时,宽度百分比甚至会一直上升超过800%.当我把它做得更宽时,宽度百分比停止在20%.所以有些不对劲但我无法找到它.

我想要实现的目标.

在页面加载时,两个div应该有50%的宽度.当我使div1变小时,它应该一直变为0%,当我把它变大时它应该变为100%.

这意味着如果div1设置为25%,则div2将具有75%
当div1设置为58%时,div2为42%.

谢谢大家的帮助.

最佳答案 我希望你觉得这对你有帮助.

您应该使用此数学来获得百分比:

Math.round(( docWidth - elemWidth ) / docWidth * 100)

我只是订购你的代码并更改计算线,看看这个例子:

$("#div1").resizable();

$('#div1').resize(function(){
   $('#div2').width($("#parent").width()-$("#div1").width()); 
});

$(window).resize(function(){
    elementResize()
});

$(document).ready(function(){
    elementResize()
});

function elementResize(){
   $('#div2').width($("#parent").width()-$("#div1").width()); 
   $('#div1').height($("#parent").height()); 

   var parentwidth = $("#parent").width(),
       div1width = $("#div1").width(),
       div2width = $("#div2").width(),
       div1percentage = Math.round((div1width / parentwidth) * 100),
       div2percentage = Math.round((div2width / parentwidth) * 100);

   $('.div1').val(div1percentage);
   $('.div2').val(div2percentage);
}

Fiddle demo

点赞