positionを使ったレイアウト
positionとは
- positionプロパティは、ボックスの配置方法(基準位置)が、相対位置か絶対位置かを指定する
- positionプロパティで指定するのは、配置方法(基準位置)のみ
static | 特に配置方法を指定しません。 この値のときには、top、bottom、left、rightは適用されません。 これが初期値です。 |
---|---|
relative | 相対位置への配置となります。 positionプロパティでstaticを指定した場合に表示される位置が基準位置となります。 |
absolute | 絶対位置への配置となります。 親ボックスにpositionプロパティのstatic以外の値が指定されている場合には、親ボックスの左上が基準位置となります。 親ボックスにpositionプロパティのstatic以外の値が指定されていない場合には、ウィンドウ全体の左上が基準位置となります。 |
fixed | 絶対位置への配置となるのはabsoluteと同じですが、スクロールしても位置が固定されたままとなります。 |
実例
<!DOCTYPE html> <html lang="ja"> <head> <meta charset="UTF-8"> <title>両側をまたぐフッターを配置する</title> <link rel="stylesheet" href="style1.css" media="screen, print"> </head> <body> <div id="container"> <div id="header"><br></div> <div id="wrapper"> <div id="primary"><br><br><br><br><br><br><br><br><br><br><br></div> <div id="secondary"><br><br><br><br><br><br><br><br><br><br><br></div> </div> <div id="footer"><br></div> </div> </body> </html>
@charset "UTF-8"; body { text-align: center; } #container { width: 760px; margin: 0 auto; text-align: left; } #header { background-color: #DDDDDD; height: 50px; } #wrapper { position: relative; margin: 10px 0; /* 上下方向に10pxのマージンを指定 */ width: 100%; /* ボックスの幅を指定 */ } #primary { /* positionの指定を削除 */ margin-left: 210px; /* 左方向に210pxのマージンを指定 */ background-color: #C7D5ED; } #secondary { position: absolute; left: 0px; top: 0px; /* 上方向からの配置位置を変更 */ width: 200px; background-color: #F9CFBA; } #footer { background-color: #DDDDDD; height: 50px; }
実践
header内ブロックを右側に配置
<!DOCTYPE html> <html lang="ja"> <head> <meta charset="UTF-8"> <title>position</title> <link rel="stylesheet" href="css/style.css" media="screen, print"> </head> <body> <div id="container"> <div id="header"> <div id="header_info"> <ul> <li><a href="#">このサイトについて</a></li> <li><a href="#">お問い合わせ</a></li> <li><a href="#">サイトマップ</a></li> </ul> </div> </div> <div id="wrapper"> <div id="primary"> <br><br> </div> <div id="secondary"> <br><br> </div> </div> </div> </body> </html>
@charset "utf-8"; #container { width: 780px; height: auto; overflow: auto; margin: 0 auto; position: relative; background-color:#999; } #header { height: 80px; margin: 10px; background-color: #F4E2FB; } #header_info { font-size: 0.8em; width: 360px; position: absolute; right: 20px; top: 30px; } #header_info li { display: inline; margin: 0 0 0 10px; } #wrapper { height: 300px; margin: 10px; position: relative; background-color: #F4ECD2; } #primary { position: absolute; left: 10px; top: 10px; width: 530px; height: 280px; background-color: #CFE9AF; } #secondary { position: absolute; left: 550px; top: 10px; width: 200px; height: 280px; background-color: #B9E2F7; }