Нет опции none для свойства переполнения. Доступные опции: видимый, скрытый, прокрутка, авто, наследование.
Сергей Соколенко
1273
На самом деле, это не совсем правильный ответ: переполнение: скрытый не «скрывает» полосу прокрутки. Также прекращена функция прокрутки на странице. Это не совсем то, что мы просим.
Адриенденат
17
В Chrome, когда переполнение тела установлено на hiddenпрокрутку, будет работать с колесиком прокрутки мыши. В Firefox прокрутка не будет работать с колесом прокрутки мыши, мне потребовалось время, чтобы понять это.
Дуг Молинью
13
Я не вижу смысла в утверждении, что overflow: hiddenотключает прокрутку. Если кто-то хочет скрыть полосу прокрутки, то, по-видимому, он считает, что элемент управления не нужен, поскольку в первую очередь нет содержимого для прокрутки . Или, может быть, они просто не хотят вообще разрешать прокрутку .
BoltClock
39
Для меня утверждение совершенно справедливо, так как вопрос заключается в том, чтобы скрыть полосу прокрутки , а не отключить прокрутку .
sboisse
977
WebKit поддерживает псевдоэлементы полосы прокрутки, которые можно скрыть с помощью стандартных правил CSS:
#element::-webkit-scrollbar {display: none;}
Если вы хотите, чтобы все полосы прокрутки были скрыты, используйте
::-webkit-scrollbar {display: none;}
Я не уверен насчет восстановления - это сработало, но может быть правильный способ сделать это:
::-webkit-scrollbar {display: block;}
Вы можете, конечно, всегда использовать width: 0, который затем можно легко восстановить width: auto, но я не фанат злоупотребленийwidth для настройки видимости.
Firefox 64 теперь поддерживает экспериментальную свойство ширины полосы прокрутки по умолчанию (63 требует установки флага конфигурации). Чтобы скрыть полосу прокрутки в Firefox 64:
#element {scrollbar-width: none;}
Чтобы увидеть, поддерживает ли ваш текущий браузер псевдоэлемент или 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;}
<divclass='content'>
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.
</div>
(Обратите внимание, что это не совсем правильный ответ на вопрос, потому что он также скрывает горизонтальные полосы, но это то, что я искал, когда Google указал мне здесь, поэтому я решил, что я все равно опубликую его.)
Именно то, что я искал, так как я действительно хотел скрыть полосы прокрутки, но элементы по-прежнему можно было прокручивать (например, клавиши вверх / вниз)
Mathias
7
это должен быть лучший ответ, так как другие решения не позволяют вам прокручивать
nuway
7
Поддерживает ли это другие браузеры, кроме webkit? Потому что это не работает в Mozilla.
Рупам Датта
12
Однако на трекере Mozilla есть запрос . Вы можете ускорить внедрение, проголосовав за него там :)
Питер
3
ЭТО ПРАВИЛЬНЫЙ ОТВЕТ! Как и другие отсутствуют. Проблема заключается не только в том, чтобы скрыть полосу прокрутки, но и в том, как переполнение влияет на другие стили. Я столкнулся с этой же проблемой в нашем приложении. Мы НЕ хотим, чтобы автоматическое переполнение выполнялось в 99% приложений, однако есть раздел справки, в котором вы хотите, чтобы пользователь мог прокручивать страницу вниз. Поскольку тело имеет переполнение: скрытое, единственное, что нужно было обработать, это ng-класс в корне, или, благодаря этим парням, просто использующий немного CSS.
Леон Габан
524
Да вроде ..
Когда вы задаете вопрос: «Можно ли каким-либо образом удалить полосы прокрутки браузера , а не просто скрыть или скрыть их», все скажут: «Невозможно», поскольку невозможно удалить полосы прокрутки из всех браузеров в совместимый и кросс-совместимый способ, и тогда есть целый аргумент юзабилити.
Однако можно запретить браузеру создавать и отображать полосы прокрутки, если вы не допускаете переполнения веб-страницы.
Это просто означает, что мы должны заранее заменить то же поведение, которое браузер обычно делает для нас, и сказать браузеру спасибо, но не спасибо, приятель. Вместо того, чтобы пытаться удалить полосы прокрутки (которые, как мы все знаем, невозможно), мы можем избежать прокрутки (вполне выполнимой) и прокрутки внутри элементов, которые мы создаем, и иметь больший контроль над ними.
Создать div с скрытым переполнением. Определите, когда пользователь пытается прокрутить, но не может, потому что мы отключили возможность браузеров прокручивать с переполнением: скрыто ... и вместо этого перемещаем содержимое вверх, используя 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 .
Internet Explorer делает scroll доступным, который устанавливает, следует ли отключить или включить полосы прокрутки; он также может быть использован для получения значения положения полос прокрутки.
В Microsoft Internet Explorer 6 и более поздних версиях, когда вы используете !DOCTYPEобъявление для указания режима, соответствующего стандартам, этот атрибут применяется к элементу HTML. Если режим совместимости со стандартами не указан, как в более ранних версиях Internet Explorer, этот атрибут применяется к BODYэлементу, а НЕ кHTML элементу.
Стоит также отметить, что при работе с .NET класс ScrollBar в System.Windows.Controls.Primitives Presentation отвечает за отображение полос прокрутки.
Каждый из них может быть объединен с дополнительными псевдоселекторами:
: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 */}
У Mozilla есть некоторые расширения для манипулирования полосами прокрутки, но все они рекомендуется не использовать.
-moz-scrollbars-none Они рекомендуют использовать переполнение: скрыто вместо этого.
-moz-scrollbars-horizontal Похоже на переполнение-х
-moz-scrollbars-vertical Похоже на переполнение-у
-moz-hidden-unscrollableРаботает только внутри в настройках профиля пользователя. Отключает прокрутку корневых элементов XML и отключает использование клавиш со стрелками и колесика мыши для прокрутки веб-страниц.
Объект scrollbarBarProp является дочерним по отношению к windowобъекту и представляет элемент интерфейса пользователя, который содержит механизм прокрутки или некоторую похожую концепцию интерфейса. window.scrollbars.visibleвернется, trueесли полосы прокрутки видны.
History API также включает в себя функции восстановления прокрутки при навигации по страницам, чтобы сохранить положение прокрутки при загрузке страницы.
window.history.scrollRestoration может использоваться для проверки состояния скролла восстановления или изменения его статуса (добавление ="auto"/"manual" . Авто является значением по умолчанию. Изменение на ручное означает, что вы, как разработчик, станете владельцем любых изменений прокрутки, которые могут потребоваться, когда пользователь переходит к истории приложения. Если вам нужно, вы можете следить за положением прокрутки при перемещении записей истории с помощью history.pushState ().
Этот ответ будет применяться к значительно большему количеству браузеров (а именно к IE), а не к ответу, который проголосовал в настоящее время.
Мэтт Дженсен
Отличное дополнение. На самом деле реализовал то же решение сегодня! Возможно, стоит упомянуть, что другой элемент должен быть переполнен: hidden;
Мэтт Дженсен
2
Это правильный, полнофункциональный ответ. Я объясняю, что если вы просто хотите остановить прокрутку пользователя, вы можете использовать правило переполнения. Вы также можете реализовать собственную встроенную функцию прокрутки. Если этого недостаточно, вы можете установить свойства полосы прокрутки напрямую, используя разные правила для разных браузеров.
шорты
1
Хотя это невероятно продуманный ответ, очень подробный и связанный со многими ресурсами, у пользователей вспомогательных технологий возникают огромные проблемы, когда вы отключаете прокрутку и используете javascript для обработки всей прокрутки. Если вы не устанавливаете фокус на элемент каждый раз, когда прокручиваете пользователя, тогда ваш пользователь AT будет полностью потерян. Кроме того, ваш пользователь теперь потерял весь отлаженный контроль над тем, что он видит. Очень плохой пользовательский интерфейс для прокрутки вашего пользователя.
ShiningLight
Firefox Quantum 63.0.1 в MacOS High Sierra не скрывает полосу прокрутки даже при использовании правила «overflow: -moz-scrollbars-none». Кто-нибудь знает решение для этого? Все остальные браузеры работают с предлагаемыми решениями.
Симона Адриани
106
Вы можете сделать это с помощью обертки div, в которой переполнение скрыто, а внутреннее значение divустановлено на auto.
Чтобы убрать внутреннюю divполосу прокрутки, вы можете вытащить ее из внешнего divвидового экрана, применив к внутренней части отрицательное поле div. Затем примените равные отступы к внутреннему элементу div, чтобы содержимое оставалось на виду.
.hide-scroll {
overflow: hidden;}.viewport {
overflow:auto;/* Make sure the inner div is not larger than the container
* so that we have room to scroll.
*/
max-height:100%;/* Pick an arbitrary margin/padding that should be bigger
* than the max width of all the scroll bars across
* the devices you are targeting.
* padding = -margin
*/
margin-right:-100px;
padding-right:100px;}
Это должен быть принятый ответ IMO. Единственное, что я должен был добавить, было height: inheritedв .viewportCSS.
Хельцгейт,
4
Единственная проблема с этим ответом - «мертвое» пространство, оставленное перемещенной полосой прокрутки, потому что мы фактически не знаем ширину полосы прокрутки, чтобы вычесть ее из отступа.
Фрондор
3
Кроме того, вам не нужно использовать фиксированные значения для отступов и полей. 100%является более универсальным и делает свою работу.
Фрондор
Работал в IE11, Operah и Chrome, еще не тестировал Firefox. Это отличный ответ, +1.
почти новичок
почему -100pxи 100px??
старик
61
Это работает для меня с простыми свойствами CSS:
.container {-ms-overflow-style: none;// Internet Explorer 10+
scrollbar-width: none;// Firefox}.container::-webkit-scrollbar {
display: none;// Safari and Chrome}
Для более старых версий Firefox используйте: overflow: -moz-scrollbars-none;
К сожалению, это не работает в FireFox 48.0.2 на macOS Sierra. Если вы это сделаете, overflow: -moz-scrollbars-none;то вы успешно удалите полосу прокрутки, но вы также удалите возможность прокрутки. Вы могли бы также просто установить overflow: hiddenна .container.
Я обновил свой ответ с последней поддержкой Firefox :)
Христо Ефтимов
56
Вот мое решение, которое теоретически охватывает все современные браузеры:
html {
scrollbar-width: none;/* For Firefox */-ms-overflow-style: none;/* For Internet Explorer and Edge */}
html::-webkit-scrollbar {
width:0px;/* For Chrome, Safari, and Opera */}
html может быть заменен на любой элемент, который вы хотите скрыть полосу прокрутки.
Примечание : я просмотрел остальные 19 ответов, чтобы посмотреть, был ли уже опубликован код, который я публикую, и похоже, что ни один из ответов не суммирует ситуацию в том виде, в каком она существует в 2019 году, хотя многие из них подробно раскрыты. Извинения, если это было сказано кем-то другим, и я пропустил это.
Работает для меня в Chrome и Firefox, не проверял IE или любой другой браузер. jsfiddle.net/8xtfk729
Бен Дэвис
1
На Chrome (по крайней мере, v54) это по какой-то причине отключает прокрутку с помощью колеса прокрутки. Прокрутите с помощью клавиш со стрелками, home / end / pg down / pg up, касание пролистывание, и 3 щелчка мыши и перетаскивание все еще работает.
House3272
Этот ответ является законным, он действительно работает и, кажется, работает в разных браузерах.
Сэм
Это скрывает весь div на моей стороне
Джонни
16
Если вы ищете решение, чтобы скрыть полосу прокрутки для мобильных устройств, следуйте ответу Питера !
Вот jsfiddle , который использует решение ниже, чтобы скрыть горизонтальную полосу прокрутки.
Он был протестирован на планшете Samsung с Android 4.0.4 (Ice Cream Sandwich, как в собственном браузере, так и в Chrome) и на iPad с iOS 6 (как в Safari, так и в Chrome).
Это правильный ответ и должен быть первым. Все выше сказанное не отвечает на поставленный вопрос. ОП не просит отключить прокрутку, она хочет скрыть полосу прокрутки.
pixelpax
11
В дополнение к ответу Петра:
#element::-webkit-scrollbar {
display: none;}
Это будет работать так же для Internet Explorer 10:
/* Make parent invisible */#parent {
visibility: hidden;
overflow: scroll;}/* Safari and Chrome specific style. Don't need to make parent invisible, because we can style WebKit scrollbars */#parent:not(*:root) {
visibility: visible;}/* Make Safari and Chrome scrollbar invisible */#parent::-webkit-scrollbar {
visibility: hidden;}/* Make the child visible */#child {
visibility: visible;}
объяснение того, как это работает, было бы оценено - играть с видимостью родителей / детей, чтобы скрыть полосу прокрутки, ужасно
JackyJohnson
1
@believesInSanta Я добавил комментарии и кодовый блок, чтобы лучше объяснить. Я не согласен с вашей оценкой, что игра с видимостью - ужасный способ скрыть полосу прокрутки. Я понимаю, что это взлом, но правильный способ добиться этого эффекта был бы, если бы все браузеры поддерживали способ стилизации полосы прокрутки отдельно, как позволяют chrome и safari.
Блейк Пламб
2
Я просто влюбился в ваше решение. Это прекрасно работает (используется в приложениях, которые предназначены для современных браузеров). Спасибо огромное!
Максим Лафари
7
Если вы хотите, чтобы прокрутка работала, прежде чем скрывать полосы прокрутки, подумайте над их стилем. Современные версии OS X и мобильных ОС имеют полосы прокрутки, которые, хотя и нецелесообразны для захвата мышью, довольно красивы и нейтральны.
Чтобы скрыть полосы прокрутки, техника Джона Курлака работает хорошо, за исключением того, что пользователи Firefox, у которых нет сенсорных панелей, не имеют возможности прокрутки, если у них нет мыши с колесиком, что они, вероятно, делают, но даже тогда они обычно могут прокручивать только вертикально ,
Техника Джона использует три элемента:
Внешний элемент для маскировки полос прокрутки.
Средний элемент, чтобы иметь полосы прокрутки.
И элемент содержимого должен установить размер среднего элемента и сделать так, чтобы он имел полосы прокрутки.
Должна быть возможность установить одинаковый размер внешнего элемента и элемента содержимого, что исключает использование процентов, но я не могу думать ни о чем другом, что не будет работать с правильной настройкой.
Меня больше всего беспокоит, все ли версии браузеров устанавливают полосы прокрутки, чтобы сделать видимым переполненный контент видимым. Я тестировал в текущих браузерах, но не в старых.
%size {// set width and height}.outer {// mask scrollbars of child
overflow: hidden;// set mask size@extend%size;// has absolutely positioned child
position: relative;}.middle {// always have scrollbars.// don't use auto, it leaves vertical scrollbar showing
overflow: scroll;// without absolute, the vertical scrollbar shows
position: absolute;}// prevent text selection from revealing scrollbar, which it only does on// some webkit based browsers..middle::-webkit-scrollbar {
display: none;}.content {// push scrollbars behind mask@extend%size;}
тестирование
OS X 10.6.8. Windows - это Windows 7.
Firefox 32.0 Полосы прокрутки скрыты. Клавиши со стрелками не прокручиваются, даже после щелчка для фокусировки, но колесо мыши и два пальца на трекпаде делают. OS X и Windows.
Chrome 37.0 Полосы прокрутки скрыты. Клавиши со стрелками работают после щелчка для фокусировки. Колесо мыши и трекпад работают. OS X и Windows.
Internet Explorer 11 Полосы прокрутки скрыты. Клавиши со стрелками работают после щелчка для фокусировки. Колесо мыши работает. Окна.
Safari 5.1.10 Полосы прокрутки скрыты. Клавиши со стрелками работают после щелчка для фокусировки. Колесо мыши и трекпад работают. OS X.
Android 4.4.4 и 4.1.2. Полосы прокрутки скрыты. Сенсорная прокрутка работает. Пробовал в Chrome 37.0, Firefox 32.0 и HTMLViewer на 4.4.4 (что бы это ни было). В HTMLViewer страница имеет размер маскируемого содержимого и также может быть прокручена! Прокрутка приемлемо взаимодействует с масштабированием страницы.
Несвязанное примечание (насколько вопрос идет). В этом случае вы должны использовать @extend против @include. Таким образом, вместо того @mixin{}, чтобы сделать это %size{}в селекторах CSS, позвоните @extend %size;. Mixins обычно используются, когда вы вводите переменные, чтобы вернуть результат. Заполнители (aka @extend) предназначены для простого повторяющегося кода, подобного этому, где «функция» не требуется.
Майк Барвик
1
Я редактировал, чтобы использовать @extend. Результат, вероятно, менее понятен людям, которые не знают SCSS, но достаточно хорошо.
Сет В. Кляйн
6
Я просто подумал, что всем, кто читает этот вопрос, я укажу, что настройка overflow: hidden(или переполнение-y) bodyэлемента не скрывает полосы прокрутки для меня.
Я не помню точно, так как это было пару месяцев назад, но я считаю, что настройка переполнения тела работала в Chrome, но не в Firefox (или наоборот). Однако использование тега HTML работало на обоих.
Брэд Азеведо
По памяти это может быть разница в режиме причуд.
Томасруттер
5
Я написал версию WebKit с некоторыми опциями, такими как автоматическое скрытие , маленькая версия , только прокрутка -y или только-x :
Scrolljacking работает, но почти всегда плохой пользовательский опыт.
Брэндон Анзальди
1
Хотя это и возможно, на хорошем примере у пользователей вспомогательных технологий возникают огромные проблемы, когда вы отключаете прокрутку и используете javascript для обработки прокрутки. Если вы не устанавливаете фокус на элемент каждый раз, когда прокручиваете пользователя, тогда ваш пользователь AT будет полностью потерян. Кроме того, каждый пользователь теперь утратил весь отлаженный контроль над тем, что он видит. Очень плохой пользовательский интерфейс для прокрутки вашего пользователя. Помимо колесика мыши, вы также должны управлять клавишами вверх / вниз, ротором чтения с экрана, щелчками мыши и элементами управления сенсорной панели. Это становится громоздким для разработчика и ужасным для пользователя.
ShiningLight
2
Я считаю, что вы можете манипулировать им с overflowпомощью атрибута CSS, но они имеют ограниченную поддержку браузера. Один источник сказал, что это был Internet Explorer 5 (и более поздние версии), Firefox 1.5 (и более поздние версии) и Safari 3 (и более поздние версии) - возможно, этого достаточно для ваших целей.
Ответы:
Установите
overflow: hidden;
тег body следующим образом:Код выше скрывает как горизонтальную, так и вертикальную полосу прокрутки.
Если вы хотите скрыть только вертикальную полосу прокрутки , используйте
overflow-y
:И если вы хотите скрыть только горизонтальную полосу прокрутки , используйте
overflow-x
:Примечание: это также отключит функцию прокрутки. Обратитесь к ответам ниже, если вы просто хотите скрыть полосу прокрутки, но не функцию прокрутки.
источник
hidden
прокрутку, будет работать с колесиком прокрутки мыши. В Firefox прокрутка не будет работать с колесом прокрутки мыши, мне потребовалось время, чтобы понять это.overflow: hidden
отключает прокрутку. Если кто-то хочет скрыть полосу прокрутки, то, по-видимому, он считает, что элемент управления не нужен, поскольку в первую очередь нет содержимого для прокрутки . Или, может быть, они просто не хотят вообще разрешать прокрутку .WebKit поддерживает псевдоэлементы полосы прокрутки, которые можно скрыть с помощью стандартных правил CSS:
Если вы хотите, чтобы все полосы прокрутки были скрыты, используйте
Я не уверен насчет восстановления - это сработало, но может быть правильный способ сделать это:
Вы можете, конечно, всегда использовать
width: 0
, который затем можно легко восстановитьwidth: auto
, но я не фанат злоупотребленийwidth
для настройки видимости.Firefox 64 теперь поддерживает экспериментальную свойство ширины полосы прокрутки по умолчанию (63 требует установки флага конфигурации). Чтобы скрыть полосу прокрутки в Firefox 64:
Чтобы увидеть, поддерживает ли ваш текущий браузер псевдоэлемент или
scrollbar-width
попробуйте этот фрагмент:Показать фрагмент кода
(Обратите внимание, что это не совсем правильный ответ на вопрос, потому что он также скрывает горизонтальные полосы, но это то, что я искал, когда Google указал мне здесь, поэтому я решил, что я все равно опубликую его.)
источник
Да вроде ..
Когда вы задаете вопрос: «Можно ли каким-либо образом удалить полосы прокрутки браузера , а не просто скрыть или скрыть их», все скажут: «Невозможно», поскольку невозможно удалить полосы прокрутки из всех браузеров в совместимый и кросс-совместимый способ, и тогда есть целый аргумент юзабилити.
Однако можно запретить браузеру создавать и отображать полосы прокрутки, если вы не допускаете переполнения веб-страницы.
Это просто означает, что мы должны заранее заменить то же поведение, которое браузер обычно делает для нас, и сказать браузеру спасибо, но не спасибо, приятель. Вместо того, чтобы пытаться удалить полосы прокрутки (которые, как мы все знаем, невозможно), мы можем избежать прокрутки (вполне выполнимой) и прокрутки внутри элементов, которые мы создаем, и иметь больший контроль над ними.
Создать div с скрытым переполнением. Определите, когда пользователь пытается прокрутить, но не может, потому что мы отключили возможность браузеров прокручивать с переполнением: скрыто ... и вместо этого перемещаем содержимое вверх, используя JavaScript, когда это происходит. Тем самым создаем собственную прокрутку без прокрутки по умолчанию в браузерах или используем плагин, такой как iScroll .
---
Ради того, чтобы быть тщательным; все специфичные для поставщика способы манипулирования полосами прокрутки:
Internet Explorer 5.5+
* Эти свойства никогда не были частью спецификации CSS, и при этом они никогда не были одобрены или префикс поставщика, но они работают в Internet Explorer и Konqueror. Они также могут быть установлены локально в таблице стилей пользователя для каждого приложения. В Internet Explorer вы найдете его на вкладке «Доступность», в Konqueror на вкладке «Стили».
Начиная с Internet Explorer 8 эти свойства принадлежали поставщику с префиксом Microsoft, но они все еще не были одобрены W3C .
Более подробная информация об Internet Explorer
Internet Explorer делает
scroll
доступным, который устанавливает, следует ли отключить или включить полосы прокрутки; он также может быть использован для получения значения положения полос прокрутки.В Microsoft Internet Explorer 6 и более поздних версиях, когда вы используете
!DOCTYPE
объявление для указания режима, соответствующего стандартам, этот атрибут применяется к элементу HTML. Если режим совместимости со стандартами не указан, как в более ранних версиях Internet Explorer, этот атрибут применяется кBODY
элементу, а НЕ кHTML
элементу.Стоит также отметить, что при работе с .NET класс ScrollBar в
System.Windows.Controls.Primitives
Presentation отвечает за отображение полос прокрутки.http://msdn.microsoft.com/en-us/library/ie/ms534393(v=vs.85).aspx
WebKit
Расширения WebKit, связанные с настройкой полосы прокрутки:
Каждый из них может быть объединен с дополнительными псевдоселекторами:
:horizontal
- Горизонтальный псевдокласс применяется ко всем элементам полосы прокрутки, имеющим горизонтальную ориентацию.:vertical
- Вертикальный псевдокласс применяется к любым частям полосы прокрутки, которые имеют вертикальную ориентацию.:decrement
- Псевдокласс декремента применяется к кнопкам и фрагментам дорожки. Он указывает, будет ли кнопка или элемент дорожки уменьшать позицию вида при использовании (например, вверх по вертикальной полосе прокрутки, влево по горизонтальной полосе прокрутки).:increment
- псевдокласс приращения применяется к кнопкам и фрагментам дорожки. Он указывает, будет ли кнопка или элемент дорожки увеличивать позицию вида при использовании (например, вниз на вертикальной полосе прокрутки, прямо на горизонтальной полосе прокрутки).:start
- Начальный псевдокласс применяется к кнопкам и дорожкам. Указывает, находится ли объект перед большим пальцем.:end
- Конечный псевдокласс применяется к кнопкам и дорожкам. Указывает, находится ли объект после большого пальца.:double-button
- Псевдокласс с двумя кнопками применяется к кнопкам и дорожкам. Он используется для определения того, является ли кнопка частью пары кнопок, которые находятся вместе на одном конце полосы прокрутки. Для фрагментов трека указывает, упирается ли фрагмент трека в пару кнопок.:single-button
- Однокнопочный псевдокласс применяется к кнопкам и дорожкам. Он используется для определения того, находится ли кнопка в конце полосы прокрутки. Для фрагментов треков указывает, примыкает ли фрагмент трека к одной кнопке.:no-button
- Применяется к фрагментам дорожки и указывает, проходит ли фрагмент дорожки к краю полосы прокрутки, т. Е. На этом конце дорожки нет кнопки.:corner-present
- Применяется ко всем элементам полосы прокрутки и указывает, присутствует ли угол полосы прокрутки.:window-inactive
- Применяется ко всем элементам полосы прокрутки и указывает, активно ли в данный момент окно, содержащее полосу прокрутки. (В последние ночи этот псевдокласс теперь применяется и к :: selection. Мы планируем расширить его для работы с любым контентом и предложить его в качестве нового стандартного псевдокласса.)Примеры этих комбинаций
Более подробная информация о Chrome
Mozilla
У Mozilla есть некоторые расширения для манипулирования полосами прокрутки, но все они рекомендуется не использовать.
-moz-scrollbars-none
Они рекомендуют использовать переполнение: скрыто вместо этого.-moz-scrollbars-horizontal
Похоже на переполнение-х-moz-scrollbars-vertical
Похоже на переполнение-у-moz-hidden-unscrollable
Работает только внутри в настройках профиля пользователя. Отключает прокрутку корневых элементов XML и отключает использование клавиш со стрелками и колесика мыши для прокрутки веб-страниц.Документы для разработчиков Mozilla о переполнении
Более подробная информация о Mozilla
Насколько я знаю, это не очень полезно, но стоит отметить, что атрибут, который управляет отображением полос прокрутки в Firefox, - это ( ссылка ):
И последнее, но не менее важное, отступление похоже на магию.
Как уже упоминалось в некоторых других ответах, вот иллюстрация, которая достаточно понятна.
Урок истории
Просто потому, что мне любопытно, я хотел узнать о происхождении полос прокрутки, и это лучшие ссылки, которые я нашел.
Разное
В черновом варианте спецификации HTML5 этот
seamless
атрибут был определен для предотвращения появления полос прокрутки в iFrames, чтобы они могли смешиваться с окружающим содержимым на странице . Хотя этот элемент не появляется в последней редакции.Объект
scrollbar
BarProp является дочерним по отношению кwindow
объекту и представляет элемент интерфейса пользователя, который содержит механизм прокрутки или некоторую похожую концепцию интерфейса.window.scrollbars.visible
вернется,true
если полосы прокрутки видны.History API также включает в себя функции восстановления прокрутки при навигации по страницам, чтобы сохранить положение прокрутки при загрузке страницы.
window.history.scrollRestoration
может использоваться для проверки состояния скролла восстановления или изменения его статуса (добавление="auto"/"manual"
. Авто является значением по умолчанию. Изменение на ручное означает, что вы, как разработчик, станете владельцем любых изменений прокрутки, которые могут потребоваться, когда пользователь переходит к истории приложения. Если вам нужно, вы можете следить за положением прокрутки при перемещении записей истории с помощью history.pushState ().---
Дальнейшее чтение:
Примеры
источник
Вы можете сделать это с помощью обертки
div
, в которой переполнение скрыто, а внутреннее значениеdiv
установлено наauto
.Чтобы убрать внутреннюю
div
полосу прокрутки, вы можете вытащить ее из внешнегоdiv
видового экрана, применив к внутренней части отрицательное полеdiv
. Затем примените равные отступы к внутреннему элементу div, чтобы содержимое оставалось на виду.JSFiddle
HTML
CSS
источник
height: inherited
в.viewport
CSS.100%
является более универсальным и делает свою работу.-100px
и100px
??Это работает для меня с простыми свойствами CSS:
Для более старых версий Firefox используйте:
overflow: -moz-scrollbars-none;
источник
overflow: -moz-scrollbars-none;
то вы успешно удалите полосу прокрутки, но вы также удалите возможность прокрутки. Вы могли бы также просто установитьoverflow: hidden
на.container
.-moz-scrollbars-none
: «Это устаревший API и больше не гарантированно будет работать».Вот мое решение, которое теоретически охватывает все современные браузеры:
html
может быть заменен на любой элемент, который вы хотите скрыть полосу прокрутки.Примечание : я просмотрел остальные 19 ответов, чтобы посмотреть, был ли уже опубликован код, который я публикую, и похоже, что ни один из ответов не суммирует ситуацию в том виде, в каком она существует в 2019 году, хотя многие из них подробно раскрыты. Извинения, если это было сказано кем-то другим, и я пропустил это.
источник
Я думаю, я нашел обходной путь для вас, ребята, если вы все еще заинтересованы. Это моя первая неделя, но у меня это сработало ...
источник
Если вы ищете решение, чтобы скрыть полосу прокрутки для мобильных устройств, следуйте ответу Питера !
Вот jsfiddle , который использует решение ниже, чтобы скрыть горизонтальную полосу прокрутки.
Он был протестирован на планшете Samsung с Android 4.0.4 (Ice Cream Sandwich, как в собственном браузере, так и в Chrome) и на iPad с iOS 6 (как в Safari, так и в Chrome).
источник
Используйте
свойствоCSS:overflow
Вот еще несколько примеров:
источник
Как уже говорили другие люди, используйте CSS
overflow
.Но если вы все еще хотите, чтобы пользователь мог прокручивать этот контент (без видимой полосы прокрутки), вы должны использовать JavaScript.
Вот мой ответ здесь для решения: скрыть полосу прокрутки, все еще будучи в состоянии прокрутить с помощью мыши / клавиатуры
источник
В дополнение к ответу Петра:
Это будет работать так же для Internet Explorer 10:
источник
Кросс-браузерный подход к сокрытию полосы прокрутки.
Он был протестирован на Edge, Chrome, Firefox и Safari.
Скрыть полосу прокрутки, все еще будучи в состоянии прокрутить с помощью колеса мыши!
Codepen
источник
Если вы хотите, чтобы прокрутка работала, прежде чем скрывать полосы прокрутки, подумайте над их стилем. Современные версии OS X и мобильных ОС имеют полосы прокрутки, которые, хотя и нецелесообразны для захвата мышью, довольно красивы и нейтральны.
Чтобы скрыть полосы прокрутки, техника Джона Курлака работает хорошо, за исключением того, что пользователи Firefox, у которых нет сенсорных панелей, не имеют возможности прокрутки, если у них нет мыши с колесиком, что они, вероятно, делают, но даже тогда они обычно могут прокручивать только вертикально ,
Техника Джона использует три элемента:
Должна быть возможность установить одинаковый размер внешнего элемента и элемента содержимого, что исключает использование процентов, но я не могу думать ни о чем другом, что не будет работать с правильной настройкой.
Меня больше всего беспокоит, все ли версии браузеров устанавливают полосы прокрутки, чтобы сделать видимым переполненный контент видимым. Я тестировал в текущих браузерах, но не в старых.
Простите мой SASS ; P
тестирование
OS X 10.6.8. Windows - это Windows 7.
источник
@mixin{}
, чтобы сделать это%size{}
в селекторах CSS, позвоните@extend %size;
. Mixins обычно используются, когда вы вводите переменные, чтобы вернуть результат. Заполнители (aka @extend) предназначены для простого повторяющегося кода, подобного этому, где «функция» не требуется.Я просто подумал, что всем, кто читает этот вопрос, я укажу, что настройка
overflow: hidden
(или переполнение-y)body
элемента не скрывает полосы прокрутки для меня.Я должен был использовать
html
элемент.источник
Я написал версию WebKit с некоторыми опциями, такими как автоматическое скрытие , маленькая версия , только прокрутка -y или только-x :
http://codepen.io/hicTech/pen/KmKrjb
источник
Скопируйте этот код CSS в код клиента, чтобы скрыть полосу прокрутки:
источник
Мой HTML выглядит так:
Добавьте это туда,
div
где вы хотите скрыть полосу прокрутки:И добавить это в контейнер
источник
Чтобы отключить вертикальную полосу прокрутки, просто добавьте
overflow-y:hidden;
.Узнайте больше об этом: переполнение .
источник
Мой ответ будет прокручиваться даже при
overflow:hidden;
использовании jQuery:Например, прокрутите горизонтально с помощью колеса мыши:
источник
Я считаю, что вы можете манипулировать им с
overflow
помощью атрибута CSS, но они имеют ограниченную поддержку браузера. Один источник сказал, что это был Internet Explorer 5 (и более поздние версии), Firefox 1.5 (и более поздние версии) и Safari 3 (и более поздние версии) - возможно, этого достаточно для ваших целей.Прокрутка, прокрутка, прокрутка имеет хорошее обсуждение.
источник