
サイト制作にて、ページ全体を中央寄せにしたいのですが、
firefox 3.0~5(5はwindowsのみ)で、ページがほとんど左寄せになってしまい困っています。
(それ以外のブラウザでは中央寄せになります)
DreamweaverCS5のBrowserLabで確認しています。
背景をブラウザの幅いっぱいに表示させる部分があるため、
ページ全体を囲んでいるdivには幅を指定せず、ヘッダーやコンテンツなどブロックごとのdivに幅を設定し、それぞれ左右のmarginをautoに設定していました。が、それだと中央寄せになりません。
他に下記のような方法も試しましたが、うまくいきませんでした。
・ページ全体のdivにdisplay:inline-blockを設定する。
→全てのブラウザで中央寄せになりましたが、端まで表示させたい背景画像が途中で切れてしまう(inline-blockで自動的に幅が設定されたからでしょうか)
・ページ全体のdivにinline-blockを設定し、さらにwidth:100%を設定する。
→Mac版firefoxの5.0.1やSafari、IEでは背景画像が端まで表示されるが、文頭にあげたfirefox3~5(win)では左のほうへ寄ってしまいました。
htmlの確認などもしたものの、単純ミスなどかもしれないのですが。。
初心者のため、どんな基本的なことでも、ヒントをいただけたら嬉しいです。
よろしくお願いします。
A 回答 (4件)
- 最新から表示
- 回答順に表示
No.4
- 回答日時:
忘れてた、中央寄せなら
div>div{width:80%;min-width:450px;max-width:1000px;margin:0 auto;}
^^^^^^^^^^^^^^^^^^^
だけでよい。(CSS2.1の書き方、古いIEなどに対応させ場合は、違う書き方になる。
No.3
- 回答日時:
>ページ全体を囲んでいるdivには幅を指定せず、ヘッダーやコンテンツなどブロックごとのdivに幅を設定し、
その時点で、とんでもない誤りを犯しています。
「HTMLをデザインのためのもの」と誤解しています。HTML(Hyper Text Markup Lunguage)は文書の構造をマークアップするものです。そしてCSSでデザインしていきますが、デザインをそのようにしたいということは、必ず文書構造に由来するもののはずですね。
具体的な例で説明すると
<body>
<div class="header">
<h1>タイトル</p>
<p>ここにページ全体のヘッダ情報が入る</p>
</div>
<div class="section">
<h2>記事のタイトル。</h2>
<p>本文の記事</p>
<p>記事</p>
<div class="nav content_Index">
<ol>目次</ol>
</div>
<div class="aside">
<p>脚注とか</p>
</div>
</div>
<div class="footer">
<p>文書情報とか</p>
<div class="nav siteMap">
</div>
</div>
</body>
というHTMLを書きます。ここで、header,section,aside,nav,footerはHTML5では、そのまま要素名となる予定です。そのため、
<body>
<header>
<h1>タイトル</p>
<p>ここにページ全体のヘッダ情報が入る</p>
</header>
<section>
<h2>記事のタイトル。</h2>
<p>本文の記事</p>
<p>記事</p>
<nav class="content_Index">
<ol>目次</ol>
</nav>
・・・
とかになることが、よい参考になるでしょう。
その上で、背景画像を全体に、内容を中心にディスプレイの80%で、かつ最小で450px;最大で1000pxにしたければ
html,body{margin:0;padding:0;}
body{background:*******;}
div>div{width:80%;min-width:450px;max-width:1000px;}
だけでよい。(CSS2.1の書き方、古いIEなどに対応させ場合は、違う書き方になる。
さらに、目次を右に書きたければ
div.section{position:relative;}
div.section div.index{width:20%;position:absolute:left:0;top:0;}
とするとか。
いや3分割だ。いや分割しないで目次はトップに横にしよう。脚注は左にとか、サイトマップだけは一番上にとか、フレームのように右側に固定しようとか・・好きなようにデザインすればよい。
自由に出津印できるためには、HTMLが特定のデザインにこだわらず、文書構造にしたがって正しくマークアップされていなければならない。
一度、まったくデザインなしで、HTMLを文書構造にしたがって正しくマークアップすることを復習してください。デザインによって必要に応じて要素を追加する必要がある場合もありますが、そのときも何らかの正統な文書構造があるはずです。
ご回答とソースありがとうございました。
色々確認した結果、中央寄せになっていないのではなく、
ブラウザを縮めた際に横スクロールすると背景が切れてしまっており、それが原因だったようです。解決しました。
ブロックごとのdivは意味付けの為にグルーピングしたつもりでしたが、不要なdivも作ってしまっているかもしれないです。見直そうと思います。
ありがとうございました。
No.2
- 回答日時:
>背景をブラウザの幅いっぱいに表示させる部分があるため、
ページ全体を囲んでいるdivには幅を指定せず、ヘッダーやコンテンツなどブロックごとのdivに幅を設定し、それぞれ左右のmarginをautoに設定していました。が、それだと中央寄せになりません。
bodyに背景を指定してはいかがですか?ブロック要素は幅を指定しないと「親要素いっぱいに幅をとります」。100%の表示域に100%のブロックが入れば、中央に既になっています。marginの余地はありません。今の場合、親要素はbodyですので、どちらかによる余地がありません。
初心者がまずつまづくのは、
1.htmlとcssの関係
2.インライン要素とブロックレベル要素の挙動の未把握
3.なんにでもdivをつけてしまう過重包装(div病)
1.はhtmlが構造がきちっと文章構造を正しく記述できていれば、cssはそれにデザインを加えるだけ。改めてdivを付け加える必要はない。
2.幅や高さを持てないなど、いろいろ制約があるインライン要素と、箱になっているブロックレベル要素の挙動の違いを把握していない。
3.1.と重なりますが、デザインの為に、divをつけてしまう。1プロパティごとにdivをたしていく人もおられます。
デザインはおまけ、htmlが主。デザインをきり変えたいなら、理由がある筈。それは文章構造(html)に含まれるはずのものです。その構造を利用しながらcssをつけて行きましょう。cssのためにhtmlをいじるのはよくありません。ここのところの概念はすごく大切です。
教科書を一から学ばれることをお勧めします。最初にチップス的なものを学び、できたつもりになっていると、早晩破綻します。というか、もう既に破綻しています。概念でデザインは出来ませんが、概念の把握が肝心です。そういう概念がしっかり記述されている教科書をまずは、選んでください。
ご回答と詳細なアドバイスをありがとうございました。
色々確認した結果、中央寄せになっていないのではなく、
ブラウザを縮めた際に横スクロールすると背景が切れてしまっており、それが原因だったようです。解決しました。
概念の把握をしっかりしていきたいと思います。
ありがとうございました。
No.1
- 回答日時:
この参考URLの方法で回避出来ませんか?
現在行っている事のソースがあれば検証できるのですが、
とりあえず試してみてください。
参考URL:http://css.microrza.com/css_bug/floatbug/
ご回答、参考URLありがとうございました。
また、ソースと説明が不足していて申し訳ありませんでした。
教えていただいたURLの現象とは違うようでしたが、解決しました。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- HTML・CSS img と p を縦中央に配置したいのですがうまくいきません。 2 2023/01/12 14:38
- HTML・CSS 吹き出し 下記の吹き出しのスタイルシートについて 下記のスタイルシートは左側にアイコンがでる使用にな 1 2022/11/12 17:55
- HTML・CSS HTML & CSS 縦ボックス内の文字の左右センタリング 3 2023/03/25 04:23
- HTML・CSS CSS のみのタブ切り替えについて 1 2023/01/11 16:47
- HTML・CSS トリミングで表示した画像をクリックで元どおりにしたい 3 2022/12/16 18:49
- WordPress(ワードプレス) ワードプレスで記事を書くスペースの横幅を広げたいです。 1 2022/09/24 18:16
- HTML・CSS CSSが効かずどのように指定すれば良いか分からないのでアドバイスお願い致します 2 2023/06/07 12:25
- HTML・CSS ボタンをクリックした時に、入力フォームのすぐ下部に、「入力欄が空白です」というテキストメッセージが表 1 2022/04/27 16:25
- ノートパソコン ページ番号の入れ方について 3 2023/02/16 17:11
- JavaScript 入力フォームの javascript で メールアドレスの正規チェックをを行い、ボタンをクリックして 2 2022/04/27 16:06
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
htmlのolやulなどlistにtitleや...
-
HTML属性での「""」 「''」違い
-
スタイルシート<記述>
-
headerのセクションを作る場合
-
divタグの適用範囲がひと目でわ...
-
<!-- #BeginLibraryItemとは
-
cssで2列、複数行のテーブルを...
-
ブラウザの表示幅で100%指定が...
-
htmlについて
-
html5でheaderの中にnav
-
h1に自分自身へのリンクを張...
-
html5でページ上部に余白ができる
-
1時間30分を簡単に表したいで...
-
divの中に外部のHTMLを埋め込む
-
iframeを使わずに上下50%ずつに...
-
グリッドレイアウトで"auto-fit...
-
html の divとtable の役割
-
スペースを使わず文字位置を揃...
-
1サイト内にHTML5とXHTMLが混在...
-
htmlの文字が縦書きになる
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
htmlのolやulなどlistにtitleや...
-
HTML属性での「""」 「''」違い
-
html の divとtable の役割
-
複数のボタンを等間隔に、かつ...
-
ヘッダーとフッターだけ背景を...
-
div要素が重なってします
-
<div id="container">の使いか...
-
1時間30分を簡単に表したいで...
-
グリッドレイアウトで"auto-fit...
-
min-heightとheightの違いについて
-
divとpの使いわけ
-
セクションをdivで囲むと見出し...
-
スペースを使わず文字位置を揃...
-
divの中に外部のHTMLを埋め込む
-
要素間、要素内に隙間が空く
-
body>div{}の意味を知りたい
-
ヘッダーを左右に二分割する方...
-
html5でheaderの中にnav
-
hタグを使わずに小見出し
-
CSSで、contentsがfooterに重な...
おすすめ情報