【问题标题】:how to call a mouse event to dom object that lies behind other in javascript?如何将鼠标事件调用到 javascript 中位于其他对象后面的 dom 对象?
【发布时间】:2020-01-27 18:54:56
【问题描述】:

我想调用一个mousemove js事件到一个在后面的dom对象,我怎么能忽略前面的对象调用这个事件呢?

我想调用一个矩形绘制,我用 js 和 div 制作它们,首先我有根 div,即我的高度和宽度参考,然后想使用鼠标事件来调整大小和重新定位“矩形”div ,问题是当我调用 mousemove 事件到我的“root”以获取鼠标位置数据并且我的 rect 位于前面然后计算变得疯狂,我的意思是,当我的鼠标到达时,“root”.mousemove 事件被取消'rect' 对象,所以我想将我的 rect 设置为 'transparent' 然后只使用我的 'root' 事件处理程序,希望你能理解和帮助。

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>Document</title>
</head>
<body>
    <div id="root">
            <div id="rect">

            </div>
    </div>
    <script>
        var root = document.getElementById('root');
        var rect =document.getElementById('rect');

        root.addEventListener('mousemove',function(e){
            rect.style.width = e.offsetX;
            rect.style.height = e.offsetY;
        });
    </script>
</body>
</html>

我想让'rect'对js鼠标事件'透明'。

【问题讨论】:

  • 我将采取的总结方法:我认为您只想在文档级别处理鼠标移动,然后将元素位置收集到数组中,然后检查该事件中的任何鼠标坐标冲突,在如果超过 1 个,碰撞逻辑会找到最底部的项目,根据需要对该项目进行操作。
  • 我认为你的事件处理程序应该使用事件冒泡概念。

标签: javascript jquery html dom dom-events


【解决方案1】:

这里是示例 JS fiddle 示例 (link)。这工作正常。当您移动鼠标时,内部矩形的高度和宽度会发生变化。让我知道这是否是您想要的。

<!DOCTYPE html>
  <html lang="en">
    <head></head>
    <body>
      <div id="root" style="border:1px solid red; height: 100px; width: 100%;">
        <div id="rect" style="border:1px solid gray; min-height: 20px; min-width:10px; margin: 5px;">
        </div>
</div>
<script>
    var root = document.getElementById('root');
    var rect =document.getElementById('rect');

    root.addEventListener('mousemove',function(e){
        rect.style.width = e.offsetX + "px";
        rect.style.height = e.offsetY + "px";
    });
  </script>
 </body>
</html>

【讨论】:

  • 如果这对你有用,请标记为答案以关闭线程。
【解决方案2】:

我发现了我的问题,简单的方法是设置指针事件:无;在“rect”.css 属性中, 或创建一个新的 CSS 选择器:

.rect.scaling{
    pointer-events: none;
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-04-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多