Перейти к содержимому

Как отключить горизонтальную прокрутку css

  • автор:

Как убрать горизонтальную полосу прокрутки | CSS

Искл., ежели содержимым является элемент, у которого свойство position имеет значение fixed .

длина окна:

 div 
тысячадевятьсотдевяностодевятикилограммовый

То есть если элемент при direction: ltr; уводить за левый (при direction: rtl; — за правый) край страницы, то горизонтальной полосы прокрутки не будет.

direction: rtl;

 
тысячадевятьсотдевяностодевятикилограммовый

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

длина окна:

 html, body тысячадевятьсотдевяностодевятикилограммовый

Следует доработать вёрстку: при отзывчивой, сделанной специалистом, хорошо разбирающимся в CSS, проблем не должно возникать

длина окна:

 body тысячадевятьсотдевяностодевятикилограммовый

Как отключить горизонтальную прокрутку css

Горизонтальная прокрутка в веб-дизайне: стоит ли ее использовать?

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

В этом есть смысл – практически каждая веб-страница структурирует свое содержимое по вертикали. Чтобы увидеть больше, просто прокрутите вниз с помощью мыши, трекпада или клавиатуры. Некоторые веб-сайты могут попытаться улучшить взаимодействие с пользователем с помощью анимированных всплывающих элементов или эффектов параллакса. Даже в этом случае ориентация прокрутки почти всегда остается вертикальной.

Вертикальная прокрутка работает отлично … но как насчет ее аналога по оси X, горизонтальной прокрутки? Вы могли подумать о добавлении этой более редкой функции на свой сайт. Но является ли метод горизонтальной прокрутки интуитивно понятным или даже полезным? Это лучше вертикальной прокрутки? И как это может обогатить ваш UX?

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

Что такое горизонтальная прокрутка?

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

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

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

Недостатки горизонтальной прокрутки

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

Это нарушает ожидания пользователей.

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

Это нормально – время от времени нарушать правила дизайна, чтобы добавить визуального чутья и изюминки. Но игнорирование этой конкретной конвенции без четкой цели смутит и расстроит посетителей больше, чем увлечет. И многие просто предполагают, что ваша страница / элемент страницы сломан.

А как насчет сенсорных экранов? В то время как появление интеллектуальных мобильных технологий нормализовало жесты бокового смахивания (глядя на вас, Tinder), пользователи, естественно, будут прокручивать мобильный веб-сайт вниз, если их не попросят. Таким образом, обычно лучше оставить вертикальную прокрутку как на настольных, так и на мобильных сайтах.

У него высокая стоимость взаимодействия.

С точки зрения UX, стоимость взаимодействия – это количество усилий, которые требуется пользователю для выполнения действия, такого как взаимодействие с элементом страницы. Стоимость взаимодействия складывается из (1) того, насколько усердно нам приходится думать о задаче и (2) физических усилий, необходимых для выполнения задачи.

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

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

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

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

Его легко упустить или проигнорировать.

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

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

Это создает проблемы для доступности.

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

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

Когда работает горизонтальная прокрутка

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

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

Чтобы скрыть вторичный контент

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

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

Отображение предложений по категориям

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

Сайты электронной торговли используют этот метод для разделения своего каталога на типы товаров. Стриминговые платформы делают то же самое со своими фильмами и сериалами. Посмотрите, как Netflix интегрирует горизонтальную прокрутку в свой пользовательский интерфейс:

Также обратите внимание, что этот пример предлагает альтернативу прокрутки – кнопки со стрелками.

Навигация по большому изображению или визуальному элементу

Иногда один элемент может быть слишком большим для вашей страницы, и вы хотите уместить его в меньший элемент окна. Карты, изображения с большим количеством деталей и растянутые визуализации, такие как временные шкалы, – все это представляет собой проблему дизайна. Чтобы помочь пользователям перемещаться и исследовать большую 2D-плоскость, рассмотрите возможность использования горизонтальной прокрутки.

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

Рекомендации по горизонтальной навигации

  1. Избегайте горизонтальной прокрутки на полных веб-страницах.
  2. Включите другие методы взаимодействия.
  3. Создавайте горизонтальные полосы прокрутки как вертикальные полосы прокрутки.
  4. Сделайте вариант горизонтальной прокрутки визуально заметным.

Итак, вы думаете, что горизонтальная навигация имеет место на вашем сайте? Вот несколько рекомендаций, о которых следует помнить:

1 Избегайте горизонтальной прокрутки полных веб-страниц.

Горизонтальная прокрутка никогда не должна заменять вертикальную прокрутку на всей веб-странице. Нарушение этого правила оттолкнет большинство пользователей.

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

В этом примере пользователь выполняет прокрутку вниз. Поначалу появление СМИ справа неожиданно, но вы быстро улавливаете, что происходит.

2 Включите другие методы взаимодействия.

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

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

3 Создайте горизонтальные полосы прокрутки как вертикальные полосы прокрутки.

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

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

4 Сделайте вариант горизонтальной прокрутки визуально заметным.

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

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

Или попробуйте показать фрагмент скрытого содержимого в прокручиваемом контейнере. Сайты электронной коммерции, такие как Patagonia, делают это для списков продуктов – обратите внимание на миниатюры продуктов, торчащие с обеих сторон контейнера для дисплея:

Горизонтальная прокрутка в веб-дизайне: стоит ли ее использовать?

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

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

Когда элемент HTML – скажем,

Чтобы включить горизонтальную прокрутку, мы можем использовать свойство CSS overflow-x. Если присвоить значение прокрутки для переполнения х свойства элемента контейнера, браузер будет скрывать горизонтально перелив содержания и сделать его доступным с помощью горизонтальной прокрутки. Чтобы это работало, необходимо указать ширину как элемента контейнера, так и дочернего элемента (элемента в контейнере).

В этом примере я создал контейнерный элемент

с установленной шириной 1000 пикселей. Поскольку ширина

Вот HTML-код моего примера:

А вот соответствующий CSS-код:

Хотите конкретизировать причудливый элемент горизонтальной прокрутки? CSS Tricks, Codeburst и UX Collective предлагают подробные руководства, на которые вы можете ссылаться для создания пользовательских контейнеров.

Как отключить горизонтальную прокрутку

Если вы не установите ширину дочернего элемента в его родительском

Другое решение – установить ширину дочерних элементов на 100%. Это указывает дочернему содержимому переходить к следующей строке, чтобы избежать обрезки краем контейнера, независимо от ширины контейнера.

Прокрутка вбок

Для большинства из нас вертикальная прокрутка – это рефлекс, просто она имеет больше смысла, чем ее горизонтальная альтернатива. Однако горизонтальная прокрутка все же нашла место в современном веб-дизайне. При умеренном и преднамеренном внедрении этот метод может помочь структурировать ваши страницы и представить контент в удобной форме.

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

Как убрать горизонтальную прокрутку сайта

«…у меня проблема, если параметр padding: 20px; меняю хоть на 1 пиксель меньше 20ти то появляется горизонтальная прокрутка, что только не пробовал, кстати у вас она (прокрутка) тоже имеет место быть. Как избавится от этого?» Этот вопрос возник в одном из комментариев к статье о резиновой теме F2. В тот момент я не смог адекватно ответить и подсказать посетителю, как решить его проблему, потому как, у меня на мониторе горизонтальная прокрутка отсутствовала. Спустя некоторое время, работая с другой темой, я обратил внимание на появившуюся горизонтальную прокрутку в нижней части окна браузера. Возвращать изменённые коды в таблице стилей в исходное состояние не стал, а дописал маленькую строчку, которая выглядит вот так:
overflow-x: auto;

Вставить её нужно в блок: body

font-family: Georgia, Arial, Helvetica, sans-serif;

margin: 0px; padding: 0px;

background-size: color: #102722;

Не забудьте обновить файл, а затем, обновить страницу сайта. Прокрутка должна исчезнуть. Но, если полоса прокрутки всё же отображается, проверьте, какой масштаб страницы у вас установлен, он может быть увеличен. Не обязательно менять масштаб, может вам удобнее читать страницу именно в таком масштабе. Нужно лишь вместо слова «auto» вписать слово «hidden«, т.е., запретить прокрутку полностью, вот так:

Теперь, горизонтальная прокрутка уже точно не будет отображаться.

Поделиться ссылкой:
Ещё из этой рубрики

Как скрыть логин админа из Html — кода
Содержание:1 Как узнать имя админа2 Поделиться ссылкой: Как узнать имя админа Здравствуйте друзья! В предыдущей статье мы вроде бы как, затруднили взлом сайта путём изменения имени/логина администратора. Но.

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

Как убрать кавычки из виджета «Рубрики» в шаблоне F2
Содержание:1 Спрятать или заменить символ Юникода Поделиться ссылкой: Спрятать или заменить символ Юникода В последнее время участились вопросы посетителей о том, как убрать “стрелочки” слева от ссылок.

Как создать градиенты в теме F2 без сервиса и без редакторов
Содержание:1 Как вставить линейный градиент в шапку блога2 Поделиться ссылкой: Как вставить линейный градиент в шапку блога Здравствуйте уважаемые друзья, подписчики и просто интересующиеся. В статье: “Дизайн сайдбаров в.

Как вставить картинку в шапку темы F2
Приветствую Вас, Друзья! Эта статья является продолжением предыдущего поста: Как сделать резиновую шапку для сайта. Сейчас мы рассмотрим, как изменять шрифты и их размер в заголовке и подзаголовке, как.

9 комментариев

Чудны дела твои, господи! Михаил, вчера я точно туда и вставляла эту строку и ни-че-го! А сейчас, пока календарь дописываю, нате, вам, пожалуйста. Как хочешь, так и понимай. В любом случае-спасибо. Пусть мне это особо не мешало, но приятнее без этих хвостов.

У меня все, как всегда-не срабатывает. Пол сантиметра прокрутки как было, так и есть.

Оксана, а ссылка есть на сайт? Я хочу посмотреть.

О! Что-то мне этот комментарий не пришел. Ссылка есть, конечно. greens-avenue.ru Но я удалила эти записи, раз не сработало. Добавить назад?

Оксана, а у меня есть вход на Ваш сайт? Я уже не помню, делали мы на этот сайт вход.

На него крооме меня никто входа не имеет ��

Оксана, если хотите, добавьте меня в пользователи, придумайте мне временный пароль и имя, и присвойте мне временно роль Администратор. Я зайду в админку и впишу код куда нужно. Потом переприсвоите роль на Подписчик или совсем удалите (по желанию). Имя и пароль пришлите мне по почте, чтобы в третьи руки не попало.

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

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

Отключить горизонтальную прокрутку

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

Я искал результаты, но они просто сделали полосу прокрутки HIDDEN

Теперь это то, что я хочу, я хочу физически DISABLE функцию горизонтальной прокрутки. Я не хочу, чтобы пользователь мог прокручивать слева направо мою страницу только вверх и вниз!

Я пробовал: overflow-x:hidden в css на моем теге html , но он только сделал полосу прокрутки скрытой и не отключил прокрутку.

Пожалуйста, помогите мне!

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

Это когда загружаются первые страницы:

enter image description here

И это после того, как я прокручу вправо:

enter image description here

12 ответов

Я создал UITableView с небольшой рамкой, например (0,0,50,50). Я хочу отключить горизонтальную прокрутку, но сохранить вертикальную прокрутку. Я установил self.table.bounces = NO , но tableview также не может быть прокручен вертикально. В результате анимация получается не такой уж совершенной. Так.

У меня есть UIView , как трамплин iPhone. Я создал его, используя UIScrollView и UIButtons . Я хочу отключить горизонтальную прокрутку на указанном scrollview. Я хочу только вертикальную прокрутку. Как я могу добиться этого?

Попробуйте добавить это в свой CSS

это мерзкое дитя вашего кода ��

замените его на

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

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

Я видел, как кто-то делал что-то подобное, но, очевидно, это не сработало. Однако это прекрасно работает для меня.

Я знаю , что уже слишком поздно, но в javascript есть подход, который может помочь вам обнаружить, что элемент html вызывает горизонтальное переполнение -> полоса прокрутки

Вот ссылка на пост о CSS трюках

это может вернуть что-то вроде этого:

затем вы просто удаляете дополнительную ширину из div или устанавливаете ее max-width:100%

Надеюсь, это поможет!

Это исправило проблему для меня :]

Попробуйте этот вариант, чтобы отключить прокрутку по ширине только для тела , весь документ просто является телом body

koala_dev ответил, что это сработает:

И MarkWPiper комментарии, которые «:-/ вызвали прокрутку касания / импульса, чтобы перестать работать на iPhone»

Решение для сохранения контакта / импульса на iPhone состоит в том,чтобы добавить эту строку внутри блока css для html, тела:

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

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

Есть ли способ отключить правую горизонтальную прокрутку, но разрешить левую горизонтальную прокрутку? let touches = [] window.addEventListener(‘touchmove’, event => , false) window.addEventListener(‘touchstart’, event => .

Как отключить горизонтальную прокрутку в UICollectionView ? Я попытался добавить это: self.scrollDirection = UICollectionViewScrollDirectionVertical; до 30, но это не сработало. Я хочу иметь только вертикальную прокрутку. Я не использую Interface builder.

Вы можете попробовать все это на нашей странице html..

2-й способ Вы можете использовать следующее в теге CSS body:

Это приведет к удалению полосы прокрутки.

Теперь я ищу больше.

Ответ Koala_dev будет работать, но в случае, если вам интересно, это причина, по которой он работает:

Я просто должен был справиться с этим сам. В конце концов, я нашел этот метод самым простым и полезным. Просто добавьте

К вашему внешнему родителю. В моем случае это выглядит так:

Вы должны использовать overflow-x , потому что если вы используете просто использовать overflow , вы также отключаете вертикальную прокрутку, а именно overflow-y

Если вертикальная прокрутка по-прежнему отключена, вы можете включить ее явно с помощью:

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

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

Вы можете переопределить событие прокрутки тела с помощью JavaScript и сбросить горизонтальную прокрутку до 0.

Я не советую этого делать, потому что это ограничивает функциональность для пользователей с маленькими экранами.

Похожие вопросы:

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

Я пытался выяснить, как отключить горизонтальную прокрутку в A UITextView (я видел много вопросов по этому поводу, но ни один из них мне не помог). Проблема прокрутки возникает, когда я поворачиваю.

Я использую оригинальное приложение Gallery из исходного кода ICS. А теперь дело в том, что я хочу отключить горизонтальную прокрутку и реализовать ее с помощью вертикальной прокрутки в сетке. Как.

Я создал UITableView с небольшой рамкой, например (0,0,50,50). Я хочу отключить горизонтальную прокрутку, но сохранить вертикальную прокрутку. Я установил self.table.bounces = NO , но tableview.

У меня есть UIView , как трамплин iPhone. Я создал его, используя UIScrollView и UIButtons . Я хочу отключить горизонтальную прокрутку на указанном scrollview. Я хочу только вертикальную прокрутку.

Есть ли способ отключить правую горизонтальную прокрутку, но разрешить левую горизонтальную прокрутку? let touches = [] window.addEventListener(‘touchmove’, event => .

Как отключить горизонтальную прокрутку в UICollectionView ? Я попытался добавить это: self.scrollDirection = UICollectionViewScrollDirectionVertical; до 30, но это не сработало. Я хочу иметь только.

Я хочу отключить горизонтальную полосу прокрутки на iPad в Safari, когда нахожусь на своем сайте. Я пробовал e.preventDefault , но это, кажется, отключает как вертикальную, так и горизонтальную.

Я пытаюсь отключить горизонтальную прокрутку на веб-сайте, но разрешаю вертикальную прокрутку. У меня есть скрипт, который работает как слайдер, сдвигая ‘body’ страницы влево и открывая больше.

Практическое руководство: реализуем горизонтальную прокрутку секции на Flexbox

В этой статье мы рассмотрим решение повседневной задачи: как создать горизонтально прокручиваемую секцию сайта? Если вкратце, ответ — Flexbox.

Давайте разберёмся с этим более детально.

Каркас

Взгляните на эту разметку. Это простой блок section с несколькими вложенными div :

Стили

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

Сперва мы явно задаём ширину и высоту корневых элементов равной 100% . Затем мы определяем цвет фона, убираем отступ у body и центрируем вложенный в него элемент.

Для наглядности применим стили к этому элементу :

С первым свойством всё понятно, второе указывает секции всё время занимать 100% ширины родительского элемента, а третье гарантирует, что высота секции всегда будет не менее 200px . Вот, что получилось на данном этапе:

Поместим все блоки card—content в секцию card и снова займёмся стилями. Сперва сделаем card flex-контейнером:

Затем займёмся .card—content :

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

Как вы могли заметить, прокручивается вся страница. Так происходит, потому что в секцию card помещаются не все элементы.

Исправим это так:

И теперь прокручивается только секция:

Прячем полосу прокрутки

Красоты ради можно спрятать полосу прокрутки. Для webkit-браузеров (Chrome и Safari) есть очень простой способ:

Согласитесь, так страничка выглядит лучше.

Способы применения

В качестве примера мы использовали пустые блоки, но применить этот приём можно во многих приложениях. Вот пара примеров:

Похожие публикации:

  1. Как сделать картинку по центру в html без css
  2. Как сделать кнопку css
  3. Как сделать красивую рамку css
  4. Как сделать линию в css after

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

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

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

 

Card

Card

Card

Card

Card

Card

Card

Card

Card

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

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

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

.scrolling-wrapper < overflow-x: scroll; overflow-y: hidden; white-space: nowrap; .card < display: inline-block; >>

Для контейнера нужно отключить вертикальную прокрутку ( overflow-y ) и включить горизонтальную ( overflow-x ). Затем для каждой карточки установим display : inline-block , чтобы они отображались в строке.
Свойство CSS, с которым вы, вероятно, не встречались — это white-space : nowrap . Оно используется для управления тем, как текст переносится в контейнере. В данном случае мы хотим отключить перенос с помощью значения nowrap .
Четыре строки свойств CSS, и у нас есть горизонтально прокручиваемый контейнер.
Как насчет поддержки браузерами? Идеально. Если вы не заботитесь об Internet Explorer или Edge. В Microsoft говорят, что они включат поддержку этого свойства в будущую версию браузера Edge.

Метод Flexbox

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

.scrolling-wrapper-flexbox < display: flex; flex-wrap: nowrap; overflow-x: auto; .card < flex: 0 0 auto; >>

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

Overflow прокрутка

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

.scrolling-wrapper

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

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

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

.scrolling-wrapper < &::-webkit-scrollbar < display: none; >>

Заключение

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

Скрытие полосы прокрутки на HTML-странице

Можно ли использовать CSS, чтобы скрыть полосу прокрутки? Как бы ты это сделал?

ANP 21 Июл 2010 в 09:57
@UweKeim, для IE11 нет никакого трюка
28 Окт 2015 в 14:40

19 ответов

Лучший ответ

Установите overflow: hidden; в теге body следующим образом:

 body 

Приведенный выше код скрывает как горизонтальную, так и вертикальную полосу прокрутки.

Если вы хотите скрыть только вертикальную полосу прокрутки , используйте overflow-y :

 body 

А если вы хотите скрыть только горизонтальную полосу прокрутки , используйте overflow-x :

 body 

Примечание. Это также отключит функцию прокрутки. Обратитесь к ответам ниже, если вы просто хотите скрыть полосу прокрутки, но не функцию прокрутки.

Peter Mortensen 13 Июл 2019 в 16:18

Для свойства переполнения нет опции «нет». Доступные варианты: видимый, скрытый, прокрутка, авто, наследование.

Sergiy Sokolenko
21 Июл 2010 в 10:16

На самом деле, это не совсем правильный ответ: overflow: hidden не «скрывает» полосу прокрутки. Также остановлена ​​функция прокрутки на странице. Это не совсем то, о чем мы просим.

adriendenat
14 Мар 2013 в 01:41

В Chrome, когда для переполнения тела установлено значение hidden , прокрутка будет работать с колесом прокрутки мыши. В Firefox прокрутка с помощью колеса прокрутки мыши не работает, мне потребовалось время, чтобы понять это.

Doug Molineux
20 Авг 2013 в 00:17

Не вижу смысла утверждать, что overflow: hidden отключает прокрутку. Если кто-то хочет скрыть полосу прокрутки, то, вероятно, они сочтут элемент управления ненужным, потому что нет содержимого для прокрутки в первую очередь . Или, возможно, они просто не хотят разрешать прокрутку вообще .

24 Ноя 2014 в 19:33

Для меня это утверждение совершенно верно, поскольку вопрос в том, чтобы скрыть полосу прокрутки , а не отключить прокрутку .

25 Ноя 2014 в 22:42

WebKit поддерживает псевдоэлементы полосы прокрутки, которые можно скрыть с помощью стандартных правил CSS:

#element::-webkit-scrollbar

Если вы хотите, чтобы все полосы прокрутки были скрыты, используйте

::-webkit-scrollbar

Я не уверен насчет восстановления — это сработало, но может быть правильный способ сделать это:

::-webkit-scrollbar

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

Firefox 64 теперь поддерживает экспериментальное свойство ширины полосы прокрутки по по умолчанию (63 требует установки флага конфигурации). Чтобы скрыть полосу прокрутки в Firefox 64:

#element

Чтобы узнать, поддерживает ли ваш текущий браузер псевдоэлемент или scrollbar-width , попробуйте этот фрагмент:

.content < /* These rules create an artificially confined space, so we get a scrollbar that we can hide. They are not directly involved in hiding the scrollbar. */ border: 1px dashed gray; padding: .5em; white-space: pre-wrap; height: 5em; overflow-y: scroll; >.content < /* This is the magic bit for Firefox */ scrollbar-width: none; >.content::-webkit-scrollbar < /* This is the magic bit for WebKit */ display: none; >
 
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Mauris eu urna et leo aliquet malesuada ut ac dolor. Fusce non arcu vel ligula fermentum sodales a quis sapien. Sed imperdiet justo sit amet venenatis egestas. Integer vitae tempor enim. In dapibus nisl sit amet purus congue tincidunt. Morbi tincidunt ut eros in rutrum. Sed quam erat, faucibus vel tempor et, elementum at tortor. Praesent ac libero at arcu eleifend mollis ut eget sapien. Duis placerat suscipit eros, eu tempor tellus facilisis a. Vivamus vulputate enim felis, a euismod diam elementum non. Duis efficitur ac elit non placerat. Integer porta viverra nunc, sed semper ipsum. Nam laoreet libero lacus. Sed sit amet tincidunt felis. Sed imperdiet, nunc ut porta elementum, eros mi egestas nibh, facilisis rutrum sapien dolor quis justo. Quisque nec magna erat. Phasellus vehicula porttitor nulla et dictum. Sed tincidunt scelerisque finibus. Maecenas consequat massa aliquam pretium volutpat. Duis elementum magna vel velit elementum, ut scelerisque odio faucibus.

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

Peter Mortensen 13 Июл 2019 в 16:30

Именно то, что я искал, так как я действительно хотел скрыть полосы прокрутки, но при этом элементы все еще можно прокручивать (например, клавиши вверх / вниз)

26 Янв 2013 в 00:35
Это должен быть лучший ответ, поскольку другие решения не позволяют прокручивать
5 Апр 2013 в 00:53
Поддерживает ли это другие браузеры, кроме webkit? Потому что в mozilla это не работает.
Rupam Datta
8 Апр 2013 в 10:25

Однако в трекере Mozilla есть запрос функции. Возможно, вы сможете ускорить реализацию, проголосовав за это там 🙂

28 Май 2013 в 11:14

ЭТО ПРАВИЛЬНЫЙ ОТВЕТ! Поскольку другие отсутствуют. Проблема не только в том, чтобы скрыть полосу прокрутки, но и в том, как переполнение влияет на другие стили. Я столкнулся с той же проблемой в нашем приложении. Мы НЕ хотим автоматического переполнения в 99% приложения, однако есть раздел справки, в котором вы хотите, чтобы пользователь мог прокручивать страницу вниз. Так как в теле есть overflow: hidden, единственный wan, который справился с этим, был ng-классом в корне или, благодаря этим ребятам, просто с использованием некоторого CSS.

Leon Gaban
15 Дек 2016 в 20:03

Да вроде ..

Когда вы задаете вопрос «Можно ли каким-либо образом удалить полосы прокрутки в браузере, а не просто скрыть или замаскировать», все ответят «Невозможно», потому что невозможно удалить полосы прокрутки из всех браузеров совместимым и кросс-совместимым способом, а затем есть весь аргумент в пользу удобства использования.

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

Это просто означает, что мы должны проактивно заменить то же поведение, которое браузер обычно делает для нас, и сказать браузеру спасибо, но не спасибо, приятель. Вместо того, чтобы пытаться удалить полосы прокрутки (что, как мы все знаем, невозможно), мы можем избежать прокрутки (что вполне возможно) и прокручивать элементы, которые мы создаем и над которыми мы больше контролируем.

Создайте div со скрытым переполнением. Обнаруживать, когда пользователь пытается прокрутить, но не может, потому что мы отключили возможность браузеров прокручивать с помощью overflow: hidden .. и вместо этого перемещать контент вверх с помощью JavaScript, когда это происходит. Тем самым создавая нашу собственную прокрутку без прокрутки по умолчанию в браузере или используйте плагин, например iScroll.

Из соображений тщательности; все специфические для поставщика способы управления полосами прокрутки:

Internet Explorer 5.5+

* Эти свойства никогда не входили в спецификацию CSS, не утверждались и не указывались поставщиком, но они работают в Internet Explorer и Konqueror. Их также можно установить локально в пользовательской таблице стилей для каждого приложения. В Internet Explorer вы найдете его на вкладке «Специальные возможности», в Konqueror — на вкладке «Таблицы стилей».

body, html < /* These are defaults and can be replaced by hexadecimal color values */ scrollbar-base-color: aqua; scrollbar-face-color: ThreeDFace; scrollbar-highlight-color: ThreeDHighlight; scrollbar-3dlight-color: ThreeDLightShadow; scrollbar-shadow-color: ThreeDDarkShadow; scrollbar-darkshadow-color: ThreeDDarkShadow; scrollbar-track-color: Scrollbar; scrollbar-arrow-color: ButtonText; >

Начиная с Internet Explorer 8, эти свойства имели префикс поставщика от Microsoft, но они все еще не были одобрены W3C. .

-ms-scrollbar-base-color -ms-scrollbar-face-color -ms-scrollbar-highlight-color -ms-scrollbar-3dlight-color -ms-scrollbar-shadow-color -ms-scrollbar-darkshadow-color -ms-scrollbar-base-color -ms-scrollbar-track-color 

Дополнительные сведения об Internet Explorer

Internet Explorer делает доступным scroll , который устанавливает, следует ли включать или отключать полосы прокрутки; его также можно использовать для получения значения положения полос прокрутки.

В Microsoft Internet Explorer 6 и более поздних версиях, когда вы используете объявление !DOCTYPE для указания режима, совместимого со стандартами, этот атрибут применяется к элементу HTML. Если режим, соответствующий стандартам, не указан, как в более ранних версиях Internet Explorer, этот атрибут применяется к элементу BODY , а НЕ к элементу HTML .

Также стоит отметить, что при работе с .NET класс ScrollBar в System.Windows.Controls.Primitives в среде презентаций отвечает за отображение полос прокрутки.

  • MSDN. Основные свойства пользовательского интерфейса
  • W3C. О нестандартных свойствах полосы прокрутки
  • MSDN. .NET ScrollBar — класс

WebKit

Расширения WebKit, связанные с настройкой полосы прокрутки:

::-webkit-scrollbar <> /* 1 */ ::-webkit-scrollbar-button <> /* 2 */ ::-webkit-scrollbar-track <> /* 3 */ ::-webkit-scrollbar-track-piece <> /* 4 */ ::-webkit-scrollbar-thumb <> /* 5 */ ::-webkit-scrollbar-corner <> /* 6 */ ::-webkit-resizer <> /* 7 */ 

Enter image description here

Каждый из них может быть объединен с дополнительными псевдоселекторами:

  • :horizontal — горизонтальный псевдокласс применяется к любым частям полосы прокрутки, которые имеют горизонтальную ориентацию.
  • :vertical — вертикальный псевдокласс применяется к любым частям полосы прокрутки, которые имеют вертикальную ориентацию.
  • :decrement — псевдокласс декремента применяется к кнопкам и фрагментам дорожки. Он указывает, будет ли кнопка или фрагмент дорожки уменьшать позицию представления при использовании (например, вверх на вертикальной полосе прокрутки, влево на горизонтальной полосе прокрутки).
  • :increment — Псевдокласс приращения применяется к кнопкам и элементам дорожки. Он указывает, будет ли кнопка или фрагмент дорожки увеличивать позицию представления при использовании (например, вниз на вертикальной полосе прокрутки, прямо на горизонтальной полосе прокрутки).
  • :start — начальный псевдокласс применяется к кнопкам и элементам дорожки. Он указывает, находится ли объект перед большим пальцем.
  • :end — конечный псевдокласс применяется к кнопкам и элементам дорожки. Он указывает, находится ли объект после большого пальца.
  • :double-button — псевдокласс двойной кнопки применяется к кнопкам и фрагментам дорожки. Он используется для определения того, является ли кнопка частью пары кнопок, которые вместе находятся на одном конце полосы прокрутки. Для элементов дорожки это указывает, упирается ли элемент дорожки в пару кнопок.
  • :single-button — Псевдокласс для одной кнопки применяется к кнопкам и фрагментам дорожки. Он используется для определения того, находится ли кнопка сама по себе в конце полосы прокрутки. Для фрагментов дорожки это указывает, упирается ли фрагмент дорожки в одноэлементную кнопку.
  • :no-button — применяется к фрагментам дорожки и указывает, доходит ли фрагмент дорожки до края полосы прокрутки, т.е. на этом конце дорожки нет кнопки.
  • :corner-present — применяется ко всем частям полосы прокрутки и указывает, присутствует ли угол полосы прокрутки.
  • :window-inactive — применяется ко всем частям полосы прокрутки и указывает, активно ли в данный момент окно, содержащее полосу прокрутки. (В последних ночных сборниках этот псевдокласс теперь применяется и к :: selection. Мы планируем расширить его для работы с любым контентом и предложить его в качестве нового стандартного псевдокласса.)

Примеры этих комбинаций

::-webkit-scrollbar-track-piece:start < /* Select the top half (or left half) or scrollbar track individually */ >::-webkit-scrollbar-thumb:window-inactive < /* Select the thumb when the browser window isn't in focus */ >::-webkit-scrollbar-button:horizontal:decrement:hover < /* Select the down or left scroll button when it's being hovered by the mouse */ >

Дополнительные сведения о Chrome

addWindowScrollHandler общедоступный статический HandlerRegistration addWindowScrollHandler (обработчик Window.ScrollHandler)

Добавляет обработчик Window.ScrollEvent Параметры: handler — обработчик Возврат: возвращает регистрацию обработчика [ источник ] (http://www.gwtproject.org/javadoc/latest/com/google/gwt/user/client/Window.html#addWindowScrollHandler (com.google .gwt.user.client.Window.ScrollHandler) )

Mozilla

В Mozilla есть некоторые расширения для управления полосами прокрутки, но все они не рекомендуется использовать.

  • -moz-scrollbars-none Они рекомендуют использовать overflow: hidden вместо этого.
  • -moz-scrollbars-horizontal Аналогично overflow-x
  • -moz-scrollbars-vertical Подобно overflow-y
  • -moz-hidden-unscrollable Работает только внутри в настройках профиля пользователя. Отключает прокрутку корневых элементов XML и отключает использование клавиш со стрелками и колесика мыши для прокрутки веб-страниц.
  • Документы разработчика Mozilla о переполнении

Дополнительные сведения о Mozilla

Насколько я знаю, это не очень полезно, но стоит отметить, что атрибут, который определяет, отображаются ли полосы прокрутки в Firefox, имеет вид (ссылка на ссылку):

  • Атрибут: полосы прокрутки.
  • Тип: nsIDOMBarProp
  • Описание: объект, который определяет, отображаются ли полосы прокрутки в окне. Этот атрибут «заменяемый» в JavaScript. Только чтение

И последнее, но не менее важное: обивка похожа на волшебство.

Как уже упоминалось ранее в некоторых других ответах, вот иллюстрация, которая достаточно понятна.

Урок истории

Scroll bars

Просто потому, что мне любопытно, я хотел узнать о происхождении полос прокрутки, и это лучшие ссылки, которые я нашел.

  • 10 изобретений прокрутки и полос прокрутки
  • https://tools.ietf.org/id/draft-hellstrom-textpreview-02.txt
  • https://tools.ietf.org/id/draft-mrose-blocks-service-01.txt

Разнообразный

Объект scrollbar BarProp является дочерним по отношению к объекту window и представляет элемент пользовательского интерфейса, который содержит механизм прокрутки или некоторую аналогичную концепцию интерфейса. window.scrollbars.visible вернет true , если полосы прокрутки видны.

interface Window < // The current browsing context readonly attribute WindowProxy window; readonly attribute WindowProxy self; attribute DOMString name; [PutForwards=href] readonly attribute Location location; readonly attribute History history; readonly attribute UndoManager undoManager; Selection getSelection(); [Replaceable] readonly attribute BarProp locationbar; [Replaceable] readonly attribute BarProp menubar; [Replaceable] readonly attribute BarProp personalbar; [Replaceable] readonly attribute BarProp scrollbars; [Replaceable] readonly attribute BarProp statusbar; [Replaceable] readonly attribute BarProp toolbar; void close(); void focus(); void blur(); // Truncated 

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

window.history.scrollRestoration можно использовать для проверки статуса восстановления прокрутки или изменения его статуса (добавление ="auto"/"manual" . Авто - значение по умолчанию. Изменение его на ручной означает, что вы, как разработчик, будете владеть любыми изменениями прокрутки, которые может потребоваться, когда пользователь просматривает историю приложения. При необходимости вы можете отслеживать положение прокрутки при отправке записей истории с помощью history.pushState ().

Дальнейшее чтение:

  • Полоса прокрутки в Википедии
  • Полоса прокрутки (Windows)
  • Метод прокрутки
  • Метод прокрутки - Microsoft Dev Network
  • iScroll на Github (упоминается в первом разделе выше)
  • Прокрутка и полосы прокрутки - статья Якоба Нильсена о юзабилити.

Примеры

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

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