如何阻止 ui 可拖动对象退出屏幕?
How can I stop a ui draggable from exiting the screen?
我目前正在使用这段代码,效果非常好:
$(document).ready(function () {
if ($.cookie("cvispos") != undefined) {
var unwrapped = window.JSON.parse($.cookie("cvispos"));
var left = window.JSON.parse($.cookie("cvispos")).left;
var top = window.JSON.parse($.cookie("cvispos")).top;
$("#cguts").css("left", left + "px");
$("#cguts").css("top", top + "px");
}
});
// Buncha cookie stuff and onclick trash...
$("#cguts").draggable({
stop: function (event, ui) {
$.cookie("cvispos", window.JSON.stringify(ui.position));
}
我遇到的问题是,如果您向上或向下拖动框,您可以将它完全移出屏幕,而无法将其移回。有没有办法防止它移动到视点之外?我尝试使用 snap,但我无法让它工作。我可以通过在定位上设置 min/max 来实现它,但是找不到任何资源让我相信这段代码是可能的。
您可以将可拖动对象的 containment
参数设置为 window
以将其移动限制在可见范围内。
另请注意,您可以通过仅反序列化 JSON 一次并在一次调用中设置两个 css()
属性来优化您的代码。试试这个:
$(document).ready(function () {
if ($.cookie("cvispos") != undefined) {
var cookieData = JSON.parse($.cookie("cvispos"));
$("#cguts").css({
left: cookieData.left + "px",
top: cookieData.top + "px"
});
}
});
// Buncha cookie stuff and onclick trash...
$("#cguts").draggable({
containment: 'window',
stop: function (event, ui) {
$.cookie("cvispos", JSON.stringify(ui.position));
}
});
我目前正在使用这段代码,效果非常好:
$(document).ready(function () {
if ($.cookie("cvispos") != undefined) {
var unwrapped = window.JSON.parse($.cookie("cvispos"));
var left = window.JSON.parse($.cookie("cvispos")).left;
var top = window.JSON.parse($.cookie("cvispos")).top;
$("#cguts").css("left", left + "px");
$("#cguts").css("top", top + "px");
}
});
// Buncha cookie stuff and onclick trash...
$("#cguts").draggable({
stop: function (event, ui) {
$.cookie("cvispos", window.JSON.stringify(ui.position));
}
我遇到的问题是,如果您向上或向下拖动框,您可以将它完全移出屏幕,而无法将其移回。有没有办法防止它移动到视点之外?我尝试使用 snap,但我无法让它工作。我可以通过在定位上设置 min/max 来实现它,但是找不到任何资源让我相信这段代码是可能的。
您可以将可拖动对象的 containment
参数设置为 window
以将其移动限制在可见范围内。
另请注意,您可以通过仅反序列化 JSON 一次并在一次调用中设置两个 css()
属性来优化您的代码。试试这个:
$(document).ready(function () {
if ($.cookie("cvispos") != undefined) {
var cookieData = JSON.parse($.cookie("cvispos"));
$("#cguts").css({
left: cookieData.left + "px",
top: cookieData.top + "px"
});
}
});
// Buncha cookie stuff and onclick trash...
$("#cguts").draggable({
containment: 'window',
stop: function (event, ui) {
$.cookie("cvispos", JSON.stringify(ui.position));
}
});