Из интереса попробовал написать range slider, что бы понять, как это должно работать, но столкнулся с проблемой:
var slider = document.querySelector('.slider');
var button = document.querySelector('.button');
slider.addEventListener('mousemove', function(e) {
var lg = document.querySelector('.cursor');
lg.innerHTML = 'Координаты мыши: ' + e.offsetX;
});
.slider {
background: blue;
height: 30px;
width: 500px;
}
.button {
background: red;
height: 30px;
width: 30px;
margin-left: 96px;
}
<div class="slider">
<div class="button"></div>
</div>
<hr>
<div class="info">
<span class="cursor"></span>
</div>
Должно работать так: вожу курсором по блоку slider, и обработчик события mousemove перемещает блок button.
Проблема заключается в том, что при наведении на блок button, событие возникает именно на нем. Есть ли способ игнорировать наведение на button, продолжая генерировать событие на slider?
Если нет, то каким ещё способом следует перемещать блок button внутри slider?
У вас проблема не в генерировании события, а в том, что вы берете e.offsetX,а при наведении на кнопку в e попадет кнопка, тоесть я предлагаю координаты брать с документа и отнимать от них оффсет слайдера с лева :
var slider = document.querySelector('.slider');
var button = document.querySelector('.button');
slider.addEventListener('mousemove', function(e) {
var lg = document.querySelector('.cursor');
lg.innerHTML = 'Координаты мыши: ' + (e.clientX - slider.offsetLeft);
});
.slider {
background: blue;
height: 30px;
width: 500px;
}
.button {
background: red;
height: 30px;
width: 30px;
margin-left: 96px;
}
<div class="slider">
<div class="button"></div>
</div>
<hr>
<div class="info">
<span class="cursor"></span>
</div>
Современные инструменты для криптотрейдинга: как технологии помогают принимать решения
Апостиль в Лос-Анджелесе без лишних нервов и бумажной волокиты
Основные этапы разработки сайта для стоматологической клиники
Продвижение своими сайтами как стратегия роста и независимости