鍍金池/ 問(wèn)答/Python  數(shù)據(jù)庫(kù)  HTML/ JS mousemove事件監(jiān)聽(tīng)問(wèn)題?

JS mousemove事件監(jiān)聽(tīng)問(wèn)題?

<div class="colorPanel">
    <div class="selector"><span></span></div>
    <div class="bg bg1"></div>
    <div class="bg bg2"></div>
</div>

這是結(jié)構(gòu)代碼

$(document).ready(function () {
    var eventCrit = false;
    var colorPanel = $('div.colorPanel');
    colorPanel.mousedown(function(e) {
        eventCrit = true;
        handleMousemove(event, colorPanel);
    });
    $(document).mousemove(function(e) {
        if(!eventCrit) return;
            handleMousemove(event, colorPanel);
    });
    colorPanel.mouseup(function(e) {
        eventCrit = false;
    });    
});
var handleMousemove = function (event, element) {
    event.preventDefault();
    var leftValue = (event.offsetX / element.width()) * 100 + '%';
    var topValue = (event.offsetY / element.height()) * 100 + '%';
    var selector = $('.selector');
    console.log(leftValue, topValue);
    selector.css({left: leftValue, top: topValue});
}

這是一個(gè)調(diào)色板的Demo,在鼠標(biāo)移動(dòng)的時(shí)候,出現(xiàn)了不正常的值:

clipboard.png

我確定我移動(dòng)的方向無(wú)錯(cuò)誤,但是在第四行和倒數(shù)第三行出現(xiàn)了不正常的數(shù)值,是我的代碼問(wèn)題嗎?
在百度、Google、問(wèn)人后無(wú)果,請(qǐng)大神解惑,感激。

回答
編輯回答
笨笨噠

element.width()element.height() 提前保存起來(lái)看看

2017年7月11日 16:29
編輯回答
孤星

給div.selector元素添加上pointer-events: none;樣式即可
問(wèn)題是由于在觸發(fā)mousemove事件時(shí),鼠標(biāo)移動(dòng)到了這個(gè)圖標(biāo)元素上,所以造成了該問(wèn)題
給元素加上pointer-events: none;表示鼠標(biāo)事件穿透該元素并指定該元素下面的某個(gè)元素
如果你想了解pointer-events屬性,MDN有給出詳細(xì)解釋:
https://developer.mozilla.org...

2018年6月2日 08:53
編輯回答
青黛色

遇到這種問(wèn)題,你自己在打印的時(shí)候詳細(xì)一點(diǎn),把計(jì)算該數(shù)值的每一項(xiàng)都打印一下,找到是哪項(xiàng)不一樣了再去找為什么,現(xiàn)有的代碼也看不出啥~~

2018年4月20日 10:31