• ベストアンサー

overflow:hiddenでスクロールバー

<div id="header"> <div id="main"> <div id="footer"> の構成でそれぞれにoverflow:hiddenをCSSにて記述しています。 最近 main 部分がはみ出すとブラウザにスクロールバーが 出ることに気付きました。 色々調べた結果、bodyに直接overflow:hiddenを 書けば良いことが分かりました。 ええっとそういうものなのでしょうか。ちょっと変に感じてますが。

質問者が選んだベストアンサー

  • ベストアンサー
  • LOHA
  • ベストアンサー率52% (203/388)
回答No.2

>ええっとそういうものなのでしょうか。ちょっと変に感じてますが。 何のoverflowがhiddenなのかを考えれば明白です。 #header, #main, #footerに指定したoverflow:hiddenは、それらの要素内のはみ出しを無視する指定になります。 (ここでいう「はみ出し」はwidth, heightで指定した範囲外の部分です。) ということは、#header, #main, #footerが(ブラウザのリサイズなどで)bodyからはみ出した場合、bodyでoverflow:hiddenしていなければbodyのスクロールバーが表示されることになります。

uzume_z
質問者

お礼

ご回答有り難うございます。 ブラウザ単位での考え方がよく分からなかったのです。 これが仕様なのか、当然の帰結なのか知りたかったのですが、 どうも当然の帰結のようですね。 しかし、overflow:hiddenは難ありと指導されたので もう一度検討してみます。

その他の回答 (1)

  • ORUKA1951
  • ベストアンサー率45% (5062/11036)
回答No.1

 overflow:auto;だとスクロールバーが出ますが、hiddenだと出ないはずです。  overflow:hiddenを止めるか、---私はアクセスビリティ上問題があるので作っていません。ユーザーが視覚障害があるなどでフォントサイズを大きくすると、読めなくなってしまう。  特に、 <div id="header"> <div id="main"> <div id="footer"> には使うべきではない。  overflow:hiddenを使う必要があること自体がそもそも・・・スタイル上問題があるのではないですか?   [補足] <div class="header" id="Top"> <div class="class" id="main"> <div class="footer"> の間違いでは???  header,section,footerは、文書構造を示すclass名に一般的なもので、HTML5では、それぞれ<header><section><footer>として独立するもので、ひとつの文書内に何度登場してもよいものです。  スタイルを指定するとき、一意セレクタで指定すると、詳細度が高いこと、複数設定できないことなどの理由で使いません。 <body> ・・・【中略】・・・  <section>   <h1>・・・</h1>   <article>    <header>    </header>    <section>    </section>   </article>   <figure>    ・・・    <footer>    <footer>   </figure> ・・とか・・・

uzume_z
質問者

お礼

先生にはいつもご丁寧に有り難うございます。 といいつつも混乱しています。 headerとかは以前クラスにしていたのですが、 色々と勉強している間にidにしている所が多いことに気付いて 全部書き直しを終わったところです・・・ <footer>とか2回出てきてますし、そういうものでしょうか? classが正しかったのですね。 overflow:hiddenはレイアウト上の問題なのですね。 文字を大きくするとか、そういうことは考えませんでした。 また、1からやり直しみたいですorz_

uzume_z
質問者

補足

id=headerで検索したら プロの方でも結構激しい論争があったようですね。 ちょっと変更が大変なのでこのまま行きます。 先生のことだから、丁寧な回答を頂いてしまうと思います。 この回はNo2様が適切なので、ここで締めます。 どうも有り難うございました。

関連するQ&A

専門家に質問してみよう