这是代码:
const resizeHandle1 = document.querySelector("#pane1 .resize-handle");
const resizeHandle2 = document.querySelector("#pane2 .resize-handle");
const pane1 = document.getElementById("pane1");
const pane2 = document.getElementById("pane2");
let isResizing = false;
resizeHandle1.addEventListener("mousedown", (e) => {
isResizing = true;
document.addEventListener("mousemove", resizePane1);
document.addEventListener("mouseup", stopResize);
});
resizeHandle2.addEventListener("mousedown", (e) => {
isResizing = true;
document.addEventListener("mousemove", resizePane2);
document.addEventListener("mouseup", stopResize);
});
function resizePane1(e) {
if (isResizing) {
const offsetRight = document.body.offsetWidth - e.clientX;
pane1.style.width = `calc(100% - ${offsetRight}px)`;
}
}
function resizePane2(e) {
if (isResizing) {
const offsetLeft = e.clientX;
pane2.style.width = `calc(${offsetLeft}px - 10px)`;
}
}
function stopResize() {
isResizing = false;
document.removeEventListener("mousemove", resizePane1);
document.removeEventListener("mousemove", resizePane2);
}
body, html {
margin: 0;
padding: 0;
height: 100%;
}
.container {
display: flex;
height: 100%;
}
.pane {
flex: 1;
position: relative;
overflow: hidden;
}
.resize-handle {
position: absolute;
width: 10px;
height: 100%;
cursor: col-resize;
background: #ddd;
top: 0;
right: -5px;
}
<div class="container">
<div id="pane1" class="pane">
<div class="resize-handle"></div>
Pane 1
</div>
<div id="pane2" class="pane">
<div class="resize-handle"></div>
Pane 2
</div>
</div>
<div class="resize-handle"></div>
以及 .pane 中的“flex: 1”