CSSレイアウト初心者ですが、CSSの作成段組みを作る時に
<div id="container">
<div id="header">
</div><!--/header-->
<div id="contents">
<div id="left_bar">
</div><!--/left_bar-->
<div id="main">
</div><!--/main-->
</div><!--/contents-->
<div id="right_bar">
</div><!--/right_bar-->
<div id="footer">
</div><!--/footer-->
</div><!--/container-->
と三段組固定レイアウトを作成したいのですが、
一度目は何回やり直してもfloatの設定でleft_bar,mainの横並びが上手くいかずに、
contentsの中でleft_bar,mainが縦並びになってしまい何回何が原因か様々なサイトで考えを模索してソースを直しても何故かleft_bar,main
がcontentsの中で何回書き直しても縦並びになりもう一度一からCSSを組み直してみると、
どうした訳かようやくcontentsの中でleft_bar,mainが横並びになってくれました。
これは一体根本的に何が原因で横並びにさせるつもりが、縦にボックスが並んでしまうのでしょうか?
CSSのfloatの概念からハックかなと思いハック親ボックスにハックをかけてみてでも全く関係ないみたいでしたし、親ボックスにピクセルを指定していないからかと思い親ボックスにピクセルで指定しても何故か縦並び?!
CSSをもう一度書きなすことで意図したレイアウトになると言う事は一番は何が原因していると見られるのでしょうか?
A 回答 (3件)
- 最新から表示
- 回答順に表示
No.3
- 回答日時:
自分の場合、よくあるケースで
1)どっかでclearfix使っている(タグはなくても擬似要素でやってたりとか)
2)タグが正しく記入されているか(謎のdivがあったりしてはまる)
3)ブロック全てにの幅計算が当たっているか(よく100%きっちりにしてIEであぼん)
などなど。
可能性ありそうなのは、まずは1と2とかでしょうか?
対策として
◇cssの中に「clear」設定している箇所を探していじる
◇html lintなどで、(主にdivの)閉じ忘れ、余分なものがないかチェックする
◇(ちょっと難易度上がりますが)ブラウザのプラグインなどで要素のチェックをする
(firebugとかwebdeveloperとか)
cssのリンク先を間違えてるなんてこともしょっちゅうですが;
No.2
- 回答日時:
そもそも、そんなHTMLは書かない!!
HTML4.01で
『構造とプレゼンテーションの分離( http://www.asahi-net.or.jp/%7Esd5a-ucd/rec-html4 … )』が強く唱えられ、『DIV要素とSPAN要素は、id属性及び class属性と併用することで、文書に構造を付加するための一般機構を提供する。( http://www.asahi-net.or.jp/%7Esd5a-ucd/rec-html4 … )』
となっていたことは御存知だと思います。
すなわち、divに付くidやclassは、(文書構造を示す要素が用意されていないために)「DIVと組み合わせて文書構造を示すための物」でした。
HTML5では、文書構造を示すために新しい要素( http://standards.mitsue.co.jp/resources/w3c/TR/h … )が追加されDIVは原則使わなくなります。
【引用】____________ここから
NOTE: Authors are strongly encouraged to view the div element as an element of last resort, for when no other element is suitable. Use of more appropriate elements instead of the div element leads to better accessibility for readers and easier maintainability for authors.
 ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ここまで[4.4 Grouping content — HTML5( http://www.w3.org/TR/html5/grouping-content.html … )]より
<div id="container">要らないでしょう。
<div id="header"></div>headerになるものは沢山あるのでclassでしょう。
<div id="contents">本文はsection
<div id="left_bar"></div>先で右に配置するときや、下にするときはどうする
<div id="main"></div>mainのほうを先に書かなきゃ
</div>
<div id="right_bar"></div>スマホ用に下に置きたいときは?
<div id="footer"></div>
</div>
簡単なサンプルです。HTML5にするときは、
<div class="header">その部分のヘッダ</div> → <header></header>
<div class="section">本文</div> → <section></section>
<div class="nav">ナビゲーション</div> → <nav></nav>
<div class="aside">本文と直接関係ない記事</div> → <aside></aside>
<div class="footer">文書のフッタ</div> → <footer></footer>
にすれば良いです。
★タブは_に置換してあるので戻す。
★Another HTML Lint - Gateway( http://www.htmllint.net/html-lint/htmllint.html )
でチェック済みHTML4.01strict+CSS2.1
★リキッド--スマホから幅広ディスプレイに対応(必要ならmediaqueryでデザインを変える)
当然、フォントを大きくしてもデザインが崩れない。
★印刷にはデザインが変わる(印刷プレビューで確認)
印刷時には本文でない物は後回しにされる。もちろん検索エンジンにも・・
★段組にfloat使ってないので、本文内で画像のfloat/clearなど本来の使い方ができる。
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html lang="ja">
<head>
_<meta http-equiv="content-type" content="text/html; charset=Shift_JIS">
_<title>サンプル</title>
_<meta name="author" content="ORUKA1951">
_<meta http-equiv="Content-Style-Type" content="text/css">
_<link rev="made" href="mailto:oruka1951@hoge.com" title="send a mail" >
_<link rel="START" href="../index.html">
_<style type="text/css" media="screen">
<!--
html,body{margin:0;padding:0;}
h1,h2,h3,h4,h5,h6{margin:0;line-height:1.6em;}
p{text-indent:1em;}
div.header,div.section,div.footer{width:90%;min-width:630px;max-width:900px;margin:0 auto;padding:5px;}
div.section{position:relative;min-height:400px;}
div.section h2,div.section p,div.section div.section{margin:0 165px;}
div.section div.section p{margin:0 auto;}
div.section div.section{width:auto;min-width:0;min-height:0;}
div.section div.nav,div.section div.aside{position:absolute;width:160px;top:0;height:100%;}
div.section div.nav{left:0;}
div.section div.aside{right:0;}
/* わかりやすいように色分け */
div.header{background-color:aqua;}
div.aside{background-color:fuchsia;}
body{background-color:gray;}
div.footer{background-color:lime;}
div.section div.section{background-color:silver;}
div.section{background-color:white;}
div.section div.nav{background-color:black;color:white;}
div.nav a{color:aqua;}
-->
_</style>
_<style type="text/css" media="print">
<!--
a{text-decoration:none;}
a:after{content:" (http://hoge.com"attr(href)")";}
div.aside{display:none;}
-->
</style>
</head>
<body>
_<div class="header">
__<h1>タイトル</h1>
__<p>このページでは・・・・</p>
_</div>
_<div class="section">
__<h2>見出し</h2>
__<p>本文はsection</p>
__<div class="section">
___<h3>項見出し</h3>
___<p>本文項記事</p>
___<p>sectionの階層でレベルが判断される</p>
__</div>
__<div class="nav">
___<ol>
____<li><a href="/">Top</a></li>
____<li><a href="/books">Books</a></li>
____<li><a href="/manual">Manual</a></li>
___</ol>
__</div>
__<div class="aside">
___<h3>補足記事</h3>
__</div>
_</div>
_<div class="footer">
__<h2>文書情報</h2>
__<dl class="documentHistry">
___<dt id="FIRST-PUBLISHED">First Published</dt>
___<dd>2013-03-03</dd>
__</dl>
_</div>
</body>
</html>
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- PHP アップロード画像数でCSSを分けることに成功したのですが、画像の横に文字を並べることが出来ません。 3 2023/07/28 17:16
- HTML・CSS テキストを画面の真ん中に配置したいです。 2 2022/11/25 16:11
- PHP アップロードファイルの数に応じてCSSを動的に変更したいのですが、方法がわかりません 3 2023/07/23 21:59
- HTML・CSS PCサイズで赤い画像2つと、青い画像2つがそれぞれ横に2つずつ並んでいるのですが、これをスマホサイズ 5 2022/04/11 12:01
- HTML・CSS 書籍を見つつサイト造りの練習をしているのですが、見た目が一致しません 2 2022/11/28 15:00
- JavaScript jQueryでのドラッグアンドドロップについて 1 2022/07/07 21:04
- HTML・CSS ヘッダーの画像にメインエリアがかぶってしまいます 1 2022/11/28 14:06
- HTML・CSS htmlの文字が縦書きになる 2 2023/03/01 21:31
- Ruby No route matches [GET] "/posts/5/destroy" 1 2022/03/24 13:00
- JavaScript 画像の表示位置 3 2022/12/23 08:25
関連するカテゴリからQ&Aを探す
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
<div id="container">の使いか...
-
htmlのolやulなどlistにtitleや...
-
DD,DT,DDを横並び。paddingとma...
-
HTML属性での「""」 「''」違い
-
要素間、要素内に隙間が空く
-
html の divとtable の役割
-
div要素が重なってします
-
html5にて水平線の引き方は?
-
IEでのみfloatが効かない?
-
IE6でプルダウンメニューが隠れる
-
h1に自分自身へのリンクを張...
-
グリッドレイアウトで"auto-fit...
-
divを追加すると下に隠れてしまう
-
h1のテキストサイズよりh2の方...
-
hタグの右横に画像を表示
-
スペースを使わず文字位置を揃...
-
複数のボタンを等間隔に、かつ...
-
非スクロールのサイドバー
-
背景画像に全体または部分的に...
-
htmlの見出しタグ(<h1>)の次...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
htmlのolやulなどlistにtitleや...
-
HTML属性での「""」 「''」違い
-
<div id="container">の使いか...
-
複数のボタンを等間隔に、かつ...
-
html の divとtable の役割
-
div要素が重なってします
-
min-heightとheightの違いについて
-
ヘッダーとフッターだけ背景を...
-
1時間30分を簡単に表したいで...
-
divを横に並べる方法
-
html5でheaderの中にnav
-
スペースを使わず文字位置を揃...
-
セクションをdivで囲むと見出し...
-
divとpの使いわけ
-
ブログのサイドバーが下にくる
-
3カラムレイアウトで「常に残り...
-
グリッドレイアウトで"auto-fit...
-
iframeを使わずに上下50%ずつに...
-
ヘッダーを左右に二分割する方...
-
画面を縮小するとカラムが落ち...
おすすめ情報