使用 Google 闭包库对齐拖动元素的网格

发布于 2024-12-14 08:08:09 字数 168 浏览 4 评论 0原文

请问,

如何在 Google Closure Library 中制作可拖动元素并对齐网格?

示例:jQueryUI 有选项网格:

$(".selector").draggable({grid: [50, 20]});

Please,

how to make in Google Closure Library draggable element and snap to grid?

Example: jQueryUI has option grid:


$(".selector").draggable({grid: [50, 20]});

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

唔猫 2024-12-21 08:08:09

我需要在我的项目中执行此操作,因此发布解决方案(尽管我确信有很多)。我的方法是继承 goog.fx.Dragger 类并扩展:

  • 用于支持网格参数的构造函数
  • 用于执行实际捕捉的默认操作

代码如下:

SnapDragger = function(target, grid, opt_handle, opt_limits) {
  goog.base(this, target, opt_handle, opt_limits);
  this.grid = grid;
}
goog.inherits(SnapDragger, goog.fx.Dragger);

SnapDragger.prototype.defaultAction = function(x, y) {
  x = Math.round(x / this.grid.x) * this.grid.x;
  y = Math.round(y / this.grid.y) * this.grid.y;
  goog.base(this, 'defaultAction', x, y);
}

然后,您将按照与 goog.ui.Dragger 相同的方式使用 SnapDragger

var dragger = new SnapDragger(element, {x: 20, y: 50});

I needed to do this in my project, so posting the solution (although I am sure there are many). My approach was to inherit the goog.fx.Dragger class and extend:

  • constructor for supporting the grid parameters
  • default action for doing the actual snapping

The code follows:

SnapDragger = function(target, grid, opt_handle, opt_limits) {
  goog.base(this, target, opt_handle, opt_limits);
  this.grid = grid;
}
goog.inherits(SnapDragger, goog.fx.Dragger);

SnapDragger.prototype.defaultAction = function(x, y) {
  x = Math.round(x / this.grid.x) * this.grid.x;
  y = Math.round(y / this.grid.y) * this.grid.y;
  goog.base(this, 'defaultAction', x, y);
}

You would then use the SnapDragger the same way as goog.ui.Dragger

var dragger = new SnapDragger(element, {x: 20, y: 50});
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文