floatを使ったレイアウト
CSSレイアウト
idセレクタの前に「div」を書くのか書かないのか。
迷います。
正しくは「div」を書くことが基本です。
ただし、半角スペースと違い文字は無視されるわけではないので「データ量」として加算されます。
少しでも軽くしてレスポンスを早くしたいという理由から、現在では省略している場合がほとんどです。
floatプロパティを使ったレイアウト
<!DOCTYPE html> <html lang="ja"> <head> <meta charset="UTF-8"> <title>floatを使ったレイアウト</title> <link rel="stylesheet" href="css/style.css" media="screen, print"> </head> <body> <div id="container"> <div id="header">header</div> <div id="content">content</div> <div id="sidebar">sidebar</div> <div id="footer">footer</div> </div> </body> </html>
@charset "utf-8"; html, body, div { margin: 0; padding: 0; } body { background-color: #ccc; text-align: center; /* IE6対策 */ } #container { width: 780px; margin: 0 auto; padding: 10px; background-color: #fff; overflow: hidden; } #header { height: 50px; margin-bottom: 10px; background-color: #c2fcfb; } #content { float: left; width: 500px; height: 300px; margin-bottom: 10px; background-color: #f8febc; } #sidebar { float: right; width: 270px; height: 300px; background-color: #fecaff; } #footer { clear: both; height: 50px; background-color: #dcdbfd; }
左右にフロート指定
同じ方向にフロート指定
フロートとマージン指定
段組レイアウトの注意点
IE6で、マージンが2倍になってしまうバグ
下記のコードで、IE6はマージンが20pxになります。
#sidebar{ float: left; width: 200px; margin-left: 10px; } #content{ float: right; width: 500px; margin-right: 10px; }
マージンが2倍になってしまうバグは、「display:inline;」で解決します。
#sidebar{ float: left; width: 200px; margin-left: 10px; display: inline; } #content{ float: right; width: 500px; margin-right: 10px; display: inline; }
- width を指定したボックスには border も padding も指定しない
- フロートのコンテナブロックには幅を指定する