gpt4 book ai didi

javascript - 可拖动框的小故障

转载 作者:行者123 更新时间:2023-11-28 21:01:12 25 4
gpt4 key购买 nike

通常我更喜欢为琐碎问题编写自己的解决方案,因为插件通常会添加许多不需要的功能并增加项目的大小。大小会使页面变慢,并且在每天 10 万页面浏览量的网站中,3 万的差异(与 jquery Draggable 相比)会导致账单上的巨大差异。我已经使用了 jquery,我认为这就是我现在所需要的,所以请不要告诉我使用其他插件或框架来拖动东西。

考虑到这一点,我编写了以下代码,以允许框可以拖动。该代码工作得很好(任何有关代码本身的提示都将非常感激),但是当我将鼠标光标拖动到框限制的左侧时,我遇到了一个小故障:框内的文本被选中。

如何解决?谢谢。

JavaScript:

$(document).ready(function () {

var x = 0;
var y = 0;

$("#d").live("mousedown", function () {

var element = $(this);
var parent = element.parent();

$(document).mousemove(function (e) {

var x_movement = 0;
var y_movement = 0;

if (x == e.pageX || x == 0) {
x = e.pageX;
} else {
x_movement = e.pageX - x;
x = e.pageX;
}

if (y == e.pageY || y == 0) {
y = e.pageY;
} else {
y_movement = e.pageY - y;
y = e.pageY;
}

var left = parseFloat(element.css("left")) + x_movement;

// hold inside left
if (left <= 0) left = 0;

// hold inside right
var max_right = (parseFloat(element.outerWidth()) - parent.width()) * -1;
if (left >= max_right) left = max_right;

element.css("left", left);

var top = parseFloat(element.css("top")) + y_movement;

// hold inside top
if (top <= 0) top = 0;

// hold inside bottom
var max_bottom = (parseFloat(element.outerHeight()) - parent.height()) * -1;
if (top >= max_bottom) top = max_bottom;

element.css("top", top);

return false;

});

});

$(document).mouseup(function () {
x = 0;
y = 0;
$(document).unbind("mousemove");
});

});

HTML:

<div style="position: relative; width: 500px; height: 500px; background-color: Red;">
<div id="d" style="position: absolute; width: 100px; left: 0px; height: 100px; top: 0px; cursor: move; border: 1px solid black;">a</div>
</div>

最佳答案

事实上,文本被选择与 JavaScript 无关。这是浏览器的问题,如果您在按下一个按钮的情况下移动鼠标光标,则会选择文本。

您可以应用一些 CSS,这将阻止文本被选中,至少在现代浏览器上是这样:

#d {
-webkit-touch-callout: none;
-webkit-user-select: none;
-khtml-user-select: none;
-moz-user-select: none;
-ms-user-select: none;
user-select: none;
}

(这不是标准的 css,但它应该可以工作。)

关于javascript - 可拖动框的小故障,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11006270/

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