Як приховати смугу прокрутки у Firefox?


84

Я щойно дізнався, як приховати смугу прокрутки в Google Chrome, я зробив це за допомогою цього коду:

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

Єдина проблема полягає в тому, що це не працює у Firefox. Спробував багато способів зробити це, але все одно це не працює.


2
не здається хорошою ідеєю робити це так. використовуйте переповнення css, приховане на html, body і використовуйте обгортку div зі 100% висотою та шириною.
Абхіталкс

Це може бути занадто очевидно, але чи ви пробували -moz- для Firefox? Однак я погоджуюсь з abhitalks, але це не здається чудовим способом зробити це.
Майлз


один робочий розчин stackoverflow.com/questions/5820304 / ...
IvanM

Відповіді:


118

Ви можете використовувати scrollbar-widthправило. Ви можете scrollbar-width: none;приховати смугу прокрутки у Firefox і при цьому мати можливість вільно прокручувати.

body {
   scrollbar-width: none;
}

У вас є помилка, але це має бути прийнятим рішенням.
shirajg

7
Це працює в останньому браузері, але зауважте, що це все ще експериментальна функція . Також майте на увазі, що цю властивість слід використовувати з елементом, що створює смугу прокрутки. Наприклад, якщо ви використовуєте Angular Material, md-contentто тіло не створює смугу прокрутки, а саме md-contentелемент. Отже, body { scrollbar-width: none; }не буде працювати, але md-content { scrollbar-width:none; }буде.
Саджиб Ачарія,

Дякую, брате, ти врятував мені багато часу !!
Джон

23

Щоб приховати смугу прокрутки в Chrome, Firefox та IE, ви можете використовувати це:

.hide-scrollbar
{
    overflow: auto;
    -ms-overflow-style: none; /* IE 11 */
    scrollbar-width: none; /* Firefox 64 */
}

20

Я зміг приховати смугу прокрутки, але все одно зміг прокрутити колесо миші за допомогою цього рішення:

html {overflow: -moz-scrollbars-none;}

Завантажте плагін https://github.com/brandonaaron/jquery-mousewheel і включіть цю функцію:

jQuery('html,body').bind('mousewheel', function(event) {
    event.preventDefault();
    var scrollTop = this.scrollTop;
    this.scrollTop = (scrollTop + ((event.deltaY * event.deltaFactor) * -1));
    //console.log(event.deltaY, event.deltaFactor, event.originalEvent.deltaMode, event.originalEvent.wheelDelta);
  });

13
Це, здається, еквівалентно "overflow: hidden;" і не дозволяє прокручувати :-(
bob

У мене працює - горизонтальна смуга прокрутки тепер прихована у Firefox. Дякую!
Liran H

4
За Firefox 63, це працює тільки , якщо ви встановите layout.css.overflow.moz-scrollbars.enabledна trueв налаштуваннях Firefox зручності, що робить його непридатним для використання в виробництві. developer.mozilla.org/en-US/docs/Web/CSS/overflow#Deprecated
Джош

Це не зробило для мене трюку, однак встановивши ширину смуги прокрутки: none; всередині html зробив.
Slodeveloper

8

Це те, що мені потрібно було вимкнути смуги прокрутки, зберігаючи прокрутку у Firefox, Chrome та Edge у:

          @-moz-document url-prefix() { /* Disable scrollbar Firefox */
            html{
              scrollbar-width: none;
            }
          }
          body {
            margin: 0; /* remove default margin */
            scrollbar-width: none; /* Also needed to disable scrollbar Firefox */
            -ms-overflow-style: none;  /* Disable scrollbar IE 10+ */
            overflow-y: scroll;
          }
          body::-webkit-scrollbar {
            width: 0px;
            background: transparent; /* Disable scrollbar Chrome/Safari/Webkit */
          }

5

Для веб-набору використовуйте наступне:

::-webkit-scrollbar {
    width: 0px;  /* remove scrollbar space */
    background: transparent;  /* optional: just make scrollbar invisible */
}

Для Mozilla Firefox використовуйте такий код:

@-moz-document url-prefix() {
    html,body{overflow: hidden !important;}
}

а якщо прокрутка не працює, додайте

element {overflow-y: scroll;}

до конкретного елемента


4

Це щось загальне рішення:

<div class="outer">
 <div class="inner">
    Some content...
 </div>
</div>

<style>
 .outer {
 overflow: hidden;
}
 .inner {
 margin-right: -16px;
 overflow-y: scroll;
 overflow-x: hidden;
}
</style>

Рядок прокрутки прихований батьківським div.

Для цього потрібно використовувати overflow: hidden у батьківському div.


3
Працює, але не надійно, оскільки 16 пікселів - це лише передбачувана ширина смуги прокрутки.
ігорпавлов

46
дайте кредити справжньому автору @chowey, коли копіюєте. stackoverflow.com/questions/15394065 / ...
Rexhin

Це не працює на FF 56, коли внутрішній вміст div перевищує ширину екрана
пан Джедай,

3
Це виправлення вирішує проблему для FF, але має гірші побічні ефекти в інших браузерах (вирізання тексту)
Kosmonaft,

Я легко бачу, як я використовую це у всіх дивах, для яких потрібна прокрутка мого додатка ...
Філіпп

3

Для останньої версії Firefox старі рішення вже не працюють, але я успішно використав у v66.0.3 scrollbar-colorвластивість, яку ви можете встановити transparent transparentі яка зробить смугу прокрутки у Firefox на робочому столі принаймні невидимою (все ще має місце в область перегляду та на мобільному пристрої не працює, але там смуга прокрутки - це тонка лінія, яка розміщена над вмістом праворуч).

overflow-y: auto; //or hidden if you don't want horizontal scrolling
overflow-y: auto;
scrollbar-color: transparent transparent;

Як це зробити в FF70 +? scrollbar-width: none;вже не працює. Мені потрібно приховати смугу прокрутки, а не робити її прозорою.
ген b.

3

Я використовував це, і це спрацювало. https://developer.mozilla.org/en-US/docs/Web/CSS/scrollbar-width

html {
scrollbar-width: none;
}

Примітка: Агенти користувача повинні застосовувати до області перегляду будь-яке значення ширини смуги прокрутки, встановлене в кореневому елементі.


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

У Firefox це не буде працювати, оскільки Firefox відмовився від підтримки прихованих смуг прокрутки з функціоналом (можна використовувати overflow: -moz-scrollbars-none;у старих версіях).


1

Про всяк випадок, якщо хтось шукає хакер, щоб хоч якось зробити смугу прокрутки невидимою у firefox (79.0).

Ось рішення, яке успішно працює для Chrome, IE, Safari та робить смугу прокрутки прозорою у Firefox. Жодне з наведеного не працювало для firefox (79.0), справді приховуючи смугу прокрутки.

Будь ласка, якщо хтось знайде спосіб зробити це без зміни кольору, це буде дуже корисно. Прохання зауважити нижче.

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

.scrollhost ::-moz-scrollbar {
  display: none;
 
}
 
.scrollhost {
  overflow: auto;
  -ms-overflow-style: none;
  scrollbar-color: transparent transparent; /*just hides the scrollbar for firefox */
}

0

Спробуйте скористатися цим:

overflow-y: -moz-hidden-unscrollable;


2
Він приховує, scrollbarале зупиняє дію прокрутки. яка різниця між overflow-y: -moz-hidden-unscrollable;і overflow: hidden. Насправді нічого, тому це не правильна відповідь. але я даю вам право голосу. Дякую.
Amerllic,

2
різниця полягає в тому, що перший приховує це лише у firefox
пітер

Я проголосував за вас, але мені так дивно, чому ви -2? Ваша відповідь правильна
AmerllicA

Питання полягає в тому, як приховати смуги прокрутки, але все одно мати можливість дозволити користувачеві прокручувати, якщо це потрібно, коли вміст переповнюється, а не повністю вимикати прокрутку. причиною цього є те, що смуги прокрутки FF є потворними і іноді з’являються, навіть якщо вміст не переповнений. Усі інші браузери пропонують для цього просте та елегантне рішення css - чи потрібно мені сказати, навіть IE!
Філіпп

0

У деяких конкретних випадках (елемент знаходиться в правій частині екрана, або його переповнення батьків приховано) це може бути рішенням:

@-moz-document url-prefix() {
  .element {
    margin-right: -15px;
  }
}

0

Я спробував усе, і найкраще для мого рішення було завжди показувати вертикальну смугу прокрутки, а потім додати деяке негативне поле, щоб приховати це.

Це працювало для IE11, FF60.9 та Chrome 80

body {
  -ms-overflow-style: none; /** IE11 */
  overflow-y: scroll;
  overflow-x: hidden;
  margin-right: -20px;
}

0

Я змусив це працювати для мене у ReactJS, використовуючи create-react-appце App.css:

@-moz-document url-prefix() {
  html,
  body {
    scrollbar-width: none;
  }
}

Також bodyелемент маєoverflow: auto

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