/
Вопросы и ответы
/
HTML
/

Как сделать прокрутку страницы в html

Как сделать прокрутку страницы в html

5 лет назад

Человек-Молекула

Ответы

0

Разрешить или запретить прокрутку страницы можно сделать с помощью элемента div и свойства overflow в CSS.

Например, создадим блок с классом scroll и применим к нему свойство overflow-y: scroll;:

1
2
3
<div class="scroll">
  <!-- Здесь будет контент, который будет прокручиваться -->
</div>

Теперь, если содержимое блока scroll превысит высоту блока, то появится полоса прокрутки, с помощью которой можно будет прокручивать содержимое.

4 года назад

Aleksey

0

Страница прокручивается сама, когда содержимое не помещается в окно. Обычно вопрос про одно из трёх: прокрутка внутри блока, плавная прокрутка к разделу или запрет прокрутки.

Прокрутка внутри блока

Блоку задают высоту и overflow:

1
2
3
4
.chat {
  height: 300px;
  overflow-y: auto;
}

auto показывает полосу прокрутки, только когда содержимое не помещается. scroll показывает её всегда. Горизонтальная прокрутка — overflow-x: auto, удобна для широких таблиц на телефоне.

Прокрутка к разделу по ссылке

1
2
3
<a href="#contacts">Контакты</a>

<section id="contacts">…</section>

Плавная прокрутка:

1
2
3
html {
  scroll-behavior: smooth;
}

Если наверху фиксированная шапка, она закроет заголовок раздела. Отступ задают так:

1
2
3
section {
  scroll-margin-top: 80px;
}

Кнопка «Наверх»

1
<button type="button" onclick="window.scrollTo({ top: 0, behavior: 'smooth' })">Наверх</button>

Прокрутить к элементу из JavaScript:

1
document.getElementById('contacts').scrollIntoView({ behavior: 'smooth' });

Запретить прокрутку страницы

Например, пока открыто модальное окно:

1
2
3
body.modal-open {
  overflow: hidden;
}

Класс добавляют при открытии окна и убирают при закрытии.

Прокрутки нет, хотя содержимое не помещается

  • у html или body задано overflow: hidden или height: 100vh;
  • у блока не задана высота, и он растягивается вместе с содержимым;
  • внутри flex-контейнера у дочернего блока не задан min-height: 0.

Лишняя горизонтальная прокрутка

Какой-то элемент шире экрана. Найти его поможет временное правило * { outline: 1px solid red; }.

Оформление страниц разбирают в курсе «Профессиональная вёрстка».

14 дней назад

Никита Вихров

+7 800 100 22 47

бесплатно по РФ

+7 495 085 21 62

бесплатно по Москве

108813 г. Москва, вн.тер.г. поселение Московский,
г. Московский, ул. Солнечная, д. 3А, стр. 1, помещ. 20Б/3
ОГРН 1217300010476
ИНН 7325174845