Vol.14 レスポンシブWebデザイン!ヘッダー画像の左右にブラウザ幅いっぱいのバック
いよいよサイトも完成に近づいた。それでは上記画像フッターを作成していく。これは特に問題ないだろう。ハイライト部分が「index.html」に追加するフッター部分。ソース黒枠の右上「ソースを表示」からコピー。
「index.html」
<!DOCTYPE html> <html lang="ja"> <head> 〜中略〜 </head> <body> <div id="wrap"> <!-- ヘッダー --> <header> 〜中略〜 </header> <!-- グローバルナビゲーション --> <nav id="gnav"> 〜中略〜 </nav> <!-- コンテンツエリア --> <div id="contents"> 〜中略〜 </div><!-- #contents end --> <!-- フッター --> <footer> <img src="images/logo.jpg" width="100" height="17" alt="俺のブログ"> <p>Copyright © 2014 MY BLOG All Rights Reserved.</p> </footer> </div><!-- #wrap end --> </body> </html>
サイトタイトルはトップのロゴ画像を使用する。そのままでは大きすぎるので、サイズを指定している。次にCSSの「全デバイス共通のスタイルとスマートフォン向けレイアウト指定」内に下記を追加。フッターのスタイルは全デバイスで共通のため、「メディアクエリ」指定内には記述する必要はない。
「style.css」
/*========================================== フッターのスタイル ===========================================*/ footer { margin: 0 auto; text-align:center; border-top: 2px solid #c0c0c0; padding: 15px 0 15px 0; } footer p { font-size: 0.6em; margin-top: 10px; }
「footer要素」は「body要素」の子要素なので「width: 100%;」をそのまま継承している。「footer要素」をセンター揃えにして、ボーダー線を指定。「width: 100%;」なので、横幅いっぱいにボーダー線が表示される。後はスタイルを調整して「footer要素」が完成。
ブラウザ幅いっぱいのバックを表示する
続いてトップ画像の横に表示されているグレーのバックを作成していく。
トップ画像は「max-width:960px;」と指定しているので、PC向け固定スタイルの961px以上のときに表示されれば良い。「style.css」のPC向け固定スタイルの「メディアクエリ」指定内に下記ハイライト部分を追加。
「style.css」
/* PC向けレイアウト指定:961px以上では固定レイアウト */ @media only screen and (min-width: 961px) { header #back{ background-color:#dddddd; height:auto; } #main .news { width: 140px; padding:0 10px 0; } #main .news img { max-width: 100%; } #main .news h3 { padding: 0; } #main .news p { padding: 0; } }
HTML「header要素」内にidセレクタ「back」を追加する。下記ハイライト部分が追加箇所。
「index.html」
<!DOCTYPE html> <html lang="ja"> <head> 〜中略〜 </head> <body> <div id="wrap"> <!-- ヘッダー --> <header> <h1><img src="images/logo.jpg" alt="俺のブログ"></h1> <div id="back"> <img src="images/topimage.jpg" alt="俺のブログ"> </div> </header> <!-- グローバルナビゲーション --> <nav id="gnav"> 〜中略〜 </ul> </nav> <!-- コンテンツエリア --> <div id="contents"> 〜中略〜 </div><!-- #contents end --> <!-- フッター --> <footer> 〜中略〜 </footer> </div><!-- #wrap end --> </body> </html>
「style.css」に記述した「#back」は、「header要素」の子要素であり、「header要素」は「body要素」の「width: 100%;」を継承しているため、「#back」も「width: 100%;」となり、指定した背景が横幅いっぱいに広がる。「height:auto;」の指定をしているので、「#back」が包容している「header img要素」の高さと約同じになる。誤差はCSSの「header img」を微調整する。
header img { width:100%; height:auto; max-width:960px; margin-bottom:-2px; }
これで当初の目標としていたサイトが完成した。【こちら】から完成サイトを確認できる。次回からは「フリードグリッド」を導入して、PC向けスタイルを921px〜1100pxまでを可変レイアウトとなるようにしていく。下記に今回までの全「index.html」と「style.css」のコードを記述しておく。
「index.html」
<!DOCTYPE html> <html lang="ja"> <head> <meta charset="utf-8"> <meta name="viewport" content="width=device-width"> <link rel="stylesheet" href="css/reset.css"> <link rel="stylesheet" href="css/style.css"> <title>MY BLOG</title> <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js"></script> <script type="text/javascript" src="js/jquery.heightLine.js"> </script> <script type="text/javascript"> $(window).on("load",function(){ $(".news").heightLine(); }); </script> <!--[if lt IE 9]> <script src="js/html5shiv.js"></script> <![endif]--> <!--[if lt IE 9]> <script src="js/css3-mediaqueries.js"></script> <![endif]--> </head> <body> <div id="wrap"> <!-- ヘッダー --> <header> <h1><img src="images/logo.jpg" alt="俺のブログ"></h1> <div id="back"> <img src="images/topimage.jpg" alt="俺のブログ"> </div> </header> <!-- グローバルナビゲーション --> <nav id="gnav"> <ul class="cf"> <li><a href="#">HOME</a></li> <li><a href="#">COLUMN</a></li> <li><a href="#">SNS</a></li> <li><a href="#">PROFILE</a></li> <li><a href="#">ABOUT</a></li> <li><a href="#">CONTACT</a></li> </ul> </nav> <!-- コンテンツエリア --> <div id="contents"> <section id="main" class="cf"> <h2><img src="images/new.png" width="100" height="50" alt="works"></h2> <section class="news"> <img src="images/new1.jpg" width="184" height="184" alt="work1"> <h3>Article1</h3> <p>レスポンシブWebデザインとは、あらゆるデバイスに最適化したWebサイトを、一つのHTMLで…</p> </section> <section class="news"> <img src="images/new2.jpg" width="184" height="184" alt="work1"> <h3>Article2</h3> <p>実現できるシンプルな制作手法。CSSを調整することによって、画面サイズを基準にサイトの…</p> </section> <section class="news"> <img src="images/new3.jpg" width="184" height="184" alt="work1"> <h3>Article3</h3> <p>切り替えが可能に。フルードイメージとは、ブラウザのウィンドウ幅に合わせて、画像のサイズを…</p> </section> <section class="news"> <img src="images/new4.jpg" width="184" height="184" alt="work1"> <h3>Article4</h3> <p>拡大・縮小する手法。CSSのみで実装。メディアクエリとは、「画像解像度」「ウィンドウの幅」…</p> </section> <section class="news"> <img src="images/new5.jpg" width="184" height="184" alt="work1"> <h3>Article5</h3> <p>「デバイスの向き」などを条件に、サイズに応じたCSSにスタイルを切り替えることができる。…</p> </section> <section class="news"> <img src="images/new6.jpg" width="184" height="184" alt="work1"> <h3>Article6</h3> <p>フルードグリッドとは、「グリッドデザイン」と、「リキッドレイアウト」を合わせたものである。…</p> </section> </section> </div><!-- #contents end --> <!-- フッター --> <footer> <img src="images/logo.jpg" width="100" height="17" alt="俺のブログ"> <p>Copyright © 2014 MY BLOG All Rights Reserved.</p> </footer> </div><!-- #wrap end --> </body> </html>
「style.css」
@charset "utf-8"; /* /_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_ 全デバイス共通のスタイルとスマートフォン向けレイアウト指定 /_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_*/ /*========================================== body ===========================================*/ body { width: 100%; background-color:#FFF; font-family:'Helvetica Neue', Helvetica, Arial, 'Hiragino Kaku Gothic ProN', 'ヒラギノ角ゴ ProN W3', Meiryo, メイリオ, sans-serif; color:#000; } a { color:#000; text-decoration:none; } a:hover { color:#555; text-decoration:underline; } /*========================================== ヘッダーのスタイル ===========================================*/ header { text-align:center; margin:0 auto; } header h1 { padding:15px 5px 15px 5px; } header h1 img { width:100%; height:auto; max-width:200px; } header img { width:100%; height:auto; max-width:960px; margin-bottom:-2px; } /*========================================== グローバルナビゲーションのスタイル ===========================================*/ #gnav ul { text-align:center; margin:0 auto; max-width: 960px; } #gnav ul li { float: left; width: 50%; border-bottom: 2px solid #000; padding-top: 15px; padding-bottom: 15px; } #gnav ul li a{ display: block; } /*========================================== コンテンツエリア全体のスタイル ===========================================*/ #contents { max-width: 960px; margin: 0 auto; text-align:center; padding-bottom: 20px; } /*========================================== コンテンツエリア -> NEWのスタイル ===========================================*/ #main h2 { margin-bottom: 15px; } #main .news { width: 50%; float: left; margin-bottom: 20px; } #main .news img { width: 100%; height: auto; max-width: 90%; } #main .news h3 { text-align: left; font-size: 0.9em; font-weight: bold; line-height: 2.0em; padding: 0 5%; } #main .news p { text-align: left; font-size: 0.7em; line-height: 2.0em; padding: 0 5%; } /*========================================== フッターのスタイル ===========================================*/ footer { margin: 0 auto; text-align:center; border-top: 2px solid #c0c0c0; padding: 15px 0 15px 0; } footer p { font-size: 0.6em; margin-top: 10px; } /* タブレット向けレイアウト指定:521px~960px */ @media only screen and (min-width: 521px) { #gnav { border-bottom: 5px double #000; margin-top: 10px; } #gnav ul { margin-bottom: 10px; } #gnav ul li { width: 16.6666667%; border-bottom: none; } #main .news { width: 33.3333333%; } } /* PC向けレイアウト指定:961px以上では固定レイアウト */ @media only screen and (min-width: 961px) { header #back{ background-color:#dddddd; height:auto; } #main .news { width: 140px; padding:0 10px 0; } #main .news img { max-width: 100%; } #main .news h3 { padding: 0; } #main .news p { padding: 0; } }