html поле с прокруткой

Как создать div блок с прокруткой?

html поле с прокруткой. Смотреть фото html поле с прокруткой. Смотреть картинку html поле с прокруткой. Картинка про html поле с прокруткой. Фото html поле с прокруткой
1. Что такое overflow в CSS?
2. Свойства и значения overflow
3. Принудительная установка вертикальной и горизонтальной прокрутки в блоке CSS
4. Пример div блока с прокруткой

В данной статье мы разберём вопрос создания блока (div) фиксированного размера с возможностью прокрутки по горизонтали и вертикали. Это можно реализовать средствами CSS. За это отвечает свойство overflow.

О полезном свойстве overflow

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

Код CSS

Свойства и значения overflow

Рассмотри пример класса CSS. В width и height устанавливаем нужные нам ширину и высоту блока (за них не будет выходить содержимое блока), а свойством overflow: auto; задаем прокрутку по горизонтали в случае надобности

Код CSS

Принудительная установка прокрутки в блоке CSS

Можно также принудительно создать прокрутку по высоте и ширине. Для этого каждой оси: overflow-y: scroll; (вертикаль) overflow-x: scroll; (горизонталь) укажем параметр scroll, принудительная прокрутка.

Код HTML и CSS

Пример div блока с прокруткой

Код HTML и CSS

Одно из свойств overflow можно убрать, тогда останется прокрутка только по одной оси, чего вполне достаточно.
Посмотреть работу скрипта на примере ниже.

Демонстрация Скачать исходники
Можно указать принудительную прокрутку только для одной оси. Для этого соответственно уберите строку либо с overflow-x, либо с overflow-y.

Спасибо за внимание! Надеюсь статья была полезна!

Источник

Как создать горизонтально прокручиваемые контейнеры

Контейнеры с горизонтальной прокруткой становятся все более популярными. Особенно среди мобильно оптимизированных сайтов, где они используются для уменьшения высоты веб-страниц.

html поле с прокруткой. Смотреть фото html поле с прокруткой. Смотреть картинку html поле с прокруткой. Картинка про html поле с прокруткой. Фото html поле с прокруткой

После реализации нескольких таких элементов я захотел выяснить, как с помощью минимального объема кода создать горизонтальную прокрутку, которая корректно работает, на всех типах пользовательских устройств.
Сначала создадим контейнер и дочерние div внутри него, которые будут прокручиваться по горизонтали.

Существует два способа сделать эти div горизонтально прокручиваемыми.

Метод пустого пространства

Вот CSS, который нам нужен. Никаких префиксов и jQuery. Простое использование overflow и еще одного свойства.

Метод Flexbox

Flexbox также может выполнить эту работу.

Мы используем flex-wrap для достижения того же эффекта, что и в предыдущем примере.
Поддержка браузерами решения на основе flexbox лучше. Оно работает в IE и Edge.

Overflow прокрутка

В iOS веб-страницы прокручиваются с импульсом ускорения. Если вы быстро протянете пальцем вверх или вниз, страница будет продолжать прокручиваться после того, как уберете палец. Если вы достигнете верхней или нижней части страницы, он а отскочит назад от конца контейнера, прежде чем встанет на место.
К счастью, эту проблему легко решить:

Теперь у нас есть прокрутка для горизонтального контейнера. Вот пример того, как это выглядит:

Полосы прокрутки

По умолчанию контейнер с прокручиваемым контентом будет иметь полосы прокрутки. Но что, если мы не хотим добавлять скроллинг? Такое решение легко реализовать. Хотя работает оно только в браузерах на WebKit.

Заключение

Контейнеры с горизонтальной прокруткой становится все более распространенными.Поэтому лучше сохранить эти примеры:они понадобятся вам в будущем. Также можно обернуть код в медиа-запрос и отобразить горизонтальную прокрутку только для определенных устройств. И никакой головной боли с jQuery!

Источник

Прокручиваемый HTML-блок

Создаем блок с прокручиваемым текстом с помощью CSS и HTML

html поле с прокруткой. Смотреть фото html поле с прокруткой. Смотреть картинку html поле с прокруткой. Картинка про html поле с прокруткой. Фото html поле с прокруткой

Прокручиваемый HTML-блок — это блок, в котором, когда его содержимое больше размеров самого блока, справа и снизу появляются полосы прокрутки. Другими словами, если у вас есть блок, в котором может поместиться около 50 слов, и у вас есть текст, состоящий из 200 слов, в прокручиваемом HTML-блоке появятся полосы прокрутки, чтобы вы могли видеть остальные 150 слов. В стандартном HTML-блоке дополнительный текст просто выходит за его границы.

Создать прокручиваемый HTML-блок ( скролл для сайта ) довольно просто.

Что делать с дополнительным текстом?

Когда текста больше, чем может поместиться в доступное пространство макета, у вас есть несколько вариантов:

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

HTML и CSS для этого :

Но для того, чтобы это сработало, также нужно задать для этого блока div свойства ширины и высоты, чтобы определить границы контейнера.

Вы можете добавить полосы прокрутки не только для текста

Если у вас есть большое изображение, которое вы хотите отображать на меньшем пространстве, можно добавить вокруг него полосы прокрутки так же, как и для текста.

В этом примере изображение размером 400 на 509 пикселей размещено внутри абзаца, размер которого составляет 300 на 300 пикселей.

Полосы прокрутки могут использоваться в таблицах

Длинные таблицы могут быть очень трудными для восприятия, но, помещая их в блок div ограниченного размера, а затем, добавляя свойство overflow ( как способ сделать скролл ), можно создавать таблицы с большим количеством данных, которые не займут слишком много пространства на странице,

Однако при этом имеет место один нюанс. В подобных случаях, как правило, также появляется горизонтальный скролл, потому что браузер предполагает, что, чтобы дать пользователю возможность просмотреть всю таблицу, нужны две полосы прокрутки.

Firefox поддерживает использование overflow для тегов TBODY

Дайте знать, что вы думаете по данной теме в комментариях. Мы очень благодарим вас за ваши комментарии, дизлайки, подписки, лайки, отклики!

Источник

Способы добавления плавной прокрутки страницы в CSS и JavaScript

Наверняка вы посещали страницы, которые плавно прокручивают контент при клике на ссылке к соответствующему блоку. Это красиво выглядит на лэндингах (LandingPage, или посадочная страница), в которых пространство страницы разбито на части, или в больших статьях с содержанием. Такая прокрутка называется скроллингом (от англ. scroll).

Однако, это не только красиво, но и достаточно просто с точки зрения реализации.

Прокрутка страницы с помощью CSS

Если плавная прокрутка необходима в пределах какого-то контейнера, то это свойство назначают для него.

Примечание: в каждом примере есть 5 ссылок вверху для прокрутки к блокам текста и ссылка со стрелкой в правом нижнем углу для возврата наверх страницы. Используйте их для тестов свойств и методов для плавного скроллинга страницы.

Ложкой дегтя для этого свойства будет неполная поддержка его браузерами. Вы можете посмотреть, какова она на скриншоте и на caniuse.com.

html поле с прокруткой. Смотреть фото html поле с прокруткой. Смотреть картинку html поле с прокруткой. Картинка про html поле с прокруткой. Фото html поле с прокруткой

Поддержка свойства scroll-behavor браузерами

Поэтому рассмотрим, как сделать плавную прокрутку с помощью jQuery и JavaScript.

Скроллинг с помощью jQuery

Сам код будет небольшим:

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

Здесь тоже есть 3 решения, каждое из которых использует свой подход к созданию плавности прокрутки с помощью разных JS-методов.

Решение 1. Метод scrollIntoView()

Из документации на MDN узнаем, что

Метод Element.scrollIntoView() прокручивает текущий контейнер родителя элемента, так, чтобы этот элемент, на котором был вызван scrollIntoView() был видим пользователю.

Этот метод имеет параметры, подобные css-свойству scroll-behavior: smooth для прокрутки контента к элементу с нужным id, указанным в виде хэш в ссылке.

К сожалению, и тут не обошлось без «ложки дегтя» в виде поддержки браузеров. Давайте обратимся к caniuse.com и увидим такую картину:

html поле с прокруткой. Смотреть фото html поле с прокруткой. Смотреть картинку html поле с прокруткой. Картинка про html поле с прокруткой. Фото html поле с прокруткой

Поддержка свойства scrollIntoView браузерами

К сожалению, нужное нам значение свойства behavior: ‘smooth’ поддерживается не всеми браузерами.

Пример прокрутки контента с помощью метода scrollIntoView() (открыть в новой вкладке)).

Решение 2. Используем window.scrollBy() для плавной прокрутки.

Тут все методы и свойства и имеют хорошую поддержку браузерами.

Код JavaScript предполагает, что на вашей странице нет абсолютно позиционированной или фиксированной шапки сайта (элемент ), в котором чаще всего размещаются ссылки-якоря на разделы страницы, поэтому переменная offsetTop (смещение сверху) сначала задана как 0.

Источник

Практика использования спецификации CSS Scroll Snap

Часто ли у вас возникало желание воспользоваться какой-нибудь возможностью CSS, позволяющей, без лишних усилий, создать элемент-контейнер, поддерживающий прокрутку? CSS, что очень хорошо, даёт нам такую возможность. Я, когда только начинал заниматься фронтенд-разработкой, пользовался для создания прокручиваемых элементов JavaScript-плагинами. Но иногда нужно что-то такое, что позволяет создавать подобные элементы просто и быстро, без привлечения JavaScript. Сделать это можно, воспользовавшись спецификацией CSS Scroll Snap.

html поле с прокруткой. Смотреть фото html поле с прокруткой. Смотреть картинку html поле с прокруткой. Картинка про html поле с прокруткой. Фото html поле с прокруткой

Здесь я хочу раскрыть основы практического использования этой спецификации. Я сам только недавно разобрался с CSS Scroll Snap, поэтому рассказывать всё это буду, так сказать, «по горячим следам».

Зачем использовать CSS Scroll Snap?

С ростом популярности мобильных телефонов и планшетов растёт и необходимость разработки компонентов веб-страниц, прокручивать которые удобно, пользуясь сенсорными экранами, и, в частности, жестами, известными как «свайпы». Возьмём, например, компонент, реализующий галерею изображений. Пользователь может легко, пользуясь «свайпами», направленными влево или вправо, листать галерею, изображения в которой расположены горизонтально. С таким компонентом удобнее работать, чем с компонентом, содержимое которого нужно прокручивать по вертикали.

html поле с прокруткой. Смотреть фото html поле с прокруткой. Смотреть картинку html поле с прокруткой. Картинка про html поле с прокруткой. Фото html поле с прокруткой

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

Одной из основных причин появления спецификации CSS Scroll Snap является обеспечение разработчиков удобными средствами для организации хорошо контролируемой прокрутки содержимого страниц. Это позволяет расширить пользовательский опыт и упростить реализацию механизмов страниц, предусматривающих использование прокрутки.

Основы работы с контейнерами, поддерживающими прокрутку

Для того чтобы создать элемент-контейнер, поддерживающий прокрутку, понадобится следующее:

html поле с прокруткой. Смотреть фото html поле с прокруткой. Смотреть картинку html поле с прокруткой. Картинка про html поле с прокруткой. Фото html поле с прокруткой

Контейнер, поддерживающий прокрутку элементов

Это — база, на основе которой создаются контейнеры, поддерживающие прокрутку. Но для достижения нашей цели одного этого недостаточно. Для того чтобы с подобным контейнером было бы удобно работать, над ним ещё надо потрудиться.

Проблема контейнеров, поддерживающих прокрутку содержимого

Проблема нашего контейнера заключается в том, что он не даёт пользователю тех же удобств, что и использование «свайпов». Главная сильная сторона подобных жестов, выполняемых на сенсорном экране, заключается в том, что они позволяют удобно, одним пальцем, листать содержимое страниц, выводимое горизонтально или вертикально.

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

html поле с прокруткой. Смотреть фото html поле с прокруткой. Смотреть картинку html поле с прокруткой. Картинка про html поле с прокруткой. Фото html поле с прокруткой

Работа с обычным контейнером, поддерживающим прокрутку

Как видите, каждый элемент приходится буквально «вести» на его место, не отрывая палец от экрана. Это — не «свайп» и это очень неудобно с точки зрения пользователя. Но, используя возможности CSS Scroll Snap, мы можем решить эту проблему, просто описав точки привязки (snap point), которые упростят горизонтальную или вертикальную прокрутку содержимого страницы.

Знакомство с CSS Scroll Snap

Для того чтобы воспользоваться возможностями CSS Scroll Snap дочерние элементы должны выводиться внутри контейнера в inline-режиме. Сделать это можно с использованием одного из вышеописанных методов. Я использую для этих целей Flexbox-макет.

Теперь нам, чтобы спецификация CSS Scroll Snap заработала бы, нужно воспользоваться ещё парой свойств. Главный вопрос тут заключается в том, куда именно их нужно добавить.

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

html поле с прокруткой. Смотреть фото html поле с прокруткой. Смотреть картинку html поле с прокруткой. Картинка про html поле с прокруткой. Фото html поле с прокруткой

Элементы привязаны к началу контейнера

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

▍Свойство scroll-snap-type

▍Оси контейнера

Оси контейнера представляют собой направления прокрутки содержимого этого контейнера. Прокрутка может осуществляться по горизонтали или по вертикали. Значение x указывает на горизонтальную прокрутку, значение y — на вертикальную.

html поле с прокруткой. Смотреть фото html поле с прокруткой. Смотреть картинку html поле с прокруткой. Картинка про html поле с прокруткой. Фото html поле с прокруткой

Горизонтальная прокрутка и вертикальная прокрутка

▍Настройка жёсткости привязки

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

html поле с прокруткой. Смотреть фото html поле с прокруткой. Смотреть картинку html поле с прокруткой. Картинка про html поле с прокруткой. Фото html поле с прокруткой

Элементы жёстко привязаны к началу контейнера

Здесь можно найти видео к этому примеру.

html поле с прокруткой. Смотреть фото html поле с прокруткой. Смотреть картинку html поле с прокруткой. Картинка про html поле с прокруткой. Фото html поле с прокруткой

Прокрутка с привязкой

А вот — интерактивный вариант этого примера.

html поле с прокруткой. Смотреть фото html поле с прокруткой. Смотреть картинку html поле с прокруткой. Картинка про html поле с прокруткой. Фото html поле с прокруткой

Работа с интерактивным вариантом примера

Самое приятное тут то, что при прокрутке элементов, делается ли это на компьютере, с использованием мыши, или на сенсорном экране, можно буквально почувствовать то, как элементы «притягиваются» к началу контейнера.

html поле с прокруткой. Смотреть фото html поле с прокруткой. Смотреть картинку html поле с прокруткой. Картинка про html поле с прокруткой. Фото html поле с прокруткой

Элементы привязаны к началу контейнера менее жёстко

html поле с прокруткой. Смотреть фото html поле с прокруткой. Смотреть картинку html поле с прокруткой. Картинка про html поле с прокруткой. Фото html поле с прокруткой

Последствия использования значения proximity

▍Свойство scroll-snap-align

Для того чтобы лучше разобраться в этих значениях — взгляните на следующий рисунок. Представим, что в контейнере имеется магнит, который позволяет нам контролировать точки привязки содержимого контейнера. Рассмотрим действие этого «магнита» на содержимое контейнера, ориентированное по горизонтали.

html поле с прокруткой. Смотреть фото html поле с прокруткой. Смотреть картинку html поле с прокруткой. Картинка про html поле с прокруткой. Фото html поле с прокруткой

Значения свойства scroll-snap-align и их влияние на содержимое, расположенное в контейнере по горизонтали

html поле с прокруткой. Смотреть фото html поле с прокруткой. Смотреть картинку html поле с прокруткой. Картинка про html поле с прокруткой. Фото html поле с прокруткой

Значения свойства scroll-snap-align и их влияние на содержимое, расположенное в контейнере по вертикали

Ниже приведено несколько видеопримеров.

▍Привязка содержимого к началу контейнера

При установке свойства scroll-snap-align в значение start содержимое контейнера привязывается к его началу.

html поле с прокруткой. Смотреть фото html поле с прокруткой. Смотреть картинку html поле с прокруткой. Картинка про html поле с прокруткой. Фото html поле с прокруткой

Привязка содержимого к началу контейнера

▍Привязка содержимого к центру контейнера

При установке свойства scroll-snap-align в значение center содержимое контейнера привязывается к его центру.

html поле с прокруткой. Смотреть фото html поле с прокруткой. Смотреть картинку html поле с прокруткой. Картинка про html поле с прокруткой. Фото html поле с прокруткой

Привязка содержимого к центру контейнера

▍Привязка содержимого к концу контейнера

При установке свойства scroll-snap-align в значение end содержимое контейнера привязывается к его концу.

html поле с прокруткой. Смотреть фото html поле с прокруткой. Смотреть картинку html поле с прокруткой. Картинка про html поле с прокруткой. Фото html поле с прокруткой

Привязка содержимого к концу контейнера

▍Использование свойства scroll-snap-stop

Вот видеодемонстрация прокрутки списка, созданного с использованием вышеописанных стилей. Если список прокручивать слишком быстро, можно легко «проскочить» через три-четыре элемента.

html поле с прокруткой. Смотреть фото html поле с прокруткой. Смотреть картинку html поле с прокруткой. Картинка про html поле с прокруткой. Фото html поле с прокруткой

При слишком быстрой прокрутке некоторые элементы можно пропустить

Вот соответствующие стили:

html поле с прокруткой. Смотреть фото html поле с прокруткой. Смотреть картинку html поле с прокруткой. Картинка про html поле с прокруткой. Фото html поле с прокруткой

Браузер не позволяет пропускать элементы

В результате пользователь, выполнив одно движение, может прокрутить список лишь на один элемент. Благодаря этому можно предотвратить пропуск важных элементов. При таком подходе каждая точка привязки будет напоминать знак «STOP».

html поле с прокруткой. Смотреть фото html поле с прокруткой. Смотреть картинку html поле с прокруткой. Картинка про html поле с прокруткой. Фото html поле с прокруткой

Точки привязки — это, при использовании значения always, то же самое, что и знаки «STOP»

html поле с прокруткой. Смотреть фото html поле с прокруткой. Смотреть картинку html поле с прокруткой. Картинка про html поле с прокруткой. Фото html поле с прокруткой

Эксперименты со свойством scroll-snap-stop

▍Внутренние отступы и свойство scroll-padding

Вот стили, соответствующие сценарию горизонтальной прокрутки:

html поле с прокруткой. Смотреть фото html поле с прокруткой. Смотреть картинку html поле с прокруткой. Картинка про html поле с прокруткой. Фото html поле с прокруткой

Использование свойства scroll-padding при реализации горизонтальной прокрутки

То же самое применимо и к контейнерам с вертикальной прокруткой:

html поле с прокруткой. Смотреть фото html поле с прокруткой. Смотреть картинку html поле с прокруткой. Картинка про html поле с прокруткой. Фото html поле с прокруткой

Использование свойства scroll-padding при реализации вертикальной прокрутки

▍Внешние отступы и свойство scroll-margin

html поле с прокруткой. Смотреть фото html поле с прокруткой. Смотреть картинку html поле с прокруткой. Картинка про html поле с прокруткой. Фото html поле с прокруткой

Использование свойства scroll-margin

Способы использования CSS Scroll Snap

▍Список изображений

CSS Scroll Snap отлично подходит для создания списка изображений. Благодаря этому работать с таким списком будет гораздо удобнее, чем с использованием обычной прокрутки.

html поле с прокруткой. Смотреть фото html поле с прокруткой. Смотреть картинку html поле с прокруткой. Картинка про html поле с прокруткой. Фото html поле с прокруткой

Прокручиваемый список изображений

Вот интерактивный вариант этого примера.

html поле с прокруткой. Смотреть фото html поле с прокруткой. Смотреть картинку html поле с прокруткой. Картинка про html поле с прокруткой. Фото html поле с прокруткой

Эксперименты со списком изображений

▍Список друзей

Список друзей — это ещё один отличный способ использования CSS Scroll Snap. Нижеприведённый пример взят с Facebook (то есть — перед нами — реальный пример).

html поле с прокруткой. Смотреть фото html поле с прокруткой. Смотреть картинку html поле с прокруткой. Картинка про html поле с прокруткой. Фото html поле с прокруткой

Вот CSS-код к этому примеру:

html поле с прокруткой. Смотреть фото html поле с прокруткой. Смотреть картинку html поле с прокруткой. Картинка про html поле с прокруткой. Фото html поле с прокруткой

Без использования свойства padding-bottom тень выводится не полностью

▍Список аватаров

html поле с прокруткой. Смотреть фото html поле с прокруткой. Смотреть картинку html поле с прокруткой. Картинка про html поле с прокруткой. Фото html поле с прокруткой

Этот подход хорош для тех случаев, когда нужно, чтобы аватар располагался бы по центру контейнера.

Здесь с этим примером можно поэкспериментировать.

html поле с прокруткой. Смотреть фото html поле с прокруткой. Смотреть картинку html поле с прокруткой. Картинка про html поле с прокруткой. Фото html поле с прокруткой

Эксперименты со списком аватаров

▍Список разделов, занимающих всю доступную высоту области просмотра страницы

Использование спецификации CSS Scroll Snap может пригодиться и при реализации сценариев вертикальной прокрутки элементов. Например — при организации работы с элементами, занимающими всю высоту области просмотра страницы.

html поле с прокруткой. Смотреть фото html поле с прокруткой. Смотреть картинку html поле с прокруткой. Картинка про html поле с прокруткой. Фото html поле с прокруткой

Элементы, занимающие всю высоту области просмотра страницы

Вот разметка к этому примеру:

Здесь можно найти рабочий вариант этого примера.

html поле с прокруткой. Смотреть фото html поле с прокруткой. Смотреть картинку html поле с прокруткой. Картинка про html поле с прокруткой. Фото html поле с прокруткой

Элементы, занимающие всю доступную высоту области просмотра страницы

▍Значения inline и block свойства scroll-snap-type

В данном примере значение inline представляет горизонтальное измерение в горизонтальных режимах вывода данных, например — в английском языке. А для языков вроде японского значение inline будет представлять вертикальное измерение.

Подробнее о логических CSS-свойствах можно почитать здесь.

▍Доступность

При применении спецификации CSS Scroll Snap стоит помнить о доступности контента. Вот пример плохого использования этой спецификации. Здесь настройки прокрутки мешают пользователю свободно читать выводимые материалы.

html поле с прокруткой. Смотреть фото html поле с прокруткой. Смотреть картинку html поле с прокруткой. Картинка про html поле с прокруткой. Фото html поле с прокруткой

Прокрутить текст так, как показано справа, при таком подходе нельзя. Дело в том, что при прокрутке осуществляется привязка заголовков к началу контейнера

html поле с прокруткой. Смотреть фото html поле с прокруткой. Смотреть картинку html поле с прокруткой. Картинка про html поле с прокруткой. Фото html поле с прокруткой

Неудачное использование CSS Scroll Snap

Пожалуйста, постарайтесь так не делать!

Пользуетесь ли вы возможностями CSS Scroll Snap в своих проектах?

Источник

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *