Недавно мне надо было создать чат, и передо мной встала задача прокрутки скролла вниз у div , для того чтобы пользователь сразу увидел новое сообщение в чате. Сообщения чата, как Вы уже догадались, находились в div . Большинство программистов прокручивают скролл у div до низа неправильно, а в этом материале я покажу...

Как прокрутить скролл у div до низа

Недавно мне надо было создать чат, и передо мной встала задача прокрутки скролла вниз у div, для того чтобы пользователь сразу увидел новое сообщение в чате. Сообщения чата, как Вы уже догадались, находились в div. Большинство программистов прокручивают скролл у div до низа неправильно, а в этом материале я покажу, как делать это с максимально чистым кодом.

Для начала приведу HTML-код:

<div id="block">
  <p>Текст</p>
  <p>Текст</p>
  <p>Текст</p>
  <p>Текст</p>
  <p>Текст</p>
  <p>Текст</p>
</div>

Теперь продемонстрирую CSS-код, который необходим, чтобы появилась полоса прокрутки:

div {
  height: 100px;
  overflow: auto;
  width: 200px;
}

Теперь перейдём к прокрутке скролла у div. Большинство программистов делает так:

<script type="text/javascript">
  var block = document.getElementById("block");
  block.scrollTop = 9999;
</script>

Безусловно, данный способ рабочий. Но что если размер div огромен? Тогда полоса прокрутки уйдёт не до низа. Можно, конечно, поставить 99999999 и даже больше, но это смотрится ещё хуже. А ведь есть куда более простое и элегантное решение:

<script type="text/javascript">
  var block = document.getElementById("block");
  block.scrollTop = block.scrollHeight;
</script>

Здесь прокрутка уйдёт до самого низа div независимо от его размеров, плюс нет констант прямо в коде, которые всегда его портят.

И, наконец, его можно использовать не только для div, но и для самой страницы:

<script type="text/javascript">
  document.body.scrollTop = document.body.scrollHeight;
</script>

Как видите, всё очень просто. Также данный способ является кроссбраузерным, поэтому можете смело его использовать.