Firefoxでスクロールバーを非表示にする方法は?


84

Google Chromeでスクロールバーを非表示にする方法を見つけたので、次のコードを使用しました。

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

唯一の問題は、これがFirefoxでは機能しないことです。多くの方法を試しましたが、それでも機能しません。


2
そのようにするのは良い考えではないようです。html、bodyに隠されたcssオーバーフローを使用し、高さと幅が100%のラッパーdivを使用します。
Abhitalks 2014年

これは少し明白すぎるかもしれませんが、Firefox用に-moz-を試しましたか?私はabhitalksに同意しますが、これはそれを行うための優れた方法ではないようです。
Myles 2014年


1ワーキングソリューションstackoverflow.com/questions/5820304/...
IvanM

回答:


118

scrollbar-widthルールを使用できます。あなたはできるscrollbar-width: none;Firefoxでスクロールバーを隠し、まだ自由にスクロールできるようにします。

body {
   scrollbar-width: none;
}

タイプミスがありますが、これは受け入れられる解決策であるはずです。
shirajg

7
これは最新のブラウザで動作しますが、これはまだ実験的な機能であることに注意してください。また、このプロパティは、スクロールバーを生成している要素で使用する必要があることに注意してください。たとえば、Angular Materialのmd-contentthenを使用している場合、本体はスクロールバーを生成せず、md-content要素は生成します。したがって、機能しbody { scrollbar-width: none; }ませんが、機能しmd-content { scrollbar-width:none; }ます。
SajibAcharya19年

ありがとう仲間、あなたは私に多くの時間を節約しました!
ジョン

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
これは「オーバーフロー:非表示」と同等のようです。スクロールは許可されません:
bob

私のために動作します-水平スクロールバーがFirefoxで非表示になりました。ありがとう!
Liran H 2017

4
Firefox 63以降、これはFirefoxの機能設定で設定layout.css.overflow.moz-scrollbars.enabledtrueた場合にのみ機能するため、実稼働での使用には適していません。developer.mozilla.org/en-US/docs/Web/CSS/overflow#Deprecated
Josh

それは私にとってはうまくいきませんでしたが、スクロールバーの幅を入れました:なし。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の場合、以下を使用します。

::-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によって非表示になっています。

これには、親divでoverflow:hiddenを使用する必要があります。


3
動作しますが、16pxはスクロールバーの想定幅であるため、信頼性はありません。
igorpavlov 2015年

46
コピーするときは、本物の作者@choweyにクレジットを与えてください。stackoverflow.com/questions/15394065/...
Rexhin

内部divコンテンツが画面幅よりも長い場合、FF 56では機能しません
Mr Jedi

3
この修正はFFの問題を解決していますが、他のブラウザーではより悪い副作用があります(テキストをカットします)
Kosmonaft 2018年

アプリをスクロールする必要があるすべてのdivでそれを使用していることが簡単にわかります...–
Philippe

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。


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

Firefoxは機能を備えた非表示のスクロールバーのサポートを廃止したため、Firefoxでは機能しません(overflow: -moz-scrollbars-none;古いバージョンで使用できます)。


1

念のため、誰かが何らかの方法でスクロールバーをfirefox(79.0)で非表示にするためのハックを探している場合。

これは、Chrome、IE、Safariで正常に機能し、Firefoxでスクロールバーを透明にするソリューションです。上記のどれも、Firefox(79.0)でスクロールバーを本当に隠すのに役立ちませんでした。

誰かが色を変えずにそれをする方法を見つけたら、それは非常に役に立ちます。plsコメント以下。

.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。実際には何もないので、それは正しい答えではありません。しかし、私はあなたに投票します。ありがとう。
AmerllicA 2018

2
違いは、最初のものがFirefoxでのみそれを隠すことです
peeter 2018年

私はあなたに投票しましたが、なぜあなたがいるの-2か私にはとても奇妙です?あなたの答えは正しいです
AmerllicA 2018年

問題は、スクロールバーを非表示にする方法ですが、コンテンツがオーバーフローしたときに必要に応じてユーザーにスクロールを許可し、スクロールを完全に無効にすることはできません。その理由は、FFスクロールバーが見苦しく、コンテンツがオーバーフローしていなくても表示されることがあるためです。他のすべてのブラウザは、そのためのシンプルでエレガントなcssソリューションを提供します-IEでさえ、言う必要があるかもしれません!
フィリップ

0

場合によっては(要素が画面の右端にあるか、親のオーバーフローが非表示になっている)、これが解決策になる可能性があります。

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

0

私はすべてを試しましたが、私の解決策に最も効果的なのは、常に垂直スクロールバーを表示し、それを非表示にするために負のマージンを追加することでした。

これはIE11、FF60.9、Chrome80で機能しました

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

0

create-react-appこれを私のApp.css:に入れることで、ReactJSでそれを使用して動作させました。

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

また、body要素にはoverflow: auto

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.