Я хочу добиться горизонтального клика и перетаскивания веб-сайта, он отлично работает в Chrome, но не в Firefox.
Моя проблема: Если щелкнуть и перетащить ссылки в Firefox, значок остановки появляется рядом с курсором и затем блокируется событие mouseup
.
Что я знаю: Проблема появляется только на ссылках, и я нашел этот пост ( javascript и перетаскивание в firefox ), который предлагает использовать addEventListener
на document
, но это не исправило это.
Старый код ниже (чтобы увидеть обновленный код, перейдите на codepen)
const slider = document.querySelector('.items');
let isDown = false;
let startX;
let scrollLeft;
document.addEventListener('mousedown', (e) => {
isDown = true;
slider.classList.add('active');
startX = e.pageX - slider.offsetLeft;
scrollLeft = slider.scrollLeft;
});
document.addEventListener('mouseleave', () => {
isDown = false;
slider.classList.remove('active');
});
document.addEventListener('mouseup', () => {
isDown = false;
slider.classList.remove('active');
});
document.addEventListener('mousemove', (e) => {
if(!isDown) return;
e.preventDefault();
const x = e.pageX - slider.offsetLeft;
const walk = (x - startX) * 3; //scroll-fast
slider.scrollLeft = scrollLeft - walk;
console.log(walk);
});
HTML
<div class="grid-container">
<main class="grid-item main">
<div class="items">
<a class="item item1" href="#"></a>
<a class="item item2" href="#"></a>
<a class="item item3"></a>
<a class="item item4"></a>
<div class="item item5"></div>
<div class="item item6"></div>
<div class="item item7"></div>
<div class="item item8"></div>
<div class="item item9"></div>
<div class="item item10"></div>
</div>
<p>Click & Drag <i>powered by Javascript</i></p>
</main>
</div>