Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/387.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/84.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何在rulerguides.js中找到精确的可拖动网格线位置?_Javascript_Jquery_Html_Gridlines_Rulers - Fatal编程技术网

Javascript 如何在rulerguides.js中找到精确的可拖动网格线位置?

Javascript 如何在rulerguides.js中找到精确的可拖动网格线位置?,javascript,jquery,html,gridlines,rulers,Javascript,Jquery,Html,Gridlines,Rulers,我目前在北京工作。我为标尺和网格线定制了特定的div。标尺对我来说工作正常,但只能从body元素计算创建div(网格线),这意味着窗口顶部和窗口左边缘。在我的代码中,我可以为标尺发送特定div var evt = new Event(), dragdrop = new Dragdrop(evt), rg = new RulersGuides(evt, dragdrop,document.getElementById('workarea'))

我目前在北京工作。我为标尺和网格线定制了特定的div。标尺对我来说工作正常,但只能从body元素计算创建div(网格线),这意味着窗口顶部和窗口左边缘。在我的代码中,我可以为标尺发送特定div

var evt         = new Event(),
    dragdrop    = new Dragdrop(evt),
    rg          = new RulersGuides(evt, dragdrop,document.getElementById('workarea'));
我需要从某个部门开始 (例如:标尺h不可选择类将创建水平网格线,标尺v不可选择类将在我的工作区域创建垂直网格线。) 如何获得可拖动的起始元素?我需要从特定的div开始,就像image一样


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

实际上,RulersGuides.js不打算用于文档正文以外的容器中,所以我会考虑将其放置在iframe中。 如果您真的需要将其放入div中,则需要进行以下调整:

  • 更新GetWindowsSize、getScrollPos和getScrollSize函数以计算容器尺寸
  • 除了在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(
    (
    (x>vLowBound和&xH下限和y
    然后

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

    }否则如果(x>vLowBound&&x
    相应地

  • 以相同的方式相应地更新removeInboundGuide
  • 除此之外,我认为需要对dom维度计算、对话框等进行一些更改


    有关详细信息,请参阅以下内容。

    实际上RulersGuides.js不用于文档正文以外的容器中,因此我会考虑将其放置在iframe中。 如果您真的需要将其放入div中,则需要进行以下调整:

  • 更新GetWindowsSize、getScrollPos和getScrollSize函数以计算容器尺寸
  • 除了在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(
    (
    (x>vLowBound和&xH下限和y
    然后

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

    }否则如果(x>vLowBound&&x
    相应地

  • 以相同的方式相应地更新removeInboundGuide
  • 除此之外,我认为需要对dom维度计算、对话框等进行一些更改


    请参考以下内容了解详细信息。

    HI@Mark Rolich..谢谢你宝贵的回答。我真的很高兴你的回答。同时,我会在我给定的小提琴中将像素转换为英寸..你看到了吗?实现英寸的方式正确吗?或者有其他想法吗?嗨,Vivek。事实上,我认为这非常困难lt将真实世界的测量单位(如英寸)映射到像素,像素在不同的设备和屏幕尺寸上可能会有所不同。在@MarkRolich伟大的答案+100Hi@MarkRolich上对此进行了讨论。您绝对正确的屏幕分辨率将彼此不同。但我有525 X 300像素,它将显示3.5x2英寸(包括150DPI).如何计算?嗨@马克·罗里奇..谢谢你宝贵的回答。我真的很高兴你的回答。同时,我会在我给定的小提琴中将像素转换为英寸..你看到了吗?实现英寸的方式正确吗?或者有其他想法吗?嗨,维韦克。事实上,我认为绘制真实世界真的很困难测量单位,如英寸到像素,在不同的设备和屏幕尺寸上可能会有所不同。在@MarkRolich伟大的回答+100Hi@MarkRolich上讨论了这一点。您绝对正确的屏幕分辨率将彼此不同。但我有525 X 300像素,它将显示3.5x2英寸(包括150DPI)。如何计算?