Tylko test, który działa dobrze.
#parent{
width: 100%;
height: 100%;
overflow: hidden;
}
#child{
width: 100%;
height: 100%;
overflow-y: scroll;
padding-right: 17px; /* Increase/decrease this value for cross-browser compatibility */
box-sizing: content-box; /* So the width will be 100% + 17px */
}
Working Fiddle
JavaScript:
Ponieważ szerokość paska przewijania różni się w różnych przeglądarkach, lepiej jest obsługiwać go za pomocą JavaScript. Jeśli to zrobisz Element.offsetWidth - Element.clientWidth
, zostanie wyświetlona dokładna szerokość paska przewijania.
JavaScript Working Fiddle
Lub
Za pomocą Position: absolute
,
#parent{
width: 100%;
height: 100%;
overflow: hidden;
position: relative;
}
#child{
position: absolute;
top: 0;
bottom: 0;
left: 0;
right: -17px; /* Increase/Decrease this value for cross-browser compatibility */
overflow-y: scroll;
}
Working Fiddle
JavaScript Working Fiddle
Informacja:
Na podstawie tej odpowiedzi stworzyłem prostą wtyczkę przewijania .
!important
więc usunąłembox-sizing: border-box; width: calc(100% + 50px);
i tę samą wartość dla wypełnienia. Żadna przeglądarka nie ma szerokości / wysokości paska przewijania 50Jest łatwy w WebKit, z opcjonalnym stylem:
źródło
cordova
aplikacji, działało dobrze. musiał zastosować sięoverflow:scroll
do elementu.-webkit-overflow-scrolling: touch
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
ukrywa paski przewijania w Firebox, ale także wyłącza przewijanie. Czy możesz przedstawić wersję demonstracyjną, w której to działa?-moz-scrollbars-none
właściwość została usunięta dla najnowszych wersji Firefoksa: developer.mozilla.org/en-US/docs/Web/CSS/overflow-webkit-overflow-scrolling: touch
-moz-scrollbars-none
możesz użyć@-moz-document url-prefix() { .container { overflow: hidden; } }
. Zobacz stackoverflow.com/questions/952861/… .AKTUALIZACJA:
Firefox obsługuje teraz ukrywanie pasków przewijania za pomocą CSS, więc wszystkie główne przeglądarki są teraz objęte (Chrome, Firefox, Internet Explorer, Safari itp.).
Po prostu zastosuj następujący CSS do elementu, z którego chcesz usunąć paski przewijania:
Jest to najmniej hackerskie rozwiązanie dla wielu przeglądarek, o którym obecnie wiem. Sprawdź wersję demo.
ORYGINALNA ODPOWIEDŹ:
Oto inny sposób, o którym jeszcze nie wspomniano. To jest naprawdę proste i wymaga tylko dwóch div i CSS. Nie jest potrzebny JavaScript ani zastrzeżony CSS i działa on we wszystkich przeglądarkach. Nie wymaga też jawnego ustawiania szerokości pojemnika, dzięki czemu jest płynny.
Ta metoda wykorzystuje ujemny margines, aby przesunąć pasek przewijania poza element nadrzędny, a następnie taką samą ilość dopełnienia, aby przesunąć zawartość z powrotem do pierwotnej pozycji. Ta technika działa w przypadku przewijania w pionie, poziomie i na dwa sposoby.
Dema:
Przykładowy kod wersji pionowej:
HTML:
CSS:
źródło
Posługiwać się:
Jest to sztuczka polegająca na nieco nałożeniu paska przewijania na nakładający się div, który nie ma żadnych pasków przewijania:
Dotyczy to tylko WebKit przeglądarek ... Lub możesz użyć zawartości CSS specyficznej dla przeglądarki (jeśli taka będzie w przyszłości). Każda przeglądarka może mieć inną i określoną właściwość dla odpowiednich pasków.
W przypadku Microsoft Edge użyj:
-ms-overflow-style: -ms-autohiding-scrollbar;
lub-ms-overflow-style: none;
zgodnie z MSDN .Nie ma odpowiednika dla Firefoksa. Chociaż istnieje do tego celu wtyczka jQuery, http://manos.malihu.gr/tuts/jquery_custom_scrollbar.html
źródło
::-webkit-scrollbar { display: none; } .ui-content { -webkit-overflow-scrolling: touch; }
// jQuery Mobile onMobileInit ()$.mobile.touchOverflowEnabled = true;
Ta odpowiedź nie zawiera kodu, więc oto rozwiązanie ze strony :
Według strony to podejście nie musi wcześniej znać szerokości paska przewijania, aby działać, a rozwiązanie działa również dla wszystkich przeglądarek i można je zobaczyć tutaj .
Dobrą rzeczą jest to, że nie musisz używać wypełnienia ani różnic szerokości, aby ukryć pasek przewijania.
Jest to również bezpieczne powiększanie. Rozwiązania wypełnienia / szerokości pokazują pasek przewijania po powiększeniu do minimum.
Poprawka Firefoksa: http://jsbin.com/mugiqoveko/1/edit?output
źródło
::-webkit-scrollbar {}
padding-right: 150px;
go naprawia. Testowane w FF, Chrome, Safari i Edge. Działa również przy niskich poziomach powiększenia ze względu na duże wypełnienie po prawej stronie.html { -ms-overflow-style: none;}
. W tych przeglądarkach nie trzeba używać padding-hack.overflow-y: scroll
uzyskać zachowanie przewijania, ale ukryte (podobnie jak Chrome), aby działało na Edge23.Wystarczy użyć następujących trzech wierszy, a problem zostanie rozwiązany:
Gdzie liaddshapes to nazwa div, gdzie nadchodzi zwój.
źródło
Działa to dla mnie w różnych przeglądarkach. Nie ukrywa to jednak natywnych pasków przewijania w przeglądarkach mobilnych.
W SCSS
W CSS
źródło
{}
oznaczają zagnieżdżone bloki ( )? Jak to interpretować? A&
? Być może dopracujesz swoją odpowiedź?&::-webkit-scrollbar
staje się.hide-native-scrollbar::-webkit-scrollbar { }
w CSS{ width: 0; height: 0;}
dla :: - webkit-scrollbar zamiastdisplay: none
na iOS.Poniższe działało dla mnie w Microsoft, Chrome i Mozilli dla określonego elementu div:
źródło
scrollbar-width
(tylko FF) jest oznaczony jako „eksperymentalny”HTML:
CSS:
Zastosuj CSS odpowiednio.
Sprawdź tutaj (przetestowane w Internet Explorerze i Firefoxie).
źródło
Od 11 grudnia 2018 r. (Firefox 64 i nowsze wersje) odpowiedź na to pytanie jest bardzo prosta, ponieważ Firefox 64+ implementuje teraz specyfikację Stylizacji paska przewijania CSS .
Wystarczy użyć następującego CSS:
Link do informacji o wersji przeglądarki Firefox 64 tutaj .
źródło
Posługiwać się:
CSS
HTML
źródło
Posługiwać się
Wywołaj te funkcje dla dowolnego punktu, który chcesz załadować, rozładować lub ponownie załadować paski przewijania. Nadal można go przewijać w Chrome, gdy testowałem go w Chrome, ale nie jestem pewien innych przeglądarek.
źródło
To działa dla mnie:
źródło
W nowoczesnych przeglądarkach możesz używać
wheel event
:źródło
overflow: hidden
tego kodu, abymat-card-content
(w Angular 5 oczywiście) można było przewijać i to rozwiązało mój problem. Uwaga: użyłeme.deltaY
jako mojegostep
i działało jak normalne przewijanie, więc myślę, że normalne przewijanie, ale z ukrytym paskiem przewijania, jest to najlepsze dopasowanie.Mój problem: nie chcę żadnego stylu w treści HTML. Chcę, aby moje ciało było bezpośrednio przewijalne bez paska przewijania i tylko pionowe przewijanie, współpracujące z siatkami CSS dla dowolnego rozmiaru ekranu.
Rozwiązania wyrównywania wartości marginesów w pudełku wpływają na rozwiązania w zakresie wielkości pudełka: content-box .
Nadal potrzebuję dyrektywy „-moz-scrollbars-none” i podobnie jak gdoron i Mr_Green musiałem ukryć pasek przewijania. Próbowałem
-moz-transform
i-moz-padding-start
, aby wpłynąć tylko na Firefoksa, ale były responsywne efekty uboczne, które wymagały zbyt wiele pracy.To rozwiązanie działa w przypadku treści HTML ze stylem „display: grid” i jest responsywne.
źródło
Dodanie dopełnienia do wewnętrznej
div
, jak w obecnie akceptowanej odpowiedzi, nie będzie działać, jeśli z jakiegoś powodu chcesz użyćbox-model: border-box
.W obu przypadkach działa zwiększenie szerokości wewnętrznej
div
do 100% plus szerokość paska przewijania (przy założeniu,overflow: hidden
że div div).Na przykład w CSS:
W JavaScript, w różnych przeglądarkach:
źródło
Tak właśnie robię dla przewijania w poziomie; tylko CSS i działa dobrze z frameworkami takimi jak Bootstrap / col- *. Potrzebuje tylko dwóch dodatkowych
div
s, a rodzic zwidth
lubmax-width
set:Możesz zaznaczyć tekst, aby go przewinąć lub przewinąć palcami, jeśli masz ekran dotykowy.
Krótka wersja dla leniwych:
źródło
margin-bottom
aby miećpadding-bottom
tę samą wartość. To nie zje poniżej miejsca dla elementu na dole. Zapobiega nakładaniu się.margin-bottom
Jest ujemny, myślę, że nie można go zmienić na apadding-bottom
, który nie radzi sobie z wartościami ujemnymiZdarzyło mi się wypróbować powyższe rozwiązania w moim projekcie iz jakiegoś powodu nie byłem w stanie ukryć paska przewijania z powodu pozycjonowania div. Dlatego postanowiłem ukryć pasek przewijania, wprowadzając div, który pokrywa go powierzchownie. Przykład poniżej dotyczy poziomego paska przewijania:
Odpowiedni CSS wygląda następująco:
źródło
To będzie na ciele:
A to jest CSS:
źródło
Jest to rozwiązanie typu divitis, które jednak powinno działać dla wszystkich przeglądarek ...
Znaczniki są następujące i muszą znajdować się wewnątrz czegoś o względnym ustawieniu (a jego szerokość powinna być ustawiona, na przykład 400 pikseli):
CSS:
źródło
perfect-scrollbar
Wtyczki wydaje się być droga, patrz: https://github.com/noraesae/perfect-scrollbarJest to dobrze udokumentowane i kompletne rozwiązanie oparte na JavaScript do problemu pasków przewijania.
Strona demonstracyjna: http://noraesae.github.io/perfect-scrollbar/
źródło
Poniższa stylizacja SASS powinna sprawić, że pasek przewijania będzie przezroczysty w większości przeglądarek (Firefox nie jest obsługiwany):
źródło
Innym rodzajem hacków jest zrobienie,
overflow-y: hidden
a następnie ręczne przewinięcie elementu za pomocą czegoś takiego:Na blogu deepmikoto znajduje się świetny artykuł o tym, jak wykrywać i radzić sobie z
onmousewheel
wydarzeniami . Może ci się to przydać, ale zdecydowanie nie jest to eleganckie rozwiązanie.źródło
Chciałem tylko udostępnić połączony fragment kodu do ukrywania paska przewijania, którego używam podczas programowania. Jest to zbiór kilku fragmentów znalezionych w Internecie, który działa dla mnie:
źródło
Możesz użyć kodu poniżej, aby ukryć pasek przewijania, ale nadal możesz przewijać:
źródło
Aby ukryć paski przewijania dla elementów z przepełnioną zawartością, użyj.
źródło
Kolejne proste skrzypce robocze :
Przepełnienie ukryte w kontenerze nadrzędnym i automatyczne przepełnienie w kontenerze podrzędnym. Prosty.
źródło
To podchwytliwe rozwiązanie działa nawet w starej przeglądarce IE
Jest to obejście [ pionowego paska przewijania ]
Po prostu spróbuj: jsfiddle
źródło
Po prostu ustaw szerokość szerokości dziecka na 100%, dopełnianie na 15 pikseli,
overflow-x
aby przewijać ioverflow:hidden
dla rodzica i dowolną szerokość.Działa doskonale we wszystkich głównych przeglądarkach, w tym Internet Explorer i Edge, z wyjątkiem Internet Explorera 8 i niższych.
źródło