Wyłącz pionowe i poziome paski przewijania w przeglądarkach


Odpowiedzi:


144

Jeśli potrzebujesz możliwości dynamicznego ukrywania i pokazywania pasków przewijania, możesz użyć

$("body").css("overflow", "hidden");

i

$("body").css("overflow", "auto");

gdzieś w swoim kodzie.


4
Ukryte przepełnienie nie zawsze działa w IE. Zobacz odpowiedź Anthony'ego WJones poniżej.
— Tiago Almeida,

4
oveflow: hiddennic nie zapobiegnie na smartfonach.
— dvlden,

W chrome wyłącza to pasek przewijania bez ukrywania go (wciąż tam jest i wciąż zmienia rozmiar wszystkiego innego, ale teraz jest wyszarzony)
— taltamir

121
function reloadScrollBars() {
    document.documentElement.style.overflow = 'auto';  // firefox, chrome
    document.body.scroll = "yes"; // ie only
}

function unloadScrollBars() {
    document.documentElement.style.overflow = 'hidden';  // firefox, chrome
    document.body.scroll = "no"; // ie only
}

5
Dwa głosy za to zadziwiająco mało, ponieważ jest to jedyna czysta odpowiedź javascript.
— Fzs2

2
@HermannIngjaldsson: Widząc, że OP poprosił o rozwiązanie JavaScript lub jQuery i zaakceptował rozwiązanie jQuery 4 lata temu, ma sens. Nie mówię, że odpowiedź nie jest dobra, po prostu stwierdzam oczywistość dotyczącą niższych głosów. I tak +1 ode mnie.
— Nie,

to jedyne rozwiązanie, które działało dla mnie, ponieważ ukryty przepełnienie treści nie atakuje całego dokumentu, to jest właściwe rozwiązanie tego problemu! wielkie dzięki, zaoszczędziłeś mi dużo czasu!
— Adnane.T

To genialne rozwiązanie i zasługuje na pochwałę. Rozwiązuje również problem z naprawionym css, w którym strona będzie przewijana do góry.
— haipham 23

50

Wypróbuj CSS

<body style="overflow: hidden">

15
Ze względu na zgodność z przeglądarkami dodałbym również ten styl do tagu HTML: html, body {overflow: hidden;}
— Ady

32

Póki co mamy przelew: ukryty na korpusie. Jednak IE nie zawsze to honoruje i musisz umieścić scroll = "no" również w elemencie body i / lub wstawić przepełnienie: ukryte również w elemencie html.

Możesz pójść dalej, gdy chcesz przejąć kontrolę nad portem widoku, możesz to zrobić: -

<style>
 body {width:100%; height:100%; overflow:hidden; margin:0; }
 html {width:100%; height:100%; overflow:hidden; }
</style>

Element o nadanej wysokości 100% w treści ma pełną wysokość okna, a element pozycjonowany absolutnie za pomocą dołu: nnPX zostanie ustawiony nn pikseli nad dolną krawędzią okna itp.


2
czy nie ',' powinno być ';', w css treści?
— paynestrike

12

Wypróbuj CSS.

Jeśli chcesz usunąć Horizontal

overflow-x: hidden;

A jeśli chcesz usunąć Vertical

overflow-y: hidden;

10

W nowoczesnych wersjach IE (IE10 i nowszych) paski przewijania można ukrywać za pomocą -ms-overflow-stylewłaściwości .

html {
     -ms-overflow-style: none;
}

W przeglądarce Chrome paski przewijania można stylizować:

::-webkit-scrollbar {
    display: none;
}

Jest to bardzo przydatne, jeśli chcesz użyć „domyślnego” przewijania treści w aplikacji internetowej, które jest znacznie szybsze niż overflow-y: scroll.


tylko to zadziałało ze wszystkich odpowiedzi :) dzięki!
— Gediminas

9

Jeśli potrzebujesz również obsługi przeglądarki Internet Explorer 6, po prostu przepełnij HTML

$("html").css("overflow", "hidden");

i

$("html").css("overflow", "auto");

5

IE ma jakiś błąd związany z paskami przewijania. Więc jeśli chcesz jedno z dwóch, musisz uwzględnić następujące elementy, aby ukryć poziomy pasek przewijania:

overflow-x: hidden;
overflow-y:scroll;

i aby ukryć pion:

overflow-y: hidden;
overflow-x: scroll;


4

(Nie mogę jeszcze komentować, ale chcę to udostępnić):

Kod Lyncee działał dla mnie w przeglądarce na komputerze. Jednak na iPadzie (Chrome, iOS 9) zawiesił aplikację. Aby to naprawić, zmieniłem się

document.documentElement.style.overflow = ...

do

document.body.style.overflow = ...

co rozwiązało mój problem.


2

Ponieważ Firefox posiada klawisz strzałki skróty, prawdopodobnie chcesz umieścić <div>wokół niego ze stylem CSS overflow:hidden;.


2

Za pomocą JQuery możesz wyłączyć pasek przewijania za pomocą tego kodu:

$('body').on({
    'mousewheel': function(e) {
        if (e.target.id == 'el') return;
        e.preventDefault();
        e.stopPropagation();
     }
});

Możesz również włączyć go ponownie za pomocą tego kodu:

 $('body').unbind('mousewheel');
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.