HTMLページのスクロールバーを非表示にする


748

CSSを使用してスクロールバーを非表示にできますか?どうしますか?


4
@ UweKeim、IE11にトリックはありません
daVe

回答:


425

次のoverflow: hidden;ようにbodyタグに設定します。

<style type="text/css">
    body {
        overflow: hidden;
    }
</style>

上記のコードは、水平スクロールバーと垂直スクロールバーの両方を非表示にします。

垂直スクロールバーのみを非表示にする場合は、次を使用しますoverflow-y

<style type="text/css">
    body {
        overflow-y: hidden;
    }
</style>

また、水平スクロールバーのみを非表示にしたい場合は、次を使用しますoverflow-x

<style type="text/css">
    body {
        overflow-x: hidden;
    }
</style>

注:スクロール機能も無効になります。スクロールバーを非表示にして、スクロール機能を非表示にしたい場合は、以下の回答を参照してください。


4
オーバーフロープロパティには「なし」オプションはありません。使用可能なオプションには、表示、非表示、スクロール、自動、継承があります。
Sergiy Sokolenko 2010

1273
実際、これは完全に正しい答えではありません。overflow:hiddenはスクロールバーを「非表示」にしません。また、ページのスクロール機能も停止します。それは私たちが求めるものではありません。
adriendenat 2013年

17
Chromeでは、ボディオーバーフローがhiddenスクロールに設定されている場合、マウススクロールホイールで動作します。Firefoxでは、スクロールはマウススクロールホイールでは機能しません。これを理解するにはしばらく時間がかかりました。
Doug Molineux 2013

13
overflow: hiddenスクロールを無効にするアサーションのポイントはわかりません。スクロールバーを非表示にしたい場合、最初にスクロールするコンテンツがないため、おそらくコントロールは不要であると見なさます。あるいは、完全にスクロールできるようにしたくないだけかもしれません
BoltClock

39
問題はスクロールバー非表示にすることであり、スクロール無効にすることではないので私にとってはアサーションは完全に有効です。
sboisse 2014年

976

WebKitは、標準のCSSルールで非表示にできるスクロールバーの疑似要素をサポートしています。

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

すべてのスクロールバーを非表示にしたい場合は、

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

復元について確信がありません-これはうまくいきましたが、それを行う正しい方法があるかもしれません:

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

もちろん、いつでもを使用width: 0できます。これはで簡単に復元できますwidth: autoが、私はwidth可視性の微調整を悪用するのが好きではありません。

Firefox 64はデフォルトで実験的なscrollbar-widthプロパティをサポートするようになりました(63は設定フラグの設定が必要です)。Firefox 64でスクロールバーを非表示にするには:

#element {
    scrollbar-width: none;
}

現在のブラウザが疑似要素またはのいずれかをサポートしているかどうかを確認するにはscrollbar-width、次のスニペットを試してください。


(水平バーも非表示になるため、これは実際には質問に対する正しい答えではないことに注意してください。ただし、Googleがここに私をポイントしたときに私が探していたので、とにかく投稿します。)


11
スクロールバーを非表示にしたいが、要素をまだスクロールできるようにしたいので(たとえば、上下キー)
Mathias

7
他のソリューションは、聞かせていないので、これが最良の答えをする必要がありますスクロール
nuway

7
これは、webkit以外のブラウザーをサポートしていますか?モジラでは動かないから。
Rupam Datta 2013

12
ただし、Mozillaトラッカーには機能のリクエストがあります。そこに投票して実装をスピードアップできるかもしれません:)
Peter

3
これが正解です。他が欠けているので。問題は、スクロールバーを非表示にすることだけではなく、オーバーフローが他のスタイルにどのように影響するかです。私のアプリでもまったく同じ問題が発生しました。アプリの99%でオーバーフロー自動は必要ありませんが、ユーザーが下にスクロールできるようにするヘルプセクションがあります。本体にはoverflow:hiddenがあるため、これを処理する唯一の方法はルートのngクラス、またはこの連中のおかげでCSSを使用しただけでした。
Leon Gaban 2016

524

はい、ちょっと…

あなたが質問をするときは、「ブラウザのスクロールバーは、単に非表示にしたりカモフラージュのではなく、何らかの方法で除去することができる」ことができないため、誰もが「不可」と言うだろう削除 Aにすべてのブラウザからスクロールバーを準拠し、相互互換性のある方法であり、それからユーザビリティの議論全体があります。

ただし、Webページのオーバーフローを許可しない場合は、ブラウザーがスクロールバーを生成して表示する必要がなくなる可能性があります。

これは、ブラウザーが通常私たちに代わって行うのと同じ動作を積極的に代用し、ブラウザーに感謝の意を示すが、感謝の意志は知らせないことを意味するだけです。スクロールバーを削除しようとするのではなく(誰もが可能ではないことがわかっています)、スクロールを回避して(完全に実行可能)、作成してより詳細に制御できる要素内でスクロールします。

オーバーフローを非表示にしたdivを作成します。ユーザーがスクロールしようとしたときに検出しますが、overflow:hidden ..でスクロールするブラウザー機能を無効にしているため検出できません。代わりに、これが発生したときにJavaScriptを使用してコンテンツを上に移動します。これにより、ブラウザのデフォルトのスクロールなしで独自のスクロールを作成するか、iScrollなどのプラグインを使用します。

---

徹底するために; スクロールバーを操作するすべてのベンダー固有の方法:

Internet Explorer 5.5以降

*これらのプロパティはCSS仕様の一部ではなく、承認もベンダーも接頭辞が付いていませんが、Internet ExplorerおよびKonquerorで機能します。これらは、各アプリケーションのユーザースタイルシートでローカルに設定することもできます。Internet Explorerでは、[アクセシビリティ]タブの下にあり、Konquerorでは[スタイルシート]タブの下にあります。

body, html { /* These are defaults and can be replaced by hexadecimal color values */
    scrollbar-base-color: aqua;
    scrollbar-face-color: ThreeDFace;
    scrollbar-highlight-color: ThreeDHighlight;
    scrollbar-3dlight-color: ThreeDLightShadow;
    scrollbar-shadow-color: ThreeDDarkShadow;
    scrollbar-darkshadow-color: ThreeDDarkShadow;
    scrollbar-track-color: Scrollbar;
    scrollbar-arrow-color: ButtonText;
}

Internet Explorer 8の時点で、これらのプロパティはMicrosoftによってプレフィックスが付けられたベンダーでしたが、W3Cによってまだ承認されていませんでした。

-ms-scrollbar-base-color
-ms-scrollbar-face-color
-ms-scrollbar-highlight-color
-ms-scrollbar-3dlight-color
-ms-scrollbar-shadow-color
-ms-scrollbar-darkshadow-color
-ms-scrollbar-base-color
-ms-scrollbar-track-color

Internet Explorerの詳細

Internet Explorerではscroll、スクロールバーを無効または有効にするかどうかを設定できます。スクロールバーの位置の値を取得するためにも使用できます。

Microsoft Internet Explorer 6以降では、!DOCTYPE宣言を使用して標準準拠モードを指定すると、この属性はHTML要素に適用されます。標準準拠モードが指定されていない場合は、以前のバージョンのInternet Explorerと同様に、この属性はに適用されるBODY要素、NOTHTML要素。

.NETを使用する場合System.Windows.Controls.Primitives、プレゼンテーションフレームワークのScrollBarクラスがスクロールバーのレンダリングを担当することにも注意してください。

http://msdn.microsoft.com/en-us/library/ie/ms534393(v=vs.85).aspx


WebKit

スクロールバーのカスタマイズに関連するWebKit拡張機能は次のとおりです。

::-webkit-scrollbar {}             /* 1 */
::-webkit-scrollbar-button {}      /* 2 */
::-webkit-scrollbar-track {}       /* 3 */
::-webkit-scrollbar-track-piece {} /* 4 */
::-webkit-scrollbar-thumb {}       /* 5 */
::-webkit-scrollbar-corner {}      /* 6 */
::-webkit-resizer {}               /* 7 */

ここに画像の説明を入力してください

これらはそれぞれ、追加の疑似セレクターと組み合わせることができます。

  • :horizontal –水平方向の疑似クラスは、水平方向のスクロールバー部分に適用されます。
  • :vertical –垂直疑似クラスは、垂直方向のスクロールバー部分に適用されます。
  • :decrement–デクリメント疑似クラスは、ボタンとトラックピースに適用されます。これは、ボタンまたはトラックピースが使用時にビューの位置を減らすかどうかを示します(たとえば、垂直スクロールバーの上、水平スクロールバーの左)。
  • :increment–インクリメント疑似クラスは、ボタンとトラックピースに適用されます。これは、ボタンまたはトラックピースが使用されたときにビューの位置を増分するかどうかを示します(たとえば、垂直スクロールバーを下に、水平スクロールバーを右に)。
  • :start–スタート疑似クラスは、ボタンとトラックピースに適用されます。オブジェクトがサムの前に配置されているかどうかを示します。
  • :end– end疑似クラスは、ボタンとトラックピースに適用されます。オブジェクトがサムの後に配置されているかどうかを示します。
  • :double-button–二重ボタン疑似クラスは、ボタンとトラックピースに適用されます。ボタンが、スクロールバーの同じ端にあるボタンのペアの一部であるかどうかを検出するために使用されます。トラックピースの場合は、トラックピースがボタンのペアに隣接しているかどうかを示します。
  • :single-button–単一ボタン疑似クラスは、ボタンとトラックピースに適用されます。ボタン自体がスクロールバーの最後にあるかどうかを検出するために使用されます。トラックピースの場合、トラックピースがシングルトンボタンに隣接しているかどうかを示します。
  • :no-button –トラックピースに適用され、トラックピースがスクロールバーの端まで実行されるかどうか、つまりトラックのその端にボタンがないかどうかを示します。
  • :corner-present –すべてのスクロールバーに適用され、スクロールバーのコーナーが存在するかどうかを示します。
  • :window-inactive–すべてのスクロールバーに適用され、スクロールバーを含むウィンドウが現在アクティブであるかどうかを示します。(最近のナイトリーでは、この疑似クラスが:: selectionにも適用されるようになりました。コンテンツを操作できるように拡張し、新しい標準疑似クラスとして提案する予定です。)

これらの組み合わせの例

::-webkit-scrollbar-track-piece:start { /* Select the top half (or left half) or scrollbar track individually */ }
::-webkit-scrollbar-thumb:window-inactive { /* Select the thumb when the browser window isn't in focus */ }
::-webkit-scrollbar-button:horizontal:decrement:hover { /* Select the down or left scroll button when it's being hovered by the mouse */ }

Chromeの詳細

addWindowScrollHandler public static HandlerRegistration addWindowScrollHandler(Window.ScrollHandler handler)

  Window.ScrollEventハンドラーを追加しますパラメーター:handler-ハンドラー戻り値:ハンドラーの登録を返します[ source ](http://www.gwtproject.org/javadoc/latest/com/google/gwt/user/client/Window.html# addWindowScrollHandler(com.google.gwt.user.client.Window.ScrollHandler)


Mozilla

Mozillaにはスクロールバーを操作するための拡張機能がいくつかありますが、それらはすべて使用しないことをお勧めします。

  • -moz-scrollbars-none これの代わりにoverflow:hiddenを使用することをお勧めします。
  • -moz-scrollbars-horizontal オーバーフローxに似ています
  • -moz-scrollbars-vertical オーバーフローyに類似
  • -moz-hidden-unscrollableユーザープロファイル設定内でのみ内部的に機能します。XMLルート要素のスクロールを無効にし、矢印キーとマウスホイールを使用したWebページのスクロールを無効にします。

  • 「オーバーフロー」に関するMozilla開発者ドキュメント

Mozillaの詳細

これは私が知る限り実際には役に立ちませんが、Firefoxでスクロールバーを表示するかどうかを制御する属性は(参照リンク)であることに注意してください

  • 属性:        スクロールバー
  • タイプ:               nsIDOMBarProp
  • 説明:   ウィンドウにスクロールバーを表示するかどうかを制御するオブジェクト。この属性はJavaScriptでは「置き換え可能」です。読み取り専用

最後になりましたが、パディングは魔法のようなものです。

他のいくつかの回答で前述したように、これは十分に自明であるイラストです。

ここに画像の説明を入力してください


歴史レッスン

スクロールバー

興味があるからといって、スクロールバーの起源について知りたかったのですが、これらは私が見つけた最高のリファレンスです。

雑多

HTML5仕様ドラフトでは、seamlessスクロールバーがiFrameに表示されないように属性を定義して、ページ上の周囲のコンテンツとブレンドできるようにしました。ただし、この要素は最新のリビジョンでは表示されません。

scrollbarBarPropオブジェクトはの子であるwindowオブジェクトとスクロール機構、またはいくつかの同様のインターフェースの概念が含まれているユーザインタフェース要素を表します。スクロールバーが表示されている場合window.scrollbars.visibleに戻りtrueます。

interface Window {
  // The current browsing context
  readonly attribute WindowProxy window;
  readonly attribute WindowProxy self;
           attribute DOMString name;
  [PutForwards=href] readonly attribute Location location;
  readonly attribute History history;
  readonly attribute UndoManager undoManager;
  Selection getSelection();
  [Replaceable] readonly attribute BarProp locationbar;
  [Replaceable] readonly attribute BarProp menubar;
  [Replaceable] readonly attribute BarProp personalbar;
  [Replaceable] readonly attribute BarProp scrollbars;
  [Replaceable] readonly attribute BarProp statusbar;
  [Replaceable] readonly attribute BarProp toolbar;
  void close();
  void focus();
  void blur();
  // Truncated

History APIには、ページの読み込み時にスクロール位置を維持するために、ページナビゲーションでのスクロール復元機能も含まれています。

window.history.scrollRestorationscrollrestorationのステータスを確認したり、ステータスを変更したりできます(appending。Auto ="auto"/"manual"がデフォルト値です。これを手動に変更すると、ユーザーがアプリの履歴をたどるときに必要になる可能性のあるスクロールの変更を、開発者が所有することになります。 。必要に応じて、history.pushState()を使用して履歴エントリをプッシュするときに、スクロール位置を追跡できます。

---

参考文献:


27
この回答は、現在支持されている回答ではなく、はるかに多くのブラウザー(IE)に適用されます。
Matt Jensen

素晴らしい追加。今日、同じソリューションを実際に実装しました。他の要素はオーバーフローする必要があることに言及する価値があります。
Matt Jensen

2
これが正解です。ユーザーがスクロールできないようにしたい場合は、オーバーフロールールを使用できることを説明します。独自のホームスクロール機能を実装することもできます。それだけでは不十分な場合は、ブラウザーごとに異なるルールを使用して、スクロールバーのプロパティを直接設定できます。
newshorts

1
これは非常によく考えられた回答であり、非常に詳細で、多くのリソースがリンクされていますが、スクロールを無効にしてJavaScriptを使用してすべてのスクロールを処理する場合、支援技術のユーザーには大きな問題があります。ユーザーをスクロールするたびに要素にフォーカスを設定しないと、ATユーザーは完全に失われます。また、ユーザーは自分が見るものに対するすべての微調整された制御を失いました。ユーザーのスクロールを引き継ぐための非常に貧弱なUX。
ShiningLight 2018

MacOS High Sierra上のFirefox Quantum 63.0.1は、「overflow:-moz-scrollbars-none」ルールを使用してもスクロールバーを非表示にしません。誰もがこの解決策を知っていますか?他のすべてのブラウザは、提案されたソリューションで動作するようです。
Simona Adriani

106

これdivは、オーバーフローを非表示にし、内部をにdiv設定したラッパーで実現できautoます。

内側divのスクロールバーを削除するには、内側にdiv負のマージンを適用して、外側のビューポートから引き出しますdiv。次に、内側のdivに同じパディングを適用して、コンテンツが表示されるようにします。

JSFiddle

HTML

<div class="hide-scroll">
    <div class="viewport">
        ...
    </div>
</div>

CSS

.hide-scroll {
    overflow: hidden;
}

.viewport {
    overflow: auto;

    /* Make sure the inner div is not larger than the container
     * so that we have room to scroll.
     */
    max-height: 100%;

    /* Pick an arbitrary margin/padding that should be bigger
     * than the max width of all the scroll bars across
     * the devices you are targeting.
     * padding = -margin
     */
    margin-right: -100px;
    padding-right: 100px;
}

8
これは受け入れられた答えであるはずです。私が追加しなければならなかった唯一のものheight: inherited.viewportCSSにありました。
Helzgate、2015年

4
この回答の唯一の問題は、スクロールバーの幅がわからないためです。これは、スクロールバーの幅をパディングから差し引くために、実際にはわからないためです。
Frondor

3
さらに、パディングとマージンに固定値を使用する必要はありません。100%より用途が広く、仕事をします。
Frondor

IE11、Operah、Chromeで動作し、Firefoxはまだテストしていません。これはすばらしい答えです、+ 1。
ほぼ初心者の

なぜ-100px100px??
oldboy '21 / 06/21

61

これは私にとって単純なCSSプロパティで機能します:

.container {
    -ms-overflow-style: none;  // Internet Explorer 10+
    scrollbar-width: none;  // Firefox
}
.container::-webkit-scrollbar { 
    display: none;  // Safari and Chrome
}

古いバージョンのFirefoxの場合は、次を使用します。 overflow: -moz-scrollbars-none;


2
残念ながら、これはmacOS Sierra上のFireFox 48.0.2では機能しません。その場合overflow: -moz-scrollbars-none;、スクロールバーは正常に削除されますが、スクロールする機能も削除されます。に設定overflow: hiddenすることもでき.containerます。
Martyn Chamberlin

1
ああ、そしてdeveloper.mozilla.org/en-US/docs/Web/CSS/overflowから、-moz-scrollbars-none「これは廃止されたAPIであり、動作が保証されなくなった」と読みました。
Martyn Chamberlin

1
私はFirefoxの最新のサポートで私の回答を更新しました:)
Hristo Eftimov

56

これが私の解決策です。理論的にはすべての最新のブラウザーをカバーしています。

html {
    scrollbar-width: none; /* For Firefox */
    -ms-overflow-style: none; /* For Internet Explorer and Edge */
}

html::-webkit-scrollbar {
    width: 0px; /* For Chrome, Safari, and Opera */
}

html スクロールバーを非表示にする任意の要素で置き換えることができます。

:私が投稿しているコードがすでにカバーされているかどうかを確認するために、他の19の回答をざっと調べました。2019年の現状をまとめた回答は1つもないようですが、詳細については詳しく説明しています。これが他の誰かから言われ、私がそれを逃した場合はお詫びします。


3
ここで最も過小評価されている答え
AGrush

私のスクロール悪夢を修正した唯一の解決策:Dありがとう!
ブームドラク

21

あなたがまだ興味があるなら、私はあなたのための回避策を見つけたと思います。今週は最初の週ですが、うまくいきました...

<div class="contentScroller">
    <div class="content">
    </div>
</div>

.contentScroller {overflow-y: auto; visibility: hidden;}
.content {visibility: visible;}

ChromeとFirefoxで動作しますが、IEやその他のブラウザはテストしていません。 jsfiddle.net/8xtfk729
ベンデイビス、

1
クロム(少なくともv54)では、何らかの理由でスクロールホイールによるスクロールが無効になります。矢印キーでスクロール、ホーム/終了/ページ下/ページ上、フリック、マウス3クリック、ドラッグで機能します
House3272 16

この答えは合法であり、実際に動作し、ブラウザ間で動作するように見えます。
Sam

これはdiv全体を私の側に隠します
Jonny

16

モバイルデバイスのスクロールバーを非表示にするソリューションを探している場合は、ピーターの答えに従ってください!

ここだjsfiddle水平スクロールバーを非表示にするには、以下のソリューションを使用しています、。

.scroll-wrapper{
    overflow-x: scroll;
}
.scroll-wrapper::-webkit-scrollbar { 
    display: none; 
}

Android 4.0.4搭載のSamsungタブレット(ネイティブブラウザーとChromeの両方のIce Cream Sandwich)とiOS 6搭載のiPad(SafariとChromeの両方)でテストされています。


彼の答えはiOS 12.3のChromeとSafariでは
機能しません


11

他の人々がすでに言ったように、CSSを使用してくださいoverflow

ただし、ユーザーが(スクロールバーが表示されていない状態で)そのコンテンツをスクロールできるようにするには、JavaScriptを使用する必要があります。

解決策はここで私の回答をご覧ください:マウス/キーボードでスクロールできる間はスクロールバーを非表示にします


1
これは正解であり、最初にする必要があります。これより上のすべては、目の前の質問に答えません。OPはスクロールの無効化を要求しません。スクロールバーを非表示にしたいと考えています。
pixelpax 2017年

11

ピーターの答えに加えて:

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

これはInternet Explorer 10でも同じように機能します。

 #element {
      -ms-overflow-style: none;
 }

10

スクロールバーを非表示にするクロスブラウザーアプローチ。

Edge、Chrome、Firefox、Safariでテストされています

マウスホイールでスクロールできる間、スクロールバーを非表示にします。

Codepen

/* Make parent invisible */
#parent {
    visibility: hidden;
    overflow: scroll;
}

/* Safari and Chrome specific style. Don't need to make parent invisible, because we can style WebKit scrollbars */
#parent:not(*:root) {
  visibility: visible;
}

/* Make Safari and Chrome scrollbar invisible */
#parent::-webkit-scrollbar {
  visibility: hidden;
}

/* Make the child visible */
#child {
    visibility: visible;
}

1
これがどのように機能するかについての説明は高く評価されます–スクロールバーを非表示にする親/子の可視性で遊ぶのは恐ろしい
JackyJohnson

1
@believesInSanta私はコメントとコードペンを追加して、よりよく説明しました。可視性をいじることがスクロールバーを隠す恐ろしい方法であるというあなたの評価には同意しません。私はそれがハックであることを理解していますが、この効果を達成する適切な方法は、すべてのブラウザがクロムとサファリのようにスクロールバーを個別にスタイルする方法をサポートしている場合です。
Blake Plumb 2016年

2
私はあなたの解決策に恋をしただけです。それは完全に動作します(最新のブラウザーで使用するように設計されているアプリで使用されます)。どうもありがとうございます!
Maxime Lafarie 2017

7

スクロールを機能させる場合は、スクロールバーを非表示にする前に、スタイリングを検討してください。OS XとモバイルOSの最新バージョンにはスクロールバーがあり、マウスでつかむのは実用的ではありませんが、非常に美しくニュートラルです。

スクロールバーを非表示にするには、John Kurlakのテクニックがうまく機能します。ただし、ホイール付きのマウスがない限り、タッチパッドを持たないFirefoxユーザーがスクロールする方法はありませんが、通常は垂直方向にしかスクロールできません。 。

ジョンの技法は3つの要素を使用します。

  • スクロールバーをマスクする外側の要素。
  • スクロールバーを持つ中央の要素。
  • そして、中央の要素のサイズを設定し、スクロールバーを作成するためのコンテンツ要素。

外側の要素とコンテンツ要素のサイズを同じに設定してパーセンテージの使用を排除することが可能でなければなりませんが、適切な調整で機能しない他のことは考えられません。

私の最大の懸念は、ブラウザのすべてのバージョンがスクロールバーを設定して、オーバーフローしたコンテンツを表示できるようにするかどうかです。現在のブラウザーでテストしましたが、古いブラウザーではテストしていません。

恩赦私のSASS ; P

%size {
    // set width and height
}

.outer {
    // mask scrollbars of child
    overflow: hidden;
    // set mask size
    @extend %size;
    // has absolutely positioned child
    position: relative;
}

.middle {
    // always have scrollbars.
    // don't use auto, it leaves vertical scrollbar showing
    overflow: scroll;
    // without absolute, the vertical scrollbar shows
    position: absolute;
}
// prevent text selection from revealing scrollbar, which it only does on
// some webkit based browsers.
.middle::-webkit-scrollbar {
    display: none;
}

.content {
    // push scrollbars behind mask
    @extend %size;
}

テスト中

OS Xは10.6.8です。WindowsはWindows 7です。

  • Firefox 32.0スクロールバーを非表示にしました。クリックしてフォーカスした後でも矢印キーはスクロールしませんが、マウスホイールとトラックパッドの2本の指はスクロールします。OS XおよびWindows。
  • Chrome 37.0のスクロールバーを非表示にしました。クリックしてフォーカスした後、矢印キーが機能します。マウスホイールとトラックパッドが機能します。OS XおよびWindows。
  • Internet Explorer 11のスクロールバーを非表示にしました。クリックしてフォーカスした後、矢印キーが機能します。マウスホイールが機能します。ウィンドウズ。
  • Safari 5.1.10スクロールバーを非表示にしました。クリックしてフォーカスした後、矢印キーが機能します。マウスホイールとトラックパッドが機能します。OSX。
  • Android 4.4.4および4.1.2。スクロールバーを非表示にしました。タッチスクロールが機能します。Chrome 37.0、Firefox 32.0、および4.4.4(それが何であれ)のHTMLViewerで試しました。HTMLViewerでは、ページはマスクされたコンテンツのサイズであり、スクロールすることもできます!スクロールは、ページズームと適切に相互作用します。

1
関係のないメモ(質問に関する限り)。この場合、@ extendと@includeを使用する必要があります。だから、代わりに@mixin{}、あなたは何だろう%size{}、CSSセレクタで、その後の呼び出しを@extend %size;。ミックスインは通常、変数をプルして結果を返すときに使用されます。プレースホルダー(別名@extend)は、「関数」が不要な、このような単純な繰り返しコード用です。
マイクバーウィック

1
@extendを使用するように編集しました。結果はおそらく、SCSSを知らない人には理解しにくいでしょうが、十分です。
セスW.クライン

6

この質問を読んでいる他の人overflow: hiddenに、body要素の設定(またはオーバーフローy)によってスクロールバーが非表示にならないことを指摘したいと思いました。

html要素を使用する必要がありました。


3
数か月前だったので正確には思い出せませんが、本文にオーバーフローを設定するとChromeでは機能しましたが、Firefoxでは機能しなかったと思います(またはその逆)。ただし、HTMLタグの使用は両方で機能しました。
Brad Azevedo、2012年

メモリから、これは奇妙なモードの違いかもしれません。
thomasrutter 2013

5

自動非表示リトルバージョン、スクロールonly-yまたはonly-xなどのいくつかのオプションを使用してWebKitバージョンを作成しました。

._scrollable{
    @size: 15px;
    @little_version_ratio: 2;
    @scrollbar-bg-color: rgba(0,0,0,0.15);
    @scrollbar-handler-color: rgba(0,0,0,0.15);
    @scrollbar-handler-color-hover: rgba(0,0,0,0.3);
    @scrollbar-coner-color: rgba(0,0,0,0);

    overflow-y: scroll;
    overflow-x: scroll;
    -webkit-overflow-scrolling: touch;
    width: 100%;
    height: 100%;

    &::-webkit-scrollbar {
        background: none;
        width: @size;
        height: @size;
    }

    &::-webkit-scrollbar-track {
        background-color:@scrollbar-bg-color;
        border-radius: @size;
    }

    &::-webkit-scrollbar-thumb {
        border-radius: @size;
        background-color:@scrollbar-handler-color;
        &:hover{
            background-color:@scrollbar-handler-color-hover;
        }
    }

    &::-webkit-scrollbar-corner {
      background-color: @scrollbar-coner-color;
    }

    &.little{
        &::-webkit-scrollbar {
            background: none;
            width: @size / @little_version_ratio;
            height: @size / @little_version_ratio;
        }
        &::-webkit-scrollbar-track {
            border-radius: @size / @little_version_ratio;
        }
        &::-webkit-scrollbar-thumb {
            border-radius: @size / @little_version_ratio;
        }
    }

    &.autoHideScrollbar{
        overflow-x: hidden;
        overflow-y: hidden;
        &:hover{
            overflow-y: scroll;
            overflow-x: scroll;
            -webkit-overflow-scrolling: touch;
            &.only-y{
                overflow-y: scroll !important;
                overflow-x: hidden !important;
            }

            &.only-x{
                overflow-x: scroll !important;
                overflow-y: hidden !important;
            }
        }
    }

    &.only-y:not(.autoHideScrollbar){
        overflow-y: scroll !important;
        overflow-x: hidden !important;
    }

    &.only-x:not(.autoHideScrollbar){
        overflow-x: scroll !important;
        overflow-y: hidden !important;
    }
}

http://codepen.io/hicTech/pen/KmKrjb


5

このCSSコードを、スクロールバーを非表示にするための顧客コードにコピーします。

<style>

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

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

</style>

4

私のHTMLは次のとおりです。

<div class="container">
  <div class="content">
  </div>
</div>

divスクロールバーを非表示にする場所にこれを追加します。

.content {
  position: absolute;
  right: -100px;
  overflow-y: auto;
  overflow-x: hidden;
  height: 75%; /* This can be any value of your choice */
}

これをコンテナに追加します

.container {
  overflow-x: hidden;
  max-height: 100%;
  max-width: 100%;
}


3

私の答えはoverflow:hidden;、jQueryを使用しても、スクロールします:

たとえば、マウスホイールで水平にスクロールします。

<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js"></script>
<script type='text/javascript' src='/js/jquery.mousewheel.min.js'></script>
<script type="text/javascript">
    $(function() {

       $("YourSelector").mousewheel(function(event, delta) {

          this.scrollLeft -= (delta * 30);
          event.preventDefault();
       });
    });
</script>

2
Scrolljackingは機能しますが、ほとんどの場合、ユーザーエクスペリエンスは良くありません。
Brandon Anzaldi、2015年

1
これは可能ですが、良い例として、スクロールを無効にしてJavaScriptを使用してスクロールを処理する場合、支援技術のユーザーには大きな問題があります。ユーザーをスクロールするたびに要素にフォーカスを設定しないと、ATユーザーは完全に失われます。また、すべてのユーザーは、自分が見るものに対する微調整された制御をすべて失いました。ユーザーのスクロールを引き継ぐための非常に貧弱なUX。マウスホイールのほかに、上/下キー、スクリーンリーダーのローター、マウスのクリック、タッチパッドのコントロールも処理する必要があります。これは、開発者にとって扱いにくく、ユーザーにとってひどいものになります。
ShiningLight 2018

2

overflowCSS属性で操作できると思いますが、ブラウザのサポートは限られています。ある情報筋によると、それはInternet Explorer 5(およびそれ以降)、Firefox 1.5(およびそれ以降)、およびSafari 3(およびそれ以降)であり、おそらくあなたの目的には十分です。

Scrolling、Scrolling、Scrollingは良い議論があります。


1
良いリンク。マルチブラウザでの結果がどのようになるかを知っておくと便利です。残念ながら、完成した結果のスクリーンショットの図は壊れています
Chetabahana

-1

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

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