javascript - Jquery UI resizable - 调整特定宽度
问题描述
我正在使用 JQuery UI 来创建一种规划。
我希望用户在计划中调整事件的大小,并且每个事件必须填满一天(一个单元格)。
这是小提琴:https ://jsfiddle.net/ncxqdu4w/
我的代码:
// width = 100, it's the size of a cell
$('.label').draggable({
snap: '.td-event:not(.td-event-booked)'
}).resizable({
handles: 'e, w',
minWidth: width,
aspectRatio: 0,
grid: [ width, 0 ]
});
但是当我调整我的事件大小时,大小从 200 像素变为 276 像素,然后是 176 像素。它不尊重我的 [100, 0] 网格。
当我调整事件大小时,我可以让它尊重 100px 吗?填满整个单元格。
解决方案
我会考虑以下内容:
$('.label').draggable({
snap: '.td-event:not(.td-event-booked)'
}).resizable({
handles: 'e, w',
minWidth: width - 24,
aspectRatio: 0,
resize: function(e, ui) {
var w = ui.size.width;
var p = $(ui.element).parent();
var c = Math.floor(p.outerWidth());
var nw = w + (c - (w % c));
ui.size.width = nw;
}
});
工作示例:https ://jsfiddle.net/Twisty/4tjwrxyo/18/
例如,如果w
是 121,并且是 98,则模数将为 23。我们的c
新宽度将为196(2 天的宽度)。如果我们再做一次,对于= 307、= 98 和 13 的模数,则= 392 或 4 天。nw = 121 + (98 - 23)
nw
w
c
nw
这里需要注意的是,这在使用e
手柄调整大小时效果很好。我们只是添加grid
选项来解决w
手柄移动。
完整示例:https ://jsfiddle.net/Twisty/4tjwrxyo/23/
$('.label').draggable({
snap: '.td-event:not(.td-event-booked)'
}).resizable({
handles: 'e, w',
aspectRatio: 0,
grid: [98, 10],
resize: function(e, ui) {
var w = ui.size.width;
var p = $(ui.element).parent();
var c = Math.floor(p.outerWidth());
var nw = w + (c - (w % c));
ui.size.width = nw;
}
});
推荐阅读
- keras - 如何根据 y_true 在 keras 中自定义损失函数
- c - OSDEV:我如何使用 vesa 模式?
- java - Quartz JDBC - 重启后 Spring Boot 变得更慢
- python - 如何使用 AbstractUser 自定义 django 用户模型
- javascript - 如何使用输入字段过滤引导 vue 表
- c++ - 如何使用可变大小的二维数组与 Eigen 一起工作?
- nestjs - 如何使 HTTP 请求对象对我的 winston 记录器可见?
- c++ - 关于固定大小队列的 C++ 说明
- variables - 为什么我可以使用可变变量,使其生命周期与不可变引用重叠,但我不能以相同的方式使用可变引用?
- c# - 如何在 asp.net 中将所有 xsd 元素显示为列表