2017-05-31 96 views
1

如何在鼠标位置插入div?如何在鼠标位置插入div?

给定一个行 A picture dipicting a click between 2 divs, and an inserted element

你怎么能确定在一个div应插入内下图中红色圈是一个点击,引导列之间?

你可以得到的父元素很容易,通过https://developer.mozilla.org/en-US/docs/Web/API/Document/elementFromPoint

但我怎么能知道哪些div之间出现,特别是当这些列可以浮动或推/拉?

+0

我认为你可以使用'getBoundingClientRect()'来获取每'div'元素的位置和坐标,然后从'window'对象检索客户端的坐标。 –

回答

2

你可以替代强制用户点击最末端的元素,然后在它之前插入元素?如果这是一个选项,那么你可以做它像这样:

function printMousePos(event) { 
 
    var s = document.createElement('span'); 
 
    s.innerHTML = '|newDiv|'; 
 
    s.className = 'asterisk'; 
 
    elem = document.elementFromPoint(event.clientX, event.clientY); 
 
    //elem.innerHTML ="clientX: " + event.clientX + " - clientY: " + event.clientY; 
 
    elem.parentNode.insertBefore(s, elem); 
 
} 
 

 
document.addEventListener("click", printMousePos);
.row { background:#ddd; margin:5px; padding:5px; } 
 
.row > div { display:inline-block; } 
 
.new { background:yellow; }
<div class="row"> 
 
    <div class="somediv">|div|</div> 
 
    <div class="somediv2">|div|</div> 
 
    <div class="elem">|div|</div> 
 
    <div class="elem">|div|</div> 
 
    <div class="somediv3">|div|</div> 
 
    <div class="somediv4">|div|</div> 
 
</div> 
 
<div class="row"> 
 
    <div class="somediv">|div|</div> 
 
    <div class="somediv2">|div|</div> 
 
    <div class="elem">|div|</div> 
 
    <div class="elem">|div|</div> 
 
    <div class="somediv3">|div|</div> 
 
    <div class="somediv4">|div|</div> 
 
</div> 
 
<div class="row"> 
 
    <div class="somediv">|div|</div> 
 
    <div class="somediv2">|div|</div> 
 
    <div class="elem">|div|</div> 
 
    <div class="elem">|div|</div> 
 
    <div class="somediv3">|div|</div> 
 
    <div class="somediv4">|div|</div> 
 
</div>

点击一个div,以及一个新的div将收到被创建。

希望它可以帮助一些方向,

+0

这可能是我能够得到的最接近的,而不需要自己解析和检查边界框。 问题是我需要制定一个好的用户体验的方式分裂插入之前,并插入里面。 –

+1

@RyanTheLeach也许有人会发布一个更准确的答案,现在你可以去每个div上的两个适当大小的可点击框,onclick它会插入内部或之前相应。现在想不到更友好的用户界面。祝你好运:) –

+0

我可能只需要在上下文菜单上有多个选项。 –