CSSによる3カラムレイアウト
以下のHTML(A)をCSSで(B)の様に表示させたいのですが、どの様にすると良いでしょうか?
HTML(A)
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitio …
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="ja" lang="ja" dir="ltr">
省略
<body>
<div id="container">
<div id="wrapper">
<div id="content">コンテンツ</div>
</div>
<div id="header">ヘッダー</div>
<div id="navigation">ナビゲーション</div>
<div id="widget">ウィジェット</div>
<div id="footer">フッター</div>
</div>
</body>
</html>
表示(B)
|ヘッダー |
|ナビゲーション|コンテンツ|ウィジェット|
|フッター |
自分でも大分試行錯誤したのですが、思い通りの結果が得られません。
今のところは、コンテンツとナビゲーションをfloatで横並びにし、ヘッダー分の高さをmarginで下げて、ヘッダーはposition: absolute;で上部に表示させています。
ウィジェットが無い2カラムの状態ならそれで解決しているのですが、ウィジェットを追加して表示(B)の様に3カラムにしようとすると上手くいきません。
HTMLを変えれば他にやり様は思いつくのですが、containerとwrapperを除く要素の並びは(A)の通りで実現させたいです。
また、上記のソース自体あまりスマートではないのですが、もっとスマートなやり方があればそちらも指南頂けると幸いです。
No.1ベストアンサー
- 回答日時:
>HTMLを変えれば他にやり様は思いつくのですが、
そのとおり、そもそも文書木がおかしいから、CSSで配置しようにもうまく行かないのです。もちろん、無理やりabsoluteを使って配置はできますが、内容の伸縮や多様なウィンドウサイズに適合できなくなります。
【引用】____________ここから
メモ: CSSスタイルシートを意図した通りに機能させるには、正しい文書解析木が必要です。つまり、正当なHTMLを用いるべきです。.
 ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ここまで[W3C CSS 検証サービス( http://jigsaw.w3.org/css-validator/#validate_by_ … )]より
もちろん、SEOの上からも好ましくありません。
本来は、
<body>
<div id="header">
<h1>タイトル</h1>
</div>
<div id="content">コンテンツ
<h2>見出し</h2>
<p>本文</p>
<div id="navigation">ナビゲーション</div>
<div id="widget">ウィジェット</div>
</div>>
<div id="footer">
<ul id="siteMap">
<li></li>
<li></li>
</ul>
</div>
</div>
</body>
とマークアップするべきではないですか?
そうすると、ユーザーエージェントに依存しなくて、かつ検索エンジンも理解しやすい(SEO)サイトになると思います。
余談ですが
contentsという複数形はないのでは(^^)、content自体、すでに内容物で複数の意味を持っているのではなかったっけ。
content 複数形 - Google 検索 ( http://www.google.co.jp/search?hl=ja&source=hp&q … )
とても丁寧な回答に感謝します。
仰る通りです。
ただ、単純な好奇心として試したい事でもあるので、遊び心半分でまた試行錯誤してみようと思います。
余談のcontentですが、間違えた覚え方をしていたみたいですね。
こちらも為になりました。
ありがとうございました。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- JavaScript html5に変えるとスライドショーが消えてしまった。 3 2022/03/26 19:53
- HTML・CSS html/cssで要素が出てこなくて困ってます 1 2022/12/31 16:59
- HTML・CSS 書籍を見つつサイト造りの練習をしているのですが、見た目が一致しません 2 2022/11/28 15:00
- JavaScript jqueryを使ったスムーススクロールのコードを書いたのですが、HTMLコード内にある、a butt 2 2022/04/14 10:59
- JavaScript jQueryでのドラッグアンドドロップについて 1 2022/07/07 21:04
- HTML・CSS PCサイズで赤い画像2つと、青い画像2つがそれぞれ横に2つずつ並んでいるのですが、これをスマホサイズ 5 2022/04/11 12:01
- HTML・CSS CSS のみのタブ切り替えについて 1 2023/01/11 16:47
- HTML・CSS cssが効かなくて困ってます 1 2023/01/01 23:57
- JavaScript 入力フォームの javascript で メールアドレスの正規チェックをを行い、ボタンをクリックして 2 2022/04/27 16:06
- HTML・CSS HTML、cssのatomつぅーやつで 課題Ex1ってやつを表示させたいのですが、 私は課題Ex1が 2 2022/12/15 16:56
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
htmlのolやulなどlistにtitleや...
-
html の divとtable の役割
-
<div id="container">の使いか...
-
HTML属性での「""」 「''」違い
-
オシャレな区切り線はありませ...
-
div要素が重なってします
-
ブログのサイドバーが下にくる
-
htmlの見出しタグ(<h1>)の次...
-
DD,DT,DDを横並び。paddingとma...
-
背景画像に全体または部分的に...
-
複数のボタンを等間隔に、かつ...
-
XHTMLでループ処理のやり方
-
インラインフレームのページ内...
-
footerのclear:bothが効きません
-
divの中に外部のHTMLを埋め込む
-
モバイルサイト用のタブ型メニュー
-
divとpの使いわけ
-
HTML5の終端タグ「 />」について
-
inline-blockをネストすると表...
-
横並びdivで一部の初期高さがず...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
htmlのolやulなどlistにtitleや...
-
div要素が重なってします
-
HTML属性での「""」 「''」違い
-
複数のボタンを等間隔に、かつ...
-
ヘッダーとフッターだけ背景を...
-
html の divとtable の役割
-
<div id="container">の使いか...
-
divとpの使いわけ
-
min-heightとheightの違いについて
-
HTML5 iframe の代わり
-
divの中に外部のHTMLを埋め込む
-
3カラムレイアウトで「常に残り...
-
ヘッダーを左右に二分割する方...
-
画面を縮小するとカラムが落ち...
-
reuterのScraypingで不思議な現...
-
htmlの見出しタグ(<h1>)の次...
-
1サイト内にHTML5とXHTMLが混在...
-
inline-blockをネストすると表...
-
html5でheaderの中にnav
-
<!-- #BeginLibraryItemとは
おすすめ情報