2017-05-31 149 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

我可能只需要在上下文菜單上有多個選項。 –