1

我目前在ruleguides.js工作。我为标尺和网格线定制了特定的 div。参考这个小提琴。标尺对我来说工作得很好,但可拖动创建 div(网格线)仅从 body 元素计算,这意味着窗口顶部和窗口的左边缘。在我的代码中,我可以为标尺发送特定的 div

var evt         = new Event(),
    dragdrop    = new Dragdrop(evt),
    rg          = new RulersGuides(evt, dragdrop,document.getElementById('workarea'));

我需要从特定的 div 开始(例如:标尺 h 不可选择的类将创建水平网格线,而标尺 v 不可选择的类将在我的工作区域中创建垂直网格线。)如何获得可拖动的起始元素?我需要特别开始 div 就像 image 演示图片

我挣扎了2天多。如何解决这个问题?

4

1 回答 1

4

实际上 RulersGuides.js 不打算在文档正文以外的容器中使用,所以我会考虑将它放在 iframe 中。如果你真的需要将它放在一个 div 中,这里需要做一些调整:

  1. 更新 getWindowSize、getScrollPos 和 getScrollSize 函数以计算容器尺寸。
  2. 除了在 mousedown 处理程序中使用 vBound 和 hBound 之外,您还需要引入 vLowBound、vHighBound 等,其中将考虑容器的左侧和顶部偏移量,如下所示:

    if (vLowBound === 0) {
        vLowBound = container.offsetLeft;
        vHighBound = vRuler.offsetWidth + vLowBound;
        hLowBound = container.offsetTop;
        hHighBound = hRuler.offsetHeight + hLowBound;
    }
    

进行适当的检查

if (
    (
        (x > vLowBound && x < vHighBound) ||
        (y > hLowBound && y < hHighBound)
    ) && rulerStatus === 1
)

接着

if (y > hLowBound && y < hHighBound) {

} else if (x > vLowBound && x < vHighBound) {

因此

  1. 以相同的方式相应地更新 removeInboundGuide。

除此之外,我认为在 dom 尺寸计算、对话框等方面需要进行一些更改。

详情请参考下面的jsfiddle

于 2014-12-26T12:19:03.487 回答