Как сделать возможность скролить блок с помощью мыши, не используя скроллбар?

88
05 июля 2021, 02:50

Всем привет. Есть вот такой блок: скажите пожалуйста, что нужно сделать, чтобы была возможность скролить этот блок при зажатой левой клавиши мыши.

Answer 1

(function(){ 
let speed = 2; // Скорость скролла. 
 
let scroll = document.querySelector('.scroll'); 
 
let left = 0; // отпустили мышку - сохраняем положение скролла 
let drag = false; 
let coorX = 0; // нажали мышку - сохраняем координаты. 
 
scroll.addEventListener('mousedown', function(e) { 
  drag = true; 
  coorX = e.pageX - this.offsetLeft; 
}); 
document.addEventListener('mouseup', function() { 
  drag = false; 
  left = scroll.scrollLeft; 
}); 
scroll.addEventListener('mousemove', function(e) { 
  if (drag) { 
    this.scrollLeft = left + (e.pageX - this.offsetLeft - coorX)*speed; 
  } 
}); 
 
})();
.scroll { 
  position: relative; 
  overflow-x: auto; 
  overflow-y: hidden; 
  height: 200px; 
  white-space: nowrap; 
} 
 
.block { 
  display: inline-block; 
  height: 100%; 
  width: 80vw; 
  background-color: orange; 
  border-right: 3px solid #045acf; 
  -webkit-user-select: none; 
  -moz-user-select: none; 
  -ms-user-select: none; 
  user-select: none; 
}
<div class="scroll"> 
  <div class="block"></div 
  ><div class="block"></div 
  ><div class="block"></div 
  ><div class="block"></div 
  ><div class="block"></div> 
</div>

Можно запариться, измерять расстояние между точками нажатия и отпускания, разделить на пройденное время - в зависимости от этого числа поставить setInterval, который по инерции продолжит скроллить несколько миллисекунд.

READ ALSO
Очередь из входных параметров одной функции [дубликат]

Очередь из входных параметров одной функции [дубликат]

Необходимо создать поток, в котором будет функция и очередь разных параметров и он будет по мере добавления в очередь данных параметров запускать...

93
Ожидание добавления данных, если они используются где-то

Ожидание добавления данных, если они используются где-то

У меня есть событие, которое добавляет в список типа List данныеИ во всём остальном коде я использую этот список

82
Как добавить .dll файл в Xamarin.Forms проект?

Как добавить .dll файл в Xamarin.Forms проект?

В обычном C# проекте я просто скопировал этотdll в папку проекта и использовал

100
При компиляции сбитая кодировка

При компиляции сбитая кодировка

Сегодня поменяли ПК на более мощныйУстановили такую же версию Visual Studio (2015 Enterprise)

106