Как можно замедлить прокрутку внутри блока?

Если прокручивать колесиком мышки

#table {
  height: 90px;
  overflow: auto;
}
<div id="table">
  <table>
    <tr><td>1</td></tr>
    <tr><td>2</td></tr>
    <tr><td>3</td></tr>
    <tr><td>4</td></tr>
    <tr><td>5</td></tr>
    <tr><td>6</td></tr>
    <tr><td>7</td></tr>
    <tr><td>8</td></tr>
    <tr><td>9</td></tr>
    <tr><td>10</td></tr>
  </table>
</div>

Хочу получить эффект, если допустим сделать колесиком мышки один раз вниз то прокрутить только на определенное количество пикселей вниз, например на 10px


Ответы (1 шт):

Автор решения: UModeL

document.querySelector('div#table').addEventListener('wheel', function(ev) {
  ev = window.event || ev;
  let delta = Math.max(-1, Math.min(1, (ev.wheelDelta || -ev.detail)));
  this.scrollTop -= (delta * 10); // количество пикселей = 10
  ev.preventDefault();
});
#table {
  height: 90px;
  overflow: hidden;
  box-shadow: inset 1px 3px 4px #000a;
}
<div id="table">
  <table>
    <tr><td>1</td></tr>
    <tr><td>2</td></tr>
    <tr><td>3</td></tr>
    <tr><td>4</td></tr>
    <tr><td>5</td></tr>
    <tr><td>6</td></tr>
    <tr><td>7</td></tr>
    <tr><td>8</td></tr>
    <tr><td>9</td></tr>
    <tr><td>10</td></tr>
  </table>
</div>

→ Ссылка