我实现了jquery resizable来显示两个水平面板(leftpanel和rightpanel),两个面板之间有一个拖动条。我添加了一个border-right,在left_pane的右边包含一条黑线,以帮助定位拖动的位置。
此功能适用于内容很少的情况,但适用于添加内容的情况(使用[Add Content]按钮):
1.拆分拖动停止工作/不再可拖动(这是因为垂直滚动条吗?)
1.拆分拖动器的位置在滚动条的左侧,而不是预期的"黑线"位置。
$("#left_pane").resizable({
handles: 'e',
resize: function() {
$("#right_pane").outerWidth($("#container").innerWidth() - $("#left_pane").outerWidth());
}
});
function addContent() {
// Fill out the pane content...
var lp = document.getElementById('left_pane');
var rp = document.getElementById('right_pane');
for (var i = 0; i < 10; i++) {
lp.innerHTML += lp.innerText + ' ';
rp.innerHTML += rp.innerText + ' ';
}
}
* {
box-sizing: border-box;
}
#container {
position: absolute;
width: calc(100% - 20px);
height: calc(100% - 50px);
}
#left_pane,
#right_pane {
top: 0;
height: calc(100% - 20px);
position: absolute;
padding: 10px;
color: black;
overflow:auto;
}
#left_pane {
width: 25%;
left: 0;
background: lightgrey;
border-right: 2px solid black;
}
#right_pane {
width: 75%;
right: 0;
background: white;
}
button {
margin:10px;
}
<button onClick='addContent()'>Add Content</button>
<div id="container">Container
<div id="left_pane">Lorem ipsum dolor sit amet </div>
<div id="right_pane">Lorem ipsum dolor sit amet </div>
</div>
<script src="https://code.jquery.com/jquery-3.6.0.js"></script>
<script src="https://code.jquery.com/ui/1.13.2/jquery-ui.js"></script>
<link rel="stylesheet" href="//code.jquery.com/ui/1.13.2/themes/base/jquery-ui.css">
也可以在https://jsfiddle.net/Abeeee/xvhc615j/9/上找到运行示例
我该怎么解决这个问题?
1条答案
按热度按时间s5a0g9ez1#
请看下面的例子。
您可以使用自定义句柄。当您向元素添加边框时,它不是可调整大小的句柄。
支持以下键:
{ n, e, s, w, ne, se, sw, nw }
。任何指定的值应该是一个jQuery选择器,它与用作句柄的resizable的子元素匹配。如果句柄不是resizable的子元素,则可以直接传入DOMElement或一个有效的jQuery对象。注意:生成自己的句柄时,每个句柄都必须具有
ui-resizable-handle
类以及相应的ui-resizable-{direction}
类,例如ui-resizable-s
查看更多信息:www.example.comhttps://api.jqueryui.com/resizable/#option-handles
我为左面板创建了一个Wrapper,在其中添加了一个Handle和内容,当添加更多内容时,溢出只针对内容,而不影响Handle或Wrapper。