gpt4 book ai didi

javascript - 模拟可移动分隔线 : Need to disable default dragging

转载 作者:行者123 更新时间:2023-11-28 18:55:20 29 4
gpt4 key购买 nike

我正在使用 html5 + css3 + javascript 制作 gui 应用程序。我正在尝试模拟一个结构,其中一个寡妇被分成两个部分,中间有一个可移动的 Pane 。当用户拖动 Pane 时, Pane 应该跟随鼠标光标,改变两侧两个部分的大小。到目前为止,我想出了以下代码。

<html>
<head>
<style>
.container {
display : inline-block;
height : 500px;
}
.pane {
display : inline-block;
width : 10px;
height : 100%;
vertical-align : top;
color : #806000;
background-color : #b0d0c0;
}
.resbox {
display : inline-block;
width : 200px;
height : 100%;
background-color : #707070;
}
</style>
<script async="true">
function dragStart(e, left, right){
mousedown = true;
x = e.clientX
dragOffsetLeft = document.getElementById(left).offsetWidth - x;
dragOffsetRight = document.getElementById(right).offsetWidth + x;
};
function dragRelease(){
mousedown = false;
};
function drag(e, left, right){
if(!mousedown){return}
x = e.clientX
tmpLeft = dragOffsetLeft + x
tmpRight = dragOffsetRight - x
if(tmpLeft < 30 || tmpRight < 30){return}
document.getElementById(left).style.width = tmpLeft + 'px';
document.getElementById(right).style.width = tmpRight + 'px';
};
</script>
</head>
<body>
<span class="container">
<span id="left" class="resbox">Left</span>
<span class="pane" onmousedown="dragStart(event, 'left', 'right');" onmousemove="drag(event, 'left', 'right');" onmouseout="dragRelease();" onmouseup="dragRelease();"></span>
<span id="right" class="resbox">Right</span>
</span>
</body>
</html>

它有时有效,但其他时候(尤其是在我完成一次 Pane 拖动之后),中间的 Pane 像图片一样拖出位置,并且预期的功能被阻止。我在 <script>...</script> 中添加了以下内容, 但它没有帮助。

      window.onload = function(){
document.getElementsByClassName('pane')[0].draggable = false;
};

我可以就如何禁用默认拖动提出建议吗?我使用的是 firefox 7.0.1 和 chrome 15.0.874.106。这段代码还有什么其他的改进点可以让运动更平稳流畅吗?

最佳答案

首先,要在拖动分隔线时停止突出显示文本:

onmousedown="dragStart(event, 'left', 'right'); return false;"
// Returning false stops the default dragging

当光标移动太快时,这仍然不起作用。这是因为分隔线太细,光标快速移动会退出。

我在这里做了一个快速的解决方法:http://jsfiddle.net/np56t/1/

我建议尝试使用 jQuery UI Draggable正确地做到这一点。

关于javascript - 模拟可移动分隔线 : Need to disable default dragging,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8060674/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com