2017-07-03 72 views
0

我有一個overflow-x:auto的元素,我希望能夠點擊這個元素內部並確定左偏移量(在px中)元素的左邊緣。問題是這個元素包含了其中的一些其他元素,所以我不能只使用MouseEvent上的原始offsetX屬性,就好像我不小心點擊了其中一個嵌套div,它會給我左偏移量內部div的邊緣,而不是我想成爲目標的元素。確定一個mouseEvent從一個溢出-x特定元素的offsetX:自動

此外,我不能只使用MouseEvent.clientX - element.offsetLeft,就像我滾動到元素中一樣,它不會返回佔用現在隱藏的滾動過去部分的值我的元素。

我該怎麼做: 1 - 確定鼠標事件的X位置和我元素的左邊緣之間的距離?

OR

2 - 創建一個解決辦法以某種方式指定的MouseEvent的目標(這是一個只讀屬性,所以我不能確定,如果這甚至有可能)?

我使用的是Typescript和Angular4,我不想使用jQuery,所以請不要提供基於jQuery的解決方案。謝謝!

謝謝。

回答

0

EDIT 這也可以通過使用HTML DOM屬性scrollLeft想出一個溶液的容器元素


上完成的。

我們可以確保當OFFSETX屬性是關於我們的容器元素僅執行鼠標移動邏輯通過增加一個條件,像這樣:

if (mouseMoveEvent.clientX - myElement.offsetLeft) <= mouseMoveEvent.offsetX) { 
    // Handle mousemove 
} 
else { 
    // Do nothing 
} 

在這種溢出-X的情況下:汽車元素,mouseMoveEvent.offsetX只應該大於或等於(mouseMoveEvent.clientX - this.element.offsetLeft)。

因此,如果不是這樣,那意味着我們的mouseMoveEvent.offsetX屬性是針對一個內部元素,我們可以跳過這種情況下的邏輯。

相關問題