Firefox用のカスタムCSSスクロールバー


313

CSSでスクロールバーをカスタマイズしたい。

私はこのWebKit CSSコードを使用します。これはSafariとChromeでうまく機能します。

::-webkit-scrollbar {
    width: 15px;
    height: 15px;
}

::-webkit-scrollbar-track-piece  {
    background-color: #C2D2E4;
}

::-webkit-scrollbar-thumb:vertical {
    height: 30px;
    background-color: #0A4C95;
}

Firefoxで同じことをするにはどうすればよいですか?

jQueryを使用して簡単に実行できることはわかっていますが、実行可能な場合は純粋なCSSで実行することをお勧めします。

誰かの専門家のアドバイスに感謝します!


1
jQueryを使用してそれを行う方法を共有してください。私は同じ問題に直面していますが、CSSを使用してWebkitの問題を修正しました。ただし、Firefoxには、jQueryソリューションが役立つ可能性のある問題があります。
iGbanam

1
jscrollpane jQueryプラグインの使用をお勧めします。
Dimitri Vorontzov 2012

FirefoxのjScrollPaneに問題があります。jScrollPaneはChromeで完全に動作しますが、FirefoxではjScrollPaneスクロールバーの右側に空のシステムスクロールバーがあります。スクロールバーは1つだけにする必要があります
iGbanam '26 / 07/26

1
違います。あなたがそれを持っているなら、あなたはどこかで何か間違ったことをしました。
Dimitri Vorontzov 2012

ここに私の答えを参照してください:stackoverflow.com/questions/7357203/custom-scrollbars/...
Buzinas

回答:


239

2018年後半の時点で、Firefoxで利用できるカスタマイズが制限されています!

これらの回答を参照してください:

そして、これは背景情報のために:https//bugzilla.mozilla.org/show_bug.cgi?id = 1460109


::-webkit-scrollbarと同等のFirefoxはありません。

JavaScriptを使用する必要があります。

多くの人がこの機能を望んでいます。https//bugzilla.mozilla.org/show_bug.cgi?id = 77790をご覧ください。


JavaScriptの置き換えに関する限り、次のことを試すことができます。


2
ありがとう、ThirtyDot。ただし、1つの質問:-moz-appearance:scrollbartrack-verticalおよびその他の関連するCSS拡張についてはどうでしょうか。おそらくそれらは何らかの方法で使用できますか?
Dimitri Vorontzov、

2
いいえ。残念ながら、に可能な値はどれも-moz-appearance役立ちません。"The -moz-appearance CSS property is used in Gecko (Firefox) to display an element using a platform-native styling based on the operating system's theme."-ネイティブのスクロールバーが表示されます。
thirtydot '29年

15
これを読んでいる人が実用的な解決策を必要とする場合に備えて、jscrollpane jQueryプラグインを使用することになりました。
Dimitri Vorontzov

1
@JacquesMathieu、私はあなたが何を意味するのかわかります。それは男爵のせいではありませんが、ページをダウンロードして男爵が初期化されないようにすると、バグは依然として発生します。クロームのように見えます。
thephpdev 2018

3
drafts.c​​sswg.org/css-scrollbars-1は、仕様の最初の段階の開始ですが、Firefox Nightlyではデフォルトで有効になっています。
ウェグリー

53

Firefox 64は、仕様ドラフトCSS Scrollbars Module Level 1のサポートを追加します。これにより、およびの2つの新しいプロパティが追加されますscrollbar-widthscrollbar-colorスクロールバーの表示方法をある程度制御を与えます。

scrollbar-color次の値のいずれかに設定できます(MDNからの説明)。

  • auto 他の関連するスクロールバーの色プロパティがない場合の、スクロールバーのトラック部分のデフォルトのプラットフォームレンダリング。
  • dark 暗いスクロールバーを表示します。これは、プラットフォームによって提供されるスクロールバーの暗いバリアント、または暗い色のカスタムスクロールバーのいずれかです。
  • light 明るいスクロールバーを表示します。これは、プラットフォームによって提供されるスクロールバーの明るいバリアント、または明るい色のカスタムスクロールバーのいずれかです。
  • <color> <color> 最初の色をスクロールバーのつまみに、2番目の色をスクロールバーのトラックに適用します。

darklight値に注意してください現在はFirefoxに実装されていません

macOSノート:

macOSのデフォルトである自動非表示の半透明のスクロールバーは、このルールでは色付けできません(背景に基づいて独自の対照的な色を選択します)。常に表示されているスクロールバー([システム環境設定]> [スクロールバーを表示]> [常に])のみが着色されます。

ビジュアルデモ:

scrollbar-width次の値のいずれかに設定できます(MDNからの説明)。

  • auto プラットフォームのデフォルトのスクロールバー幅。
  • thin そのオプションを提供するプラットフォーム上の薄いスクロールバー幅バリアント、またはデフォルトのプラットフォームのスクロールバー幅より薄いスクロールバー。
  • none スクロールバーは表示されませんが、要素は引き続きスクロール可能です。

仕様に従って、特定の長さの値を設定することもできます。両方thinと特定の長さは、すべてのプラットフォームで何も実行しない場合があり、正確に何をするかはプラットフォーム固有です。特に、Firefoxは現在、特定の長さの値をサポートしていないようです(バグトラッカーのこのコメントはこれを確認しているようです))。thinkeyworkは、-以上のMacOSとWindowsのサポートで、しかしよくサポートされるように見えるん。

長さの値のオプションと全体が scrollbar-widthプロパティが将来のドラフトでの削除が検討されているその場合、この特定のプロパティは将来のバージョンでFirefoxから削除される可能性があります。

ビジュアルデモ:


この回答をありがとう。承認された回答を更新してこれ(および他の関連する回答)を宣伝し、人々がそれをより見やすくするようにしました。
thirtydot

1
これは基本的に、3週間前のLucaの回答と同じです。
Josh Habdas

@JoshHabdasその回答には、互換性や使用方法に関する情報はほとんど含まれていません。他の回答には探していた重要な情報がなかったため、この回答を作成しました。
Alexander O'Mara

1
あなたは彼らに信用を与える、フィードバックを提案する、または彼らの答えを編集することを検討することができます。
Josh Habdas

2
@JoshHabdasええと、5人が既にそれを役立っていると感じており、ウェブのどこにも見当たらない情報が含まれているので、私は同意しません。
Alexander O'Mara

43

代替品を提供できますか?

スクリプティングは一切なく、標準化されたcssスタイルと少しの創造性のみです。短い答え-既存のブラウザのスクロールバーの一部をマスクします。つまり、すべての機能を保持します。

.scroll_content {
    position: relative;
    width: 400px;
    height: 414px;
    top: -17px;
    padding: 20px 10px 20px 10px;
    overflow-y: auto;
}

デモともう少し詳しい説明については、ここをチェックしてください...

jsfiddle.net/aj7bxtjz/1/


7
残念ながら、これは質問の答えにはなりません。Dimitriはスクロールバーを非表示にするのではなく、スタイルを設定しようとしています。
stvnrynlds

14
それは4年前のことです(私はそれを知っています)ので、彼はすでにもう何かをしていると思います。しかし、このトピックは現在も関連しています。他のブラウザでは、スクロールバーの「違法」な変更を許可していますが、FFでは許可していません。それが投稿することにした理由です。フロントエンドの結果は、スクロールバーの一部が非表示になっているという事実に関係なく、視覚的にスタイリングするスクロールバーです。
トマズ

私はこのソリューションが大好きですが、絶対位置付けのすべての追加マークアップ(可変サイズのものを悪夢にする)を除いて、スタイルを実際に変更することはできません。既存のスクローラーの要素をマスク/非表示にするだけです。
RozzA、2015年

3
ええ、4年後、それはコミュニティに貢献しているのと同じくらいOPの質問に答えることではありません。
tmthyjames、2015年

3
この問題の本質は、一部のレンダリングエンジンが提供するソリューションが非標準であることです。これは私の懸念に最もよく対処する質問であり、これは私がスクロールしていた答えです。
FilipDupanović16年

36

誰かがJQueryプラグインで仕事をすることを検討している場合に備えて、私の調査結果を共有したいと思いました。

私はJQueryカスタムスクロールバーを与えました行きます。それはかなり空想的で、スムーズなスクロール(スクロールの慣性による)を実行し、調整可能なパラメーターの負荷がありますが、私にとってはCPUに負荷がかかりすぎています(そしてDOMにかなりの量が追加されます)。

これで、Perfect Scrollbarを使用できるようになりました。シンプルで軽量(6KB)で、これまでのところかなりの仕事をしています。(私が知る限り)CPUに負荷をかけず、DOMにほとんど追加しません。微調整するパラメーターは2つ(wheelSpeedとwheelPropagation)しかありませんが、必要なのはこれだけであり、スクロールするコンテンツの更新(画像の読み込みなど)を適切に処理します。

PS私はJScrollPaneをざっと見てみましたが、@ simoneは正しいです。今は少し日付があり、PITAです。


3
トラックパッドスクロールエミュレーターもあります。これは、twitch.tvが使用するものです。
forivall 2014年

1
パーフェクトなスクロールバーは実際に本当に良いです。他の多くのオプションを使い果たした後、私はそれが最良の解決策であることがわかりました。それを提案してくれてありがとう。
Leonard Teo 2014

nanoScrollerも非常に優れており、比較的リーンです。jamesflorentino.github.io/nanoScrollerJS重いJSプラグインとは対照的に、これはネイティブスクローラーを非表示にし、ネイティブの 'scroll'イベントを使用して代替スクローラーを表示します
Danny R

1
jqueryソリューションはすべて、遅いマシンやストレスのかかったマシンでは遅れるため、すべて回避していますが、PSは勝者のようです
RozzA

31

Firefox 64以降、単純なスクロールバーのスタイル設定に新しい仕様を使用することができます(ベンダーの接頭辞付きのChromeほど完全ではありません)。

では、この例と同様の(等しくない)、最終的な結果(例えば、あなたのオリジナルのクロームのルールを使用)とアドレスのFirefoxとChromeの両方に異なるルールを組み合わせたソリューションを参照することが可能です。

主なルールは次のとおりです。

Firefoxの場合

.scroller {
  overflow-y: scroll;
  scrollbar-color: #0A4C95 #C2D2E4;
}

Chromeの場合

.scroller::-webkit-scrollbar {
    width: 15px;
    height: 15px;
}

.scroller::-webkit-scrollbar-track-piece  {
    background-color: #C2D2E4;
}

.scroller::-webkit-scrollbar-thumb:vertical {
    height: 30px;
    background-color: #0A4C95;
}

ソリューションに関しては、次のように、より単純なChromeルールを使用することもできます。

.scroller::-webkit-scrollbar-track  {
    background-color: #C2D2E4;
}

.scroller::-webkit-scrollbar-thumb {
    height: 30px;
    background-color: #0A4C95;
}

最後に、Firefoxでもスクロールバーの矢印を非表示にするには、現在、次のルールで「細い」に設定する必要があります。scrollbar-width: thin;


1
結局のところ、IE 5.5は何かを正しく取得しているようです。:)
Josh Habdas


0

ユーザースタイルで機能し、Webページでは機能しないようです。私はこれに関してMozillaからの公式の指示を見つけていません。ある時点で機能した可能性がありますが、Firefoxはこれを公式にサポートしていません。このバグはまだ開いていますhttps://bugzilla.mozilla.org/show_bug.cgi?id=77790

scrollbar {
/*  clear useragent default style*/
   -moz-appearance: none !important;
}
/* buttons at two ends */
scrollbarbutton {
   -moz-appearance: none !important;
}
/* the sliding part*/
thumb{
   -moz-appearance: none !important;
}
scrollcorner {
   -moz-appearance: none !important;
   resize:both;
}
/* vertical or horizontal */
scrollbar[orient="vertical"] {
    color:silver;
}

詳細については、http://codemug.com/html/custom-scrollbars-using-css/を確認してください。


2
私はあなたが書いたのと同じように試しましたが、FFでうまく機能しません。jsfiddle.net/ gGbkY / 1を確認してください 。何か不足していますか?
サテンダーシン2013

ユーザースタイルで機能し、Webページでは機能しないようです。私はこれに関してMozillaからの公式の指示を見つけていません。
ipirlo 2013

1
同じリンクを確認してください:機能しません
Krunal Shah

3
ユーザースタイルとは?
Marecky 2017

リンクしたバグは17年前に報告されたもので、まだ割り当てられていません。私はFFがネイティブスクロールバーの非表示をサポートしないと言っても安全だと思います。
Sterling Bourne

-2
@-moz-document url-prefix(http://),url-prefix(https://) {
    scrollbar {
       -moz-appearance: none !important;
       background: rgb(0,255,0) !important;
    }
    thumb,scrollbarbutton {
       -moz-appearance: none !important;
       background-color: rgb(0,0,255) !important;
    }

    thumb:hover,scrollbarbutton:hover {
       -moz-appearance: none !important;
       background-color: rgb(255,0,0) !important;
    }
    scrollbarbutton {
       display: none !important;
    }
    scrollbar[orient="vertical"] {
      min-width: 15px !important;
    }
}

5
コードBLOBの機能またはその方法を説明する情報がほとんどないか、まったくない。
Josh Habdas
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.