【发布时间】:2016-11-09 01:42:17
【问题描述】:
所以我把这两个 div 放在一起。这两个 div 都可以使用 jQuery UI 调整大小。
在调整 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%。
感谢大家的帮助。
【问题讨论】:
-
好的,再次,正如我在这个问题的上一个迭代中所指出的,
$(".div1").width()正在为您提供具有类“div1”的<input>元素的宽度。<input>的父级是 ID 为“div1”的<div>。我不确定我是否理解计算输入元素宽度与 div 宽度之比的意义。 -
哦,这很容易解释。最终用户在应用程序的后端看到的基本上是我们在小提琴中看到的,没有那些将被隐藏的输入。然后用户拖放
columns (#div1 & 2),直到用户满意为止。因此,假设一个是 25%,另一个是 75%。然后这些值也会进入隐藏输入。在保存应用程序时,输入被存储。然后在前端,这些保存的值用于生成列宽。希望这可以清除它。我认为在最初的问题中添加所有这些没有意义? -
@Pointy 输入实际上与问题无关,它们只是显示值。出于这个问题的目的,它也可能是一个 console.log 或警报。我只想使 div 可调整大小并返回从 0 到 100 的百分比宽度。
-
嗯,输入肯定与小提琴的工作方式有关,因为
$(".div1")指的是 id 为“div1”的 div 内的<input>元素。
标签: javascript jquery html css