<html>
<head>
<style type="text/css">
#box { text-align: center;}
#campas { text-align: left; margin-left: auto; margin-right: auto; border: 3px solid #cccccc; width: 500px;}
#lbox { position:relative; margin: 10px; width: 210px; left: 10px; border: 3px solid #cccccc; float: left; }
#rbox { position:relative; margin: 10px; width: 210px; right: 10px; border: 3px solid #cccccc; float: right; }
</style>
</head>
<body>
<div id="box">
<div id="campas">
<div id="lbox">
left
</div>
<div id="rbox">
right
</div>
<br style="clear: both;" />
</div>
</div>
</body>
</html>
////////////////////CSSレイアウト(FireFox-IE対応)////////////////////////
text-alingは本来インライン要素を中央揃えにする。
divはブロック要素なので、中央揃えにするときはmargin-right:auto;とmargin-left:auto;を使用する。
body {text-align:center;}をレイアウトのために使用するのは適切でない。
余計なところまでセンタリングされてしまうことにもなる。
しかしながら他の要素であればレイアウトのためでも現実的には許される。#box { text-align: center;}
2重にセンタリングをIEバグのために行う。
- センタリングしたい要素にmargin-left: auto; margin-right: auto;として標準準拠でセンタリング
- その親でもIEバグ対策としてtext-align: center;を指定
- しかしその子の中では余計なところもセンタリングされるので再びtext-align: left;として戻す
IEバグについて詳しくは、
http://www.mozilla.gr.jp/standards/webtips0004.html
回り込み解除はスタイルシートで次に来る要素にclear:bothとしておいてもいいのですが、 1箇所だけのために外部ファイルに書くのも面倒。<br style="clear: both;">=<br clear="all">
単位の省略はしない
float要素は子要素とみなされず親要素を突き抜けてしまう 親要素にoverflow:auto;を指定するか、親要素のうしろに:afterで見えない要素を追加し,clear:bothする
////////////////////CSSレイアウト////////////////////////
コンテンツを<DIV>で羅列し、CSSでレイアウトを整える。
position: relativeの要素の子にposition: absoluteの要素を入れることで的確な位置を指定することもできる。
CSSのネストを行うとスタイルを有効にさせるところを細かく設定できる。
#p1{ xxx }
#p1 h1 { xxx }
<div id=p1><h1>xxxxx</h1>xxxxxxx</div>
画像の配置を以下のようにして行うことも可能。
#p1 h1 { background: url(h1.gif); width: 200px; height: 90px; }
#p1 h1 span { display: none; }
<div id=p1><h1><span>代替テキスト</span></h1></div>
同じidを複数の場所で指定しない、複数で利用する場合はclassを使用する。
このブログはCSSでレイアウトを整形しているのだが、Firefoxで崩れるとは知らなかった。標準的なCSSを使用しているつもりだったのだがIE特有のものだったためだ。2004年くらいはこれで大丈夫だったのだが。。いくつかCSSレイアウトのコツをまとめたのだが、いくらかはout of age?勘所ははずしていないと思うが、しかし細かいところで全然違うなぁ。継承の考え方が違うのか?→単位(px)を省略しないようにするとOK