100%幅のヘッダーが固定されています。
#header {
background: #2e2e2e;
width: 100%;
z-index: 999;
position: fixed;
}
ブラウザのスクロールバーは、私の固定divの下にあります。それを修正する方法は?
その理由は、overflow-x: hidden;
base.css行番号9
body {
color: #444444;
font: 13px/20px Arial,Helvetica,sans-serif;
overflow-x: hidden; // remove this
}
これは、ボディのオーバーフローを追加することで解決できます
から
overflow:auto;
に
overflow:auto;
overflow:initial;
スクロールが本文に設定されている場合、本文>ラッパー>ヘッダー(固定位置)として構成されている場合、コンテンツなど
以下はあなたの解決策です
注:これはbodyでのみ機能しますが、スクロールのあるdivコンテナでは機能しません。 z-indexを使用して機能させることもできますが、正しく機能させるためにz-indexを指定して他の要素をスタックします。
お役に立てれば..:)
この問題は、bodyタグのoverflow-x
にはありません。 html
タグのoverflow-x
およびoverflow-y
が原因です。これをHTMLタグから削除すると、自分の体に必要なオーバーフローを置くことができます。
これは次の場合に発生します。
overflow-x
は、auto
、hidden
、overflow
、またはscroll
のいずれかに設定されますoverflow-y
は、auto
、hidden
、_-webkit-paged-x
、または-webkit-paged-y
のいずれかに設定されますoverflow
が両方を設定するため、overflow-x
またはoverflow-y
を明示的に呼び出す必要はありません。
私はChrome 67です。
これについてのcssハック(私はついに方法を見つけました)はあまり説明があまりありませんでした-最初のフロート要素です。以下のコードから、原理がどのように機能するかを理解したいと思います。
更新:また、モバイルブラウザで問題がないかどうかを評価するために、以下を参照してください。
<div style="position: fixed;top: 0;width: 100%;left: 0;z-index: 100000;height: 200px;background: #f00;">
<div id="aaaaa" style="display: block;float:right;color: #000;overflow-y:scroll;min-height:20px;top: -100px;background: #0f0;border: 1px solid #0f0;"></div>
<div id="bbbb" style="display: block;position:relative;color: #000;overflow:hidden;min-height:20px;background: #f0f;border: 1px solid #00f;">sdfasdf sdfas s as as fasd fasd fasdfasd fasd asdf asd fasdf sadf asdf asdf asdf sad fasdf asdf asdf asd fasdf asdf asdf asd fsad sad sfd
<div style="width: 100%;height: 20px;background: #5ff"></div>
</div>
そして、最終的なコードは、目に見えるものや動作したいものとほぼ同じです
<div style="position: fixed;top: 0;width: 100%;left: 0;z-index: 100000;height: 0px;overflow:visible;background: #f00;">
<div id="aaaaa" style="display: block;float:right;color: #000;overflow-y:scroll;visibility:hidden;min-height:20px;top: -100px;background: #0f0;border: 1px solid #0f0;"></div>
<div id="bbbb" style="display: block;position:relative;color: #000;overflow:hidden;min-height:20px;background: #f0f;border: 1px solid #00f;">sdfasdf sdfas s as as fasd fasd fasdfasd fasd asdf asd fasdf sadf asdf asdf asdf sad fasdf asdf asdf asd fasdf asdf asdf asd fsad sad sfd
<div style="width: 100%;height: 20px;background: #5ff"></div>
</div>
重要なのは、モバイルブラウザーとデスクトップブラウザーで動作することです。実際のところ、私はコンピューターをタブレットモードに変更してからデスクトップモードに変更したときに、Windows Edgeでモバイルをテストしました。その後、コードは常に機能します。チェックするのは、これがdiv id = "aaaa"の代わりに:beforeで動作して、よりCSS純粋で追加のdivが独立するようにするかどうかです。
更新:タブレットモードに入るときにEdgeブラウザがスクロールバーを変更しないため、以前はうまく動作しませんでした。
Bbbb要素の非表示のコンテンツで問題が発生した場合は、bbbbコンテナに絶対/固定要素を配置しないようにしてください。
すべての状況とブラウザでまだテストしていません。
更新:言及された問題この答えの上のどこか-しかし、スクロールバーは動的であるため、モバイルブラウザではスクロールバーが覆われています-スクロールしてコンテナの一部ではないことがわかったときにのみ表示されます。スクロールバーはおそらくすべてのブラウザでかなり薄いので、どうするかを決める必要があります。たぶん5ピクセル程度のマージンでしょうか?
この問題が発生し、スクロールバーは固定ヘッダーの下にあり、htmlタグから削除した後、これを解決しましたheight: 100%;
そして、同じ結果が得られるように他の特性を追加しました。他の解決策のどれも私を助けませんでした。これが誰かの助けになることを願っています。
反応アプリでも同じ問題がありました。
overflow-y: scroll
スタイルを#root
からbody
セレクターに移動しました。問題を解決しました。
これは、以下の2つの方法を使用して解決できます。
1.最初にscrollbarWidth=el.offsetWidth - el.clientWidth
を計算します
2.固定div left=scrollbarWidth
を設定します