Ustaw overflow: hidden;na znaczniku body w ten sposób:
<styletype="text/css">
body {overflow: hidden;}</style>
Powyższy kod ukrywa zarówno poziomy, jak i pionowy pasek przewijania.
Jeśli chcesz ukryć tylko pionowy pasek przewijania , użyj overflow-y:
<styletype="text/css">
body {overflow-y: hidden;}</style>
A jeśli chcesz ukryć tylko poziomy pasek przewijania , użyj overflow-x:
<styletype="text/css">
body {overflow-x: hidden;}</style>
Uwaga: spowoduje to również wyłączenie funkcji przewijania. Zapoznaj się z poniższymi odpowiedziami, jeśli chcesz ukryć pasek przewijania, ale nie funkcję przewijania.
Nie ma opcji „none” dla właściwości przepełnienia. Dostępne opcje to: widoczny, ukryty, przewijany, automatyczny, dziedziczenie.
Sergiy Sokolenko
1273
W rzeczywistości nie jest to właściwa odpowiedź: przepełnienie: ukryte nie „ukrywa” paska przewijania. Zatrzymuje także funkcję przewijania na stronie. Nie o to dokładnie prosimy.
adriendenat
17
W Chrome, gdy przepełnienie ciała jest ustawione na hiddenprzewijanie, będzie działać z kółkiem myszy. W przeglądarce Firefox przewijanie nie działa z kółkiem myszy, zajęło mi to trochę czasu, aby to zrozumieć.
Doug Molineux,
13
Nie widzę sensu w twierdzeniu, że overflow: hiddenwyłącza przewijanie. Jeśli ktoś chce ukryć pasek przewijania, prawdopodobnie uważa sterowanie za niepotrzebne, ponieważ w ogóle nie ma treści do przewijania . A może po prostu nie chcą całkowicie przewijać .
BoltClock
39
Dla mnie stwierdzenie to jest całkowicie poprawne, ponieważ pytanie polega na ukryciu paska przewijania , a nie na wyłączeniu przewijania .
sboisse
976
WebKit obsługuje pseudo elementy paska przewijania, które można ukryć za pomocą standardowych reguł CSS:
#element::-webkit-scrollbar {display: none;}
Jeśli chcesz ukryć wszystkie paski przewijania, użyj
::-webkit-scrollbar {display: none;}
Nie jestem pewien co do przywracania - to zadziałało, ale może być właściwy sposób:
::-webkit-scrollbar {display: block;}
Oczywiście możesz zawsze używać width: 0, dzięki czemu można go łatwo przywrócić width: auto, ale nie jestem fanem nadużywania widthpoprawek widoczności.
Firefox 64 obsługuje teraz domyślnie eksperymentalną właściwość szerokości paska przewijania (63 wymaga ustawienia flagi konfiguracji). Aby ukryć pasek przewijania w przeglądarce Firefox 64:
#element {scrollbar-width: none;}
Aby sprawdzić, czy bieżąca przeglądarka obsługuje pseudo element lub scrollbar-widthwypróbuj ten fragment:
.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>
(Pamiętaj, że to nie jest prawidłowa odpowiedź na pytanie, ponieważ ukrywa również poziome paski, ale tego właśnie szukałem, gdy Google wskazał mi tutaj, więc pomyślałem, że mimo to opublikuję).
Właśnie tego szukałem, ponieważ naprawdę chciałem ukryć paski przewijania, ale nadal przewijać elementy (np. Klawisze góra / dół)
Mathias
7
powinna to być najlepsza odpowiedź, ponieważ inne rozwiązania nie pozwalają na przewijanie
zawsze
7
Czy obsługuje to inne przeglądarki oprócz webkit? Ponieważ nie działa w Mozilli.
Rupam Datta
12
Jest jednak prośba o funkcję w narzędziu do śledzenia Mozilli. Możesz przyspieszyć wdrożenie, głosując na to tam :)
Peter
3
TO PRAWIDŁOWA ODPOWIEDŹ! Jak inni zaginęli. Problemem jest nie tylko ukrywanie paska przewijania, ale także wpływ przepełnienia na inne style. Natrafiłem na ten sam problem w naszej aplikacji. NIE chcemy, aby automatyczne przelewanie dotyczyło 99% aplikacji, jednak istnieje sekcja pomocy, w której użytkownik ma możliwość przewijania w dół. Ponieważ ciało ma przepełnienie: ukryte, jedyną waną, która sobie z tym poradziła, była klasa ng w katalogu głównym, lub dzięki tym facetom, tylko używając CSS.
Leon Gaban,
524
Tak, jakby ...
Kiedy zadajesz pytanie: „Czy paski przewijania przeglądarki można usunąć w jakiś sposób, zamiast po prostu ukryć lub zakamuflować”, wszyscy powiedzą „Niemożliwe”, ponieważ nie można usunąć pasków przewijania ze wszystkich przeglądarek w zgodny i krzyżowy sposób, a następnie cały argument użyteczności.
Można jednak uniemożliwić przeglądarce generowanie i wyświetlanie pasków przewijania, jeśli nie dopuścisz do przepełnienia strony.
Oznacza to po prostu, że musimy proaktywnie zastąpić to samo zachowanie, które zwykle zrobiłaby dla nas przeglądarka, i przekazać przeglądarce podziękowania, ale nie, dziękuję kolego. Zamiast próbować usuwać paski przewijania (o których wszyscy wiemy, że nie jest to możliwe), możemy uniknąć przewijania (całkowicie wykonalne) i przewijania elementów, które tworzymy i mamy większą kontrolę.
Utwórz div z ukrytym przepełnieniem. Wykryj, kiedy użytkownik próbuje przewijać, ale nie jest w stanie tego zrobić, ponieważ wyłączyliśmy możliwość przewijania przeglądarki z przepełnieniem: ukryty .. i zamiast tego przenieś zawartość w górę za pomocą JavaScript, gdy to nastąpi. W ten sposób tworzymy własne przewijanie bez domyślnego przewijania w przeglądarce lub użyj wtyczki takiej jak iScroll .
---
Ze względu na dokładność; wszystkie specyficzne dla dostawcy sposoby manipulacji paskami przewijania:
Internet Explorer 5.5+
* Te właściwości nigdy nie były częścią specyfikacji CSS, ani nie zostały nigdy zatwierdzone ani prefiksowane przez producenta, ale działają w Internet Explorerze i Konquerorze. Można je również ustawić lokalnie w arkuszu stylów użytkownika dla każdej aplikacji. W Internet Explorerze znajdziesz go pod zakładką „Dostępność”, w Konquerorze pod zakładką „Arkusze stylów”.
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;}
Począwszy od Internet Explorera 8, właściwości te były prefiksowane przez producenta przez Microsoft, ale nadal nie zostały zatwierdzone przez W3C .
Internet Explorer scrolludostępnia, który ustawia, czy wyłączyć, czy włączyć paski przewijania; Można go również użyć do uzyskania wartości położenia pasków przewijania.
W programie Microsoft Internet Explorer 6 i nowszych, gdy !DOCTYPEdeklaracja służy do określania trybu zgodnego ze standardami, ten atrybut dotyczy elementu HTML. Gdy tryb zgodnych ze standardami nie jest określony, jak we wcześniejszych wersjach programu Internet Explorer, atrybut ten odnosi się do BODYelementu, NOTHTML elementu.
Warto również zauważyć, że podczas pracy z platformą .NET klasa ScrollBar System.Windows.Controls.Primitivesw strukturze prezentacji odpowiada za renderowanie pasków przewijania.
Każdy z nich można połączyć z dodatkowymi pseudo-selektorami:
:horizontal - Pseudoklasa pozioma dotyczy wszystkich elementów paska przewijania, które mają orientację poziomą.
:vertical - Pionowa pseudoklasa dotyczy wszystkich elementów paska przewijania, które mają orientację pionową.
:decrement- Pseudoklasa dekrementacji dotyczy przycisków i utworów. Wskazuje, czy przycisk lub utwór zmniejszy pozycję widoku, gdy zostanie użyty (np. W górę na pionowym pasku przewijania, w lewo na poziomym pasku przewijania).
:increment- Pseudoklasa przyrostowa dotyczy przycisków i utworów. Wskazuje, czy przycisk lub utwór zwiększy pozycję widoku, gdy zostanie użyty (np. W dół na pionowym pasku przewijania, bezpośrednio na poziomym pasku przewijania).
:start- Pseudoklasa początkowa dotyczy przycisków i utworów. Wskazuje, czy obiekt jest umieszczony przed kciukiem.
:end- Pseudoklasa końcowa dotyczy przycisków i utworów. Wskazuje, czy obiekt jest umieszczony za kciukiem.
:double-button- Pseudoklasa z dwoma przyciskami dotyczy przycisków i utworów. Służy do wykrywania, czy przycisk jest częścią pary przycisków, które są razem na tym samym końcu paska przewijania. W przypadku utworów wskazuje, czy utwór opiera się o parę przycisków.
:single-button- Pseudoklasa jednoprzyciskowa dotyczy przycisków i utworów. Służy do wykrywania, czy przycisk jest sam na końcu paska przewijania. W przypadku kawałków utworu wskazuje, czy utwór opiera się o przycisk singletonu.
:no-button - Stosuje się do utworów i wskazuje, czy utwór biegnie do krawędzi paska przewijania, tj. Nie ma przycisku na tym końcu utworu.
:corner-present - Dotyczy wszystkich elementów paska przewijania i wskazuje, czy jest obecny narożnik paska przewijania.
:window-inactive- Dotyczy wszystkich elementów paska przewijania i wskazuje, czy okno zawierające pasek przewijania jest obecnie aktywne. (W ostatnich klubach nocnych ta pseudoklasa dotyczy teraz również :: selection. Planujemy rozszerzyć ją do pracy z dowolną zawartością i zaproponować jako nową standardową pseudoklasę.)
Przykłady tych kombinacji
::-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 ma pewne rozszerzenia do manipulowania paskami przewijania, ale wszystkie nie zaleca się używania.
-moz-scrollbars-none Zalecają użycie przelewu: ukrytego w miejscu tego.
-moz-scrollbars-horizontal Podobne do przelewu-x
-moz-scrollbars-vertical Podobne do przelewu-y
-moz-hidden-unscrollableDziała tylko wewnętrznie w ramach ustawień profilu użytkownika. Wyłącza przewijanie elementów głównych XML i wyłącza za pomocą klawiszy strzałek i kółka myszy do przewijania stron internetowych.
O ile wiem, nie jest to naprawdę przydatne, ale warto zauważyć, że atrybut, który kontroluje, czy paski przewijania są wyświetlane w przeglądarce Firefox, jest ( odnośnik ):
Atrybut: paski przewijania
Wpisz: nsIDOMBarProp
Opis: Obiekt kontrolujący, czy paski przewijania są wyświetlane w oknie. Ten atrybut jest „wymienny” w JavaScript. Tylko czytać
Wreszcie, wyściółka jest jak magia.
Jak wspomniano wcześniej w niektórych innych odpowiedziach, oto ilustracja, która jest wystarczająco oczywista.
Lekcja historii
Właśnie dlatego, że jestem ciekawy, chciałem dowiedzieć się o pochodzeniu pasków przewijania i to są najlepsze referencje, jakie znalazłem.
Obiekt scrollbarBarProp jest obiektem potomnym windowobiektu i reprezentuje element interfejsu użytkownika zawierający mechanizm przewijania lub podobną koncepcję interfejsu. window.scrollbars.visiblepowróci, truejeśli paski przewijania będą widoczne.
History API zawiera również funkcje przywracania przewijania w nawigacji strony, aby zachować pozycję przewijania podczas ładowania strony.
window.history.scrollRestorationmoże służyć do sprawdzania stanu przywracania lub zmiany jego statusu (dołączanie ="auto"/"manual". Domyślną wartością jest Auto. Zmiana na ręczną oznacza, że jako programista przejmiesz na własność wszelkie zmiany przewijania, które mogą być wymagane, gdy użytkownik przejdzie historię aplikacji W razie potrzeby możesz śledzić pozycję przewijania, przesuwając wpisy historii za pomocą history.pushState ().
Ta odpowiedź miałaby zastosowanie do znacznie większej liczby przeglądarek (a mianowicie IE) niż do obecnie ocenianej odpowiedzi.
Matt Jensen,
Świetny dodatek. Właściwie już dziś wdrożyłem to samo rozwiązanie! Warto wspomnieć, że drugi element powinien być przepełniony: ukryty;
Matt Jensen,
2
To jest poprawna, w pełni funkcjonalna odpowiedź. Wyjaśniam, że jeśli po prostu chcesz zatrzymać przewijanie użytkownika, możesz użyć reguły przepełnienia. Możesz także wdrożyć własną funkcję przewijania wbudowaną w dom. Jeśli to nie wystarczy, możesz ustawić właściwości paska przewijania bezpośrednio przy użyciu różnych reguł dla różnych przeglądarek.
newshorts
1
jest to niezwykle przemyślana odpowiedź, bardzo szczegółowa i połączona z wieloma zasobami, ale dla użytkowników technologii asystujących istnieją ogromne problemy, gdy wyłączasz przewijanie i używasz javascript do obsługi całego przewijania. Jeśli nie ustawisz fokusu na elemencie za każdym razem, gdy przewijasz użytkownika, wówczas użytkownik AT zostanie całkowicie zagubiony. Ponadto twój użytkownik stracił teraz całą precyzyjną kontrolę nad tym, co widzi. Bardzo słaby UX do przejęcia przewijania dla twojego użytkownika.
ShiningLight,
Firefox Quantum 63.0.1 w systemie MacOS High Sierra nie ukrywa paska przewijania, nawet z regułą „przepełnienie: -moz-scrollbars-none”. Czy ktoś wie na to rozwiązanie? Wszystkie pozostałe przeglądarki wydają się działać z sugerowanymi rozwiązaniami.
Simona Adriani,
106
Możesz to zrobić za pomocą opakowania, divktóre ma ukryty przelew i divzestaw wewnętrzny ustawiony na auto.
Aby usunąć divpasek przewijania wewnętrznego , możesz wyciągnąć go z okna zewnętrznego div, stosując margines ujemny do wewnętrznego div. Następnie zastosuj równe wypełnienie wewnętrznego div, aby zawartość pozostała widoczna.
.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;}
To powinna być zaakceptowana odpowiedź imo. Jedyne, co musiałem dodać, to było height: inheritedw .viewportcss.
Helzgate
4
Jedynym problemem związanym z tą odpowiedzią jest „martwa” przestrzeń pozostawiona przez przesunięty pasek przewijania, ponieważ tak naprawdę nie znamy szerokości paska przewijania, aby odjąć go od wypełnienia.
Frondor
3
Ponadto nie trzeba używać stałych wartości wypełnienia i marginesów. 100%jest bardziej wszechstronny i spełnia swoje zadanie.
Frondor
Pracował w IE11, Operah i Chrome, nie testowałem jeszcze Firefoksa. To świetna odpowiedź, +1.
prawie początkujący
dlaczego -100pxi 100px??
oldboy
61
Działa to dla mnie z prostymi właściwościami CSS:
.container {-ms-overflow-style: none;// Internet Explorer 10+
scrollbar-width: none;// Firefox}.container::-webkit-scrollbar {
display: none;// Safari and Chrome}
W przypadku starszych wersji Firefoksa użyj: overflow: -moz-scrollbars-none;
Niestety nie działa to w FireFox 48.0.2 na macOS Sierra. Jeśli to zrobisz overflow: -moz-scrollbars-none;, z powodzeniem usuniesz pasek przewijania, ale również usuniesz możliwość przewijania. Równie dobrze możesz po prostu ustawić overflow: hiddenopcję .container.
Zaktualizowałem odpowiedź o najnowsze wsparcie dla przeglądarki Firefox :)
Hristo Eftimov
56
Oto moje rozwiązanie, które teoretycznie obejmuje wszystkie nowoczesne przeglądarki:
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 można zastąpić dowolnym elementem, którego chcesz ukryć pasek przewijania.
Uwaga : przejrzałem pozostałe 19 odpowiedzi, aby sprawdzić, czy kod, który publikuję, został już uwzględniony i wydaje się, że żadna pojedyncza odpowiedź nie podsumowuje sytuacji w 2019 r., Chociaż wiele z nich jest dopracowanych w szczegółach. Przepraszam, jeśli ktoś powiedział to, a ja tego nie zauważyłem.
Działa dla mnie w chrome i firefox, nie testowałem IE ani żadnej innej przeglądarki. jsfiddle.net/8xtfk729
Ben Davis
1
W przypadku Chrome (co najmniej v54) powoduje to wyłączenie przewijania za pomocą kółka przewijania z jakiegoś powodu. Przewijaj za pomocą klawiszy strzałek, home / end / pg w dół / pg w górę, dotknij i przesuń myszką 3 kliknięcie i przeciąganie nadal działa.
House3272,
Ta odpowiedź jest prawidłowa, faktycznie działa i wydaje się działać w różnych przeglądarkach.
Sam
To ukrywa całą divę po mojej stronie
Jonny
16
Jeśli szukasz rozwiązania, aby ukryć pasek przewijania dla urządzeń mobilnych, skorzystaj z odpowiedzi Petera !
Oto jsfiddle , który wykorzystuje poniższe rozwiązanie, aby ukryć poziomy pasek przewijania.
Został przetestowany na tablecie Samsung z Androidem 4.0.4 (Ice Cream Sandwich, zarówno w natywnej przeglądarce, jak i Chrome) oraz na iPadzie z iOS 6 (zarówno w Safari, jak i Chrome).
To jest poprawna odpowiedź i powinna być pierwsza. Wszystko powyżej nie odpowiada na pytanie. OP nie prosi o wyłączenie przewijania wyłączone, zhe chce ukryć pasek przewijania.
pixelpax
11
Oprócz odpowiedzi Piotra:
#element::-webkit-scrollbar {
display: none;}
Będzie to działać tak samo dla Internet Explorera 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;}
wyjaśnienie, w jaki sposób to będzie docenione - granie z widocznością rodziców / dzieci w celu ukrycia paska przewijania jest okropne
JackyJohnson
1
@believesInSanta Dodałem komentarze i codepen, aby lepiej wyjaśnić. Nie zgadzam się z twoją oceną, że gra z widocznością to okropny sposób na ukrycie paska przewijania. Rozumiem, że jest to hack, ale właściwym sposobem na osiągnięcie tego efektu byłoby, gdyby wszystkie przeglądarki obsługiwały sposób stylizowania paska przewijania osobno, na przykład Chrome i Safari.
Blake Plumb,
2
Właśnie zakochałem się w twoim rozwiązaniu. Doskonale działa (stosowany w aplikacjach zaprojektowanych do użytku przez nowoczesne przeglądarki). Dziękuję bardzo!
Maxime Lafarie
7
Jeśli chcesz, aby przewijanie działało, przed ukryciem pasków przewijania rozważ ich stylizację. Nowoczesne wersje OS X i mobilnych systemów operacyjnych mają paski przewijania, które, choć niepraktyczne do chwytania za pomocą myszy, są dość piękne i neutralne.
Aby ukryć paski przewijania, technika Johna Kurlaka działa dobrze, z wyjątkiem pozostawienia użytkowników Firefoksa, którzy nie mają touchpadów, bez możliwości przewijania, chyba że mają mysz z kółkiem, co prawdopodobnie robią, ale nawet wtedy zwykle mogą przewijać tylko pionowo .
Technika Johna wykorzystuje trzy elementy:
Element zewnętrzny do maskowania pasków przewijania.
Środkowy element mający paski przewijania.
I element treści, aby zarówno ustawić rozmiar środkowego elementu, jak i mieć paski przewijania.
Musi być możliwe ustawienie tego samego rozmiaru elementów zewnętrznych i zawartości, co eliminuje użycie wartości procentowych, ale nie mogę wymyślić niczego innego, co nie działałoby z odpowiednim poprawieniem.
Moim największym zmartwieniem jest to, czy wszystkie wersje przeglądarek ustawiają paski przewijania, aby widoczne były przepełnione treści. Testowałem w obecnych przeglądarkach, ale nie starszych.
%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;}
Testowanie
OS X to 10.6.8. Windows to Windows 7.
Firefox 32.0 Paski przewijania ukryte. Klawisze strzałek nie przewijają się, nawet po kliknięciu, aby ustawić ostrość, ale kółko myszy i dwa palce na gładziku działają. OS X i Windows.
Chrome 37.0 Paski przewijania ukryte. Klawisze strzałek działają po kliknięciu, aby ustawić ostrość. Działa kółko myszy i gładzik. OS X i Windows.
Ukryte paski przewijania programu Internet Explorer 11. Klawisze strzałek działają po kliknięciu, aby ustawić ostrość. Koło myszy działa. Windows
Safari 5.1.10 Paski przewijania ukryte. Klawisze strzałek działają po kliknięciu, aby ustawić ostrość. Działa kółko myszy i gładzik. OS X.
Android 4.4.4 i 4.1.2. Paski przewijania ukryte. Przewijanie dotykowe działa. Próbowałem w Chrome 37.0, Firefox 32.0 i HTMLViewer w 4.4.4 (cokolwiek to jest). W HTMLViewer strona ma rozmiar zamaskowanej zawartości i może być również przewijana! Przewijanie współdziała akceptowalnie z powiększaniem strony.
Nota niepowiązana (o ile chodzi o pytanie). W tym przypadku powinieneś użyć @extend kontra @include. Zamiast tego @mixin{}zrobiłbyś %size{}to w selektorach css, zadzwoń @extend %size;. Mixiny są zwykle używane, gdy przyciągasz zmienne, aby zwrócić wynik. Symbole zastępcze (aka @extend) są przeznaczone do prostego, powtarzanego kodu, takiego jak ten - gdzie nie jest potrzebna „funkcja”.
Mike Barwick,
1
Zredagowałem, aby użyć @extend. Wynik jest prawdopodobnie mniej zrozumiały dla osób, które nie znają SCSS, ale wystarczająco dobrze.
Seth W. Klein
6
Pomyślałem, że wskazałbym każdemu, kto czytał to pytanie, że ustawienie overflow: hidden(lub przepełnienie y) bodyelementu nie ukrywało dla mnie pasków przewijania.
Nie pamiętam dokładnie, ponieważ było to kilka miesięcy temu, ale wydaje mi się, że ustawienie przepełnienia na ciele działało w Chrome, ale nie w Firefoksie (lub odwrotnie). Jednak użycie tagu HTML działało na obu.
Brad Azevedo,
Z pamięci może to być dziwna różnica w trybie.
thomasrutter
5
Napisałem wersję WebKit z niektórymi opcjami, takimi jak automatyczne ukrywanie , mała wersja , przewijaj tylko-y lub tylko-x :
Scrolljacking działa, ale prawie zawsze jest słabym doświadczeniem użytkownika.
Brandon Anzaldi
1
chociaż jest to możliwe, dobrym przykładem są ogromne problemy dla użytkowników technologii asystujących, gdy wyłączasz przewijanie i używasz javascript do obsługi przewijania. Jeśli nie ustawisz fokusu na elemencie za każdym razem, gdy przewijasz użytkownika, wówczas użytkownik AT zostanie całkowicie zagubiony. Ponadto każdy użytkownik stracił teraz dokładnie dostrojoną kontrolę nad tym, co widzi. Bardzo słaby UX do przejęcia przewijania dla twojego użytkownika. Oprócz kółka myszy musisz także obsługiwać klawisze góra / dół, rotory czytnika ekranu, kliknięcia myszą i sterowanie touchpadem. Staje się to niewygodne dla programisty i okropne dla użytkownika.
ShiningLight,
2
Wierzę, że możesz manipulować nim za pomocą overflowatrybutu CSS, ale mają ograniczoną obsługę przeglądarki. Jedno ze źródeł podało, że był to Internet Explorer 5 (i nowszy), Firefox 1.5 (i nowszy) i Safari 3 (i nowszy) - być może wystarczające do Twoich celów.
Dobry link Miło jest wiedzieć, jak wynik w wielu przeglądarkach. Niestety liczba zrzutów ekranu z ukończonymi wynikami jest zepsuta
Chetabahana
0
Próbowałem wszystkiego i najlepsze dla mojego rozwiązania było zawsze wyświetlanie pionowego paska przewijania, a następnie dodanie marginesu ujemnego, aby go ukryć.
Odpowiedzi:
Ustaw
overflow: hidden;
na znaczniku body w ten sposób:Powyższy kod ukrywa zarówno poziomy, jak i pionowy pasek przewijania.
Jeśli chcesz ukryć tylko pionowy pasek przewijania , użyj
overflow-y
:A jeśli chcesz ukryć tylko poziomy pasek przewijania , użyj
overflow-x
:Uwaga: spowoduje to również wyłączenie funkcji przewijania. Zapoznaj się z poniższymi odpowiedziami, jeśli chcesz ukryć pasek przewijania, ale nie funkcję przewijania.
źródło
hidden
przewijanie, będzie działać z kółkiem myszy. W przeglądarce Firefox przewijanie nie działa z kółkiem myszy, zajęło mi to trochę czasu, aby to zrozumieć.overflow: hidden
wyłącza przewijanie. Jeśli ktoś chce ukryć pasek przewijania, prawdopodobnie uważa sterowanie za niepotrzebne, ponieważ w ogóle nie ma treści do przewijania . A może po prostu nie chcą całkowicie przewijać .WebKit obsługuje pseudo elementy paska przewijania, które można ukryć za pomocą standardowych reguł CSS:
Jeśli chcesz ukryć wszystkie paski przewijania, użyj
Nie jestem pewien co do przywracania - to zadziałało, ale może być właściwy sposób:
Oczywiście możesz zawsze używać
width: 0
, dzięki czemu można go łatwo przywrócićwidth: auto
, ale nie jestem fanem nadużywaniawidth
poprawek widoczności.Firefox 64 obsługuje teraz domyślnie eksperymentalną właściwość szerokości paska przewijania (63 wymaga ustawienia flagi konfiguracji). Aby ukryć pasek przewijania w przeglądarce Firefox 64:
Aby sprawdzić, czy bieżąca przeglądarka obsługuje pseudo element lub
scrollbar-width
wypróbuj ten fragment:Pokaż fragment kodu
(Pamiętaj, że to nie jest prawidłowa odpowiedź na pytanie, ponieważ ukrywa również poziome paski, ale tego właśnie szukałem, gdy Google wskazał mi tutaj, więc pomyślałem, że mimo to opublikuję).
źródło
Tak, jakby ...
Kiedy zadajesz pytanie: „Czy paski przewijania przeglądarki można usunąć w jakiś sposób, zamiast po prostu ukryć lub zakamuflować”, wszyscy powiedzą „Niemożliwe”, ponieważ nie można usunąć pasków przewijania ze wszystkich przeglądarek w zgodny i krzyżowy sposób, a następnie cały argument użyteczności.
Można jednak uniemożliwić przeglądarce generowanie i wyświetlanie pasków przewijania, jeśli nie dopuścisz do przepełnienia strony.
Oznacza to po prostu, że musimy proaktywnie zastąpić to samo zachowanie, które zwykle zrobiłaby dla nas przeglądarka, i przekazać przeglądarce podziękowania, ale nie, dziękuję kolego. Zamiast próbować usuwać paski przewijania (o których wszyscy wiemy, że nie jest to możliwe), możemy uniknąć przewijania (całkowicie wykonalne) i przewijania elementów, które tworzymy i mamy większą kontrolę.
Utwórz div z ukrytym przepełnieniem. Wykryj, kiedy użytkownik próbuje przewijać, ale nie jest w stanie tego zrobić, ponieważ wyłączyliśmy możliwość przewijania przeglądarki z przepełnieniem: ukryty .. i zamiast tego przenieś zawartość w górę za pomocą JavaScript, gdy to nastąpi. W ten sposób tworzymy własne przewijanie bez domyślnego przewijania w przeglądarce lub użyj wtyczki takiej jak iScroll .
---
Ze względu na dokładność; wszystkie specyficzne dla dostawcy sposoby manipulacji paskami przewijania:
Internet Explorer 5.5+
* Te właściwości nigdy nie były częścią specyfikacji CSS, ani nie zostały nigdy zatwierdzone ani prefiksowane przez producenta, ale działają w Internet Explorerze i Konquerorze. Można je również ustawić lokalnie w arkuszu stylów użytkownika dla każdej aplikacji. W Internet Explorerze znajdziesz go pod zakładką „Dostępność”, w Konquerorze pod zakładką „Arkusze stylów”.
Począwszy od Internet Explorera 8, właściwości te były prefiksowane przez producenta przez Microsoft, ale nadal nie zostały zatwierdzone przez W3C .
Więcej informacji o programie Internet Explorer
Internet Explorer
scroll
udostępnia, który ustawia, czy wyłączyć, czy włączyć paski przewijania; Można go również użyć do uzyskania wartości położenia pasków przewijania.W programie Microsoft Internet Explorer 6 i nowszych, gdy
!DOCTYPE
deklaracja służy do określania trybu zgodnego ze standardami, ten atrybut dotyczy elementu HTML. Gdy tryb zgodnych ze standardami nie jest określony, jak we wcześniejszych wersjach programu Internet Explorer, atrybut ten odnosi się doBODY
elementu, NOTHTML
elementu.Warto również zauważyć, że podczas pracy z platformą .NET klasa ScrollBar
System.Windows.Controls.Primitives
w strukturze prezentacji odpowiada za renderowanie pasków przewijania.http://msdn.microsoft.com/en-us/library/ie/ms534393(v=vs.85).aspx
WebKit
Rozszerzenia WebKit związane z dostosowaniem paska przewijania to:
Każdy z nich można połączyć z dodatkowymi pseudo-selektorami:
:horizontal
- Pseudoklasa pozioma dotyczy wszystkich elementów paska przewijania, które mają orientację poziomą.:vertical
- Pionowa pseudoklasa dotyczy wszystkich elementów paska przewijania, które mają orientację pionową.:decrement
- Pseudoklasa dekrementacji dotyczy przycisków i utworów. Wskazuje, czy przycisk lub utwór zmniejszy pozycję widoku, gdy zostanie użyty (np. W górę na pionowym pasku przewijania, w lewo na poziomym pasku przewijania).:increment
- Pseudoklasa przyrostowa dotyczy przycisków i utworów. Wskazuje, czy przycisk lub utwór zwiększy pozycję widoku, gdy zostanie użyty (np. W dół na pionowym pasku przewijania, bezpośrednio na poziomym pasku przewijania).:start
- Pseudoklasa początkowa dotyczy przycisków i utworów. Wskazuje, czy obiekt jest umieszczony przed kciukiem.:end
- Pseudoklasa końcowa dotyczy przycisków i utworów. Wskazuje, czy obiekt jest umieszczony za kciukiem.:double-button
- Pseudoklasa z dwoma przyciskami dotyczy przycisków i utworów. Służy do wykrywania, czy przycisk jest częścią pary przycisków, które są razem na tym samym końcu paska przewijania. W przypadku utworów wskazuje, czy utwór opiera się o parę przycisków.:single-button
- Pseudoklasa jednoprzyciskowa dotyczy przycisków i utworów. Służy do wykrywania, czy przycisk jest sam na końcu paska przewijania. W przypadku kawałków utworu wskazuje, czy utwór opiera się o przycisk singletonu.:no-button
- Stosuje się do utworów i wskazuje, czy utwór biegnie do krawędzi paska przewijania, tj. Nie ma przycisku na tym końcu utworu.:corner-present
- Dotyczy wszystkich elementów paska przewijania i wskazuje, czy jest obecny narożnik paska przewijania.:window-inactive
- Dotyczy wszystkich elementów paska przewijania i wskazuje, czy okno zawierające pasek przewijania jest obecnie aktywne. (W ostatnich klubach nocnych ta pseudoklasa dotyczy teraz również :: selection. Planujemy rozszerzyć ją do pracy z dowolną zawartością i zaproponować jako nową standardową pseudoklasę.)Przykłady tych kombinacji
Więcej informacji o Chrome
Mozilla
Mozilla ma pewne rozszerzenia do manipulowania paskami przewijania, ale wszystkie nie zaleca się używania.
-moz-scrollbars-none
Zalecają użycie przelewu: ukrytego w miejscu tego.-moz-scrollbars-horizontal
Podobne do przelewu-x-moz-scrollbars-vertical
Podobne do przelewu-y-moz-hidden-unscrollable
Działa tylko wewnętrznie w ramach ustawień profilu użytkownika. Wyłącza przewijanie elementów głównych XML i wyłącza za pomocą klawiszy strzałek i kółka myszy do przewijania stron internetowych.Dokumenty deweloperów Mozilli na temat „Przepełnienia”
Więcej informacji o Mozilli
O ile wiem, nie jest to naprawdę przydatne, ale warto zauważyć, że atrybut, który kontroluje, czy paski przewijania są wyświetlane w przeglądarce Firefox, jest ( odnośnik ):
Wreszcie, wyściółka jest jak magia.
Jak wspomniano wcześniej w niektórych innych odpowiedziach, oto ilustracja, która jest wystarczająco oczywista.
Lekcja historii
Właśnie dlatego, że jestem ciekawy, chciałem dowiedzieć się o pochodzeniu pasków przewijania i to są najlepsze referencje, jakie znalazłem.
Różne
W wersji roboczej specyfikacji HTML5
seamless
atrybut został zdefiniowany, aby zapobiec pojawianiu się pasków przewijania w ramkach iFrame, aby można je było łączyć z otaczającą zawartością strony . Chociaż ten element nie pojawia się w najnowszej wersji.Obiekt
scrollbar
BarProp jest obiektem potomnymwindow
obiektu i reprezentuje element interfejsu użytkownika zawierający mechanizm przewijania lub podobną koncepcję interfejsu.window.scrollbars.visible
powróci,true
jeśli paski przewijania będą widoczne.History API zawiera również funkcje przywracania przewijania w nawigacji strony, aby zachować pozycję przewijania podczas ładowania strony.
window.history.scrollRestoration
może służyć do sprawdzania stanu przywracania lub zmiany jego statusu (dołączanie="auto"/"manual"
. Domyślną wartością jest Auto. Zmiana na ręczną oznacza, że jako programista przejmiesz na własność wszelkie zmiany przewijania, które mogą być wymagane, gdy użytkownik przejdzie historię aplikacji W razie potrzeby możesz śledzić pozycję przewijania, przesuwając wpisy historii za pomocą history.pushState ().---
Dalsza lektura:
Przykłady
źródło
Możesz to zrobić za pomocą opakowania,
div
które ma ukryty przelew idiv
zestaw wewnętrzny ustawiony naauto
.Aby usunąć
div
pasek przewijania wewnętrznego , możesz wyciągnąć go z okna zewnętrznegodiv
, stosując margines ujemny do wewnętrznegodiv
. Następnie zastosuj równe wypełnienie wewnętrznego div, aby zawartość pozostała widoczna.JSFiddle
HTML
CSS
źródło
height: inherited
w.viewport
css.100%
jest bardziej wszechstronny i spełnia swoje zadanie.-100px
i100px
??Działa to dla mnie z prostymi właściwościami CSS:
W przypadku starszych wersji Firefoksa użyj:
overflow: -moz-scrollbars-none;
źródło
overflow: -moz-scrollbars-none;
, z powodzeniem usuniesz pasek przewijania, ale również usuniesz możliwość przewijania. Równie dobrze możesz po prostu ustawićoverflow: hidden
opcję.container
.-moz-scrollbars-none
: „To jest przestarzały interfejs API i nie ma już gwarancji, że będzie działał”.Oto moje rozwiązanie, które teoretycznie obejmuje wszystkie nowoczesne przeglądarki:
html
można zastąpić dowolnym elementem, którego chcesz ukryć pasek przewijania.Uwaga : przejrzałem pozostałe 19 odpowiedzi, aby sprawdzić, czy kod, który publikuję, został już uwzględniony i wydaje się, że żadna pojedyncza odpowiedź nie podsumowuje sytuacji w 2019 r., Chociaż wiele z nich jest dopracowanych w szczegółach. Przepraszam, jeśli ktoś powiedział to, a ja tego nie zauważyłem.
źródło
Myślę, że znalazłem obejście dla was, jeśli nadal jesteście zainteresowani. To mój pierwszy tydzień, ale zadziałało dla mnie ...
źródło
Jeśli szukasz rozwiązania, aby ukryć pasek przewijania dla urządzeń mobilnych, skorzystaj z odpowiedzi Petera !
Oto jsfiddle , który wykorzystuje poniższe rozwiązanie, aby ukryć poziomy pasek przewijania.
Został przetestowany na tablecie Samsung z Androidem 4.0.4 (Ice Cream Sandwich, zarówno w natywnej przeglądarce, jak i Chrome) oraz na iPadzie z iOS 6 (zarówno w Safari, jak i Chrome).
źródło
Użyj
właściwościCSS:overflow
Oto kilka innych przykładów:
źródło
Jak już inni mówili, używaj CSS
overflow
.Ale jeśli nadal chcesz, aby użytkownik mógł przewijać tę zawartość (bez widocznego paska przewijania), musisz użyć JavaScript.
Zobacz moją odpowiedź na rozwiązanie: Ukryj pasek przewijania, wciąż będąc w stanie przewijać za pomocą myszy / klawiatury
źródło
Oprócz odpowiedzi Piotra:
Będzie to działać tak samo dla Internet Explorera 10:
źródło
Podejście do ukrywania paska przewijania w różnych przeglądarkach.
Został przetestowany na Edge, Chrome, Firefox i Safari
Ukryj pasek przewijania, wciąż będąc w stanie przewijać kółkiem myszy!
Codepen
źródło
Jeśli chcesz, aby przewijanie działało, przed ukryciem pasków przewijania rozważ ich stylizację. Nowoczesne wersje OS X i mobilnych systemów operacyjnych mają paski przewijania, które, choć niepraktyczne do chwytania za pomocą myszy, są dość piękne i neutralne.
Aby ukryć paski przewijania, technika Johna Kurlaka działa dobrze, z wyjątkiem pozostawienia użytkowników Firefoksa, którzy nie mają touchpadów, bez możliwości przewijania, chyba że mają mysz z kółkiem, co prawdopodobnie robią, ale nawet wtedy zwykle mogą przewijać tylko pionowo .
Technika Johna wykorzystuje trzy elementy:
Musi być możliwe ustawienie tego samego rozmiaru elementów zewnętrznych i zawartości, co eliminuje użycie wartości procentowych, ale nie mogę wymyślić niczego innego, co nie działałoby z odpowiednim poprawieniem.
Moim największym zmartwieniem jest to, czy wszystkie wersje przeglądarek ustawiają paski przewijania, aby widoczne były przepełnione treści. Testowałem w obecnych przeglądarkach, ale nie starszych.
Przepraszam za moje SASS ; P
Testowanie
OS X to 10.6.8. Windows to Windows 7.
źródło
@mixin{}
zrobiłbyś%size{}
to w selektorach css, zadzwoń@extend %size;
. Mixiny są zwykle używane, gdy przyciągasz zmienne, aby zwrócić wynik. Symbole zastępcze (aka @extend) są przeznaczone do prostego, powtarzanego kodu, takiego jak ten - gdzie nie jest potrzebna „funkcja”.Pomyślałem, że wskazałbym każdemu, kto czytał to pytanie, że ustawienie
overflow: hidden
(lub przepełnienie y)body
elementu nie ukrywało dla mnie pasków przewijania.Musiałem użyć tego
html
elementu.źródło
Napisałem wersję WebKit z niektórymi opcjami, takimi jak automatyczne ukrywanie , mała wersja , przewijaj tylko-y lub tylko-x :
http://codepen.io/hicTech/pen/KmKrjb
źródło
Skopiuj ten kod CSS do kodu klienta w celu ukrycia paska przewijania:
źródło
Mój HTML wygląda tak:
Dodaj to do
div
miejsca, w którym chcesz ukryć pasek przewijania:I dodaj to do kontenera
źródło
Aby wyłączyć pionowy pasek przewijania, wystarczy dodać
overflow-y:hidden;
.Znajdź więcej na ten temat: przepełnienie .
źródło
Moja odpowiedź przewinie się nawet wtedy
overflow:hidden;
, gdy za pomocą jQuery:Na przykład przewijaj w poziomie za pomocą kółka myszy:
źródło
Wierzę, że możesz manipulować nim za pomocą
overflow
atrybutu CSS, ale mają ograniczoną obsługę przeglądarki. Jedno ze źródeł podało, że był to Internet Explorer 5 (i nowszy), Firefox 1.5 (i nowszy) i Safari 3 (i nowszy) - być może wystarczające do Twoich celów.Przewijanie, przewijanie, przewijanie ma dobrą dyskusję.
źródło
Próbowałem wszystkiego i najlepsze dla mojego rozwiązania było zawsze wyświetlanie pionowego paska przewijania, a następnie dodanie marginesu ujemnego, aby go ukryć.
źródło