Вимкнення вертикальних та горизонтальних смуг переглядачів


117

Чи можливо відключити браузери вертикальні та горизонтальні смуги прокрутки за допомогою jQuery або javascript?


Я думаю , що в деяких ситуаціях , особливо якщо ви хочете , щоб перемикатися між спіраллю і не свиткою цим рішенням є кращим: stackoverflow.com/questions/8701754 / ...
— Юсеф Салімпур

Ви можете знайти більш повну відповідь на це питання тут stackoverflow.com/a/25561646/1922144
— davidcondrey

Відповіді:


144

У випадку, якщо вам потрібна можливість ховати та показувати смуги прокрутки динамічно, ви могли б використовувати

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

і

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

десь у вашому коді.


4
Переповнений прихований не завжди працює в IE. Дивіться відповідь AnthonyWJones нижче.
— Тіаго Алмейда

4
oveflow: hiddenне завадить нічого на смартфонах.
— dvlden

У хромі це відключає смугу прокрутки, не приховуючи її (вона все ще є і все ще змінює розмір всього іншого, але тепер її сірого
— кольору

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
Два оновлення надзвичайно мало, оскільки вони є єдиною чистою відповіддю на javascript.
— Fzs2

2
@HermannIngjaldsson: Побачити, що OP запитував рішення JavaScript або jQuery і прийняв рішення jQuery 4 роки тому, це має сенс. Я не кажу, що відповідь не є доброю, просто констатуючи очевидне щодо нижчих голосів. +1 від мене все одно.
— Nope

це єдине рішення, яке працювало для мене, оскільки прихований перелив тіла не атакує весь документ, це правильне рішення цієї проблеми! велике спасибі, ти врятував мені багато часу!
— Adnane.T

Це геніальне рішення і заслуговує на підвищення цінності. Він також вирішує проблему з фіксованим css, де сторінка буде прокручуватися доверху.
— haipham23

50

Спробуйте CSS

<body style="overflow: hidden">

15
Для сумісності браузера я також додав би цей стиль до тегу HTML: html, body {overflow: hidden;}
— Ady

32

Поки у нас переповнення: приховано на тілі. Однак IE не завжди шанує це, і вам потрібно також поставити scroll = "no" на елемент тіла та / або розмістити переповнення: приховано і на html-елементі.

Ви можете зробити це далі, коли вам потрібно "взяти під контроль" порт перегляду, ви можете це зробити: -

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

Елемент, наділений висотою 100% у тілі, має повну висоту вікна перегляду вікна, а елемент розташований абсолютно за допомогою нижнього: nnPX буде встановлено nn пікселів над нижньою кромкою вікна тощо.


2
чи не є "," має бути ";", в css тіла?
— paynestrike

12

Спробуйте CSS.

Якщо ви хочете видалити Горизонтальний

overflow-x: hidden;

І якщо ви хочете видалити вертикальний

overflow-y: hidden;

10

У сучасних версіях IE (IE10 і вище) прокрутки можна приховати за допомогою -ms-overflow-styleвластивості .

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

У Chrome можна прокручувати смуги прокрутки:

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

Це дуже корисно, якщо ви хочете використовувати веб-додаток прокрутки 'за замовчуванням' у веб-додатку, що значно швидше, ніж overflow-y: scroll.


тільки це спрацювало на мене з усіх відповідей :) дякую!
— Гедімін

9

Якщо вам також потрібна підтримка Internet Explorer 6, просто перелийте html

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

і

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

5

У IE є помилка з панелями прокрутки. Тож якщо ви хочете будь-який із двох, ви повинні включити наступне, щоб приховати горизонтальну смугу прокрутки:

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

і приховати вертикаль:

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


4

(Я поки не можу коментувати, але хотів поділитися цим):

Код Лінзі працював на мене в браузері настільних ПК. Однак на iPad (Chrome, iOS 9) програма застосувала. Щоб виправити це, я змінив

document.documentElement.style.overflow = ...

до

document.body.style.overflow = ...

що вирішило мою проблему.


2

Оскільки Firefox має стрілку ключ найкоротших, ви , ймовірно , хочете поставити <div>навколо нього зі стилем CSS: overflow:hidden;.


2

За допомогою JQuery ви можете відключити смугу прокрутки з цим кодом:

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

Також ви можете знову включити цей код:

 $('body').unbind('mousewheel');
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.