レスポンシブデザインの練習では、まずは固定レイアウトの作り方をしっかりと覚えましょう。
今回のブレイクポイントである、
PCレイアウト 960px以上
タブレット 959px~768px
スマホ 767px以下
を踏まえて、各ブレイクポイント内で最小幅のpxで横幅の指定をすれば、コンテンツが表示領域からはみ出す事は無いので、レスポンシブデザインの基礎として、まずは今回のような固定レイアウトでのレスポンシブデザインをしっかりと覚えましょう。
また、先日制作したハンバーガーメニューをスマホサイズのみの評させるようにしましょう。この時にハンバーガーメニューのサイズを変更するにはどこの記述を変える必要があるかもしっかりと理解しましょう。
<!DOCTYPE html> <html lang="ja"> <head> <meta charset="UTF-8"> <title>RWDサイト</title> <meta name="viewport" content="width=device-width, initial-scale=1.0, user-scalable=no"> <link rel="stylesheet" href="css/style2.css"> <link rel="stylesheet" href="FlexSlider/flexslider.css"> <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.8.2/jquery.min.js"></script> <script src="js/jquery.flexslider.js"></script> <script src="js/script.js"></script> <script> $(window).load(function() { $('.flexslider').flexslider({ animation: "slide" }); }); </script> <style> article, aside, dialog, figure, footer, header, main, menu, nav, section { display: block; } </style> </head> <body> <header> <div class="inner"><h1>タイトル</h1></div><!--/inner--> <nav class="menu"> <ul id="panel"> <li><a href="#">ボタンA</a></li> <li><a href="#">ボタンB</a></li> <li><a href="#">ボタンC</a></li> <li><a href="#">ボタンD</a></li> </ul> </nav> </header> <div class="inner"> <div id="slide"> <div class="flexslider"> <ul class="slides"> <li><img src="img/keyvisual_01.png" alt=""></li> <li><img src="img/keyvisual_02.png" alt=""></li> <li><img src="img/keyvisual_03.png" alt=""></li> </ul> </div><!--/.flexslider--> </div> <div id="content"> <h2>中見出し</h2> </div> <div id="sidebar"> <h2>Facebook</h2> </div> </div> <footer> <nav> <ul> <li><a href="#"><div>サイトマップ</div></a></li> <li><a href="#"><div>プライバシーポリシー</div></a></li> <li><a href="#"><div>サイトのご利用について</div></a></li> <li><a href="#"><div>免責事項</div></a></li> </ul> </nav> <p id="copyright"><small>コピーライト</small></p> </footer> </body> </html>
@charset "utf-8"; /* reset */ html, body, div, h1, h2, h3, h4, h5, h6,p, blockquote, pre, address,ul, ol, li, dl, dt, dd,table, th, td, form, fieldset { margin: 0; padding: 0; line-height: 1.0; font-family: "Hiragino Kaku Gothic ProN", Meiryo, sans-serif; } table { border-collapse: collapse; border-spacing: 0; } ul, ol { list-style: none; /* マーカーを消す */ } a { text-decoration: none; /* 下線を消す */ color: #222; } img { border: 0; } img, input { vertical-align: bottom; } /* レイアウト ---------------------------------------------------------- */ header { background: #efefef;/*css3が効かないブラウザー用の記述*/ background-image: -webkit-linear-gradient(top, #efefef, #ffffff); /*Android標準ブラウザー用*/ background-image: linear-gradient(to bottom, #efefef, #ffffff); /*W3C*/ border-bottom: 1px solid #ccc; padding: 20px 5px; } h1 { width: 160px; float: left; } .inner { width: 960px; margin: 0 auto; overflow: hidden; } nav.menu { background: #333; } nav.menu ul { width:960px; overflow: hidden; margin: 0 auto; } nav.menu ul li { float: left; width: 25%; height: 50px; } nav.menu ul li a { display: block; text-align: center; line-height: 50px; background: #999; border-left: 2px solid #FFF; } nav.menu ul li:last-child a { border-right: 2px solid #FFF; } /* content ---------------------------------------------------------- */ #content { width: 63%; height: 500px; background: #BBB; float: left; } h2 { margin: 20px 50px 0; padding: 10px 5px; text-align: center; } #sidebar { width: 35%; height: 500px; background: #FCC; float: right; } /* Footer ---------------------------------------------------------- */ footer { margin-top: 40px; background: #eaeaea; } footer nav ul { overflow: hidden; margin: 0 auto; width: 960px; padding: 20px 6px; } footer nav ul li { float: left; margin-right: 40px; } footer nav ul li a:hover { text-decoration: underline; } footer p#copyright { background: #2f2f2f; color: #fff; padding: 15px 0; text-align: center; } @media screen and (max-width:959px){ header { border-bottom: none; } nav.menu { background: none; } .inner { width: 768px; margin: 0 auto; overflow: hidden; } nav.menu ul { width:768px; } footer nav ul { width: 768px; } } @media screen and (max-width:767px){ header { padding: 10px; } .inner { width: 100%; } header .inner { overflow: inherit; } nav.menu ul { width: 100%; } #content { width: 100%; float: none; } #sidebar { width: 100%; float: none; } footer nav ul { width: 100%; padding: 0; } footer nav ul li { border: 1px solid #ccc; border-bottom: none; box-sizing: border-box; float: left; font-size: 12px; text-align: center; width: 50%; margin-right: 0; } footer nav ul li a { display: block; padding: 10px 0; } footer nav ul li:nth-child(odd) { border-left: none; clear: left; } footer nav ul li:nth-child(even) { border-right: none; margin-left: -1px; } /* ドロップダウンメニュー ---------------------------------------------------------- */ header { padding-bottom: 20px; } header nav { float: right; } header nav p#menuToggle { display: block; background: #2b2b2b; background: -webkit-linear-gradient (top, #eeedf2 1%, #717171 4%, #2b2b2b 84%); background: linear-gradient (to bottom, #eeedf2 1%, #717171 4%, #2b2b2b 84%); border: 1px solid #444; border-radius: 5px; color: #fff; line-height: 36px; padding-left: 4px; font-size: 14px; } #panel-btn { float: right; position: relative; width: 36px; height: 36px; border-radius: 5px; padding-left: 10px; margin-left: 10px; } #panel-btn-icon { display: block; position: absolute; top: 50%; left: 50%; width: 22px; height: 2px; margin: -1px 0 0 -11px; transition: .2s; background: #FFF; } #panel-btn-icon:before, #panel-btn-icon:after { display: block; content: ""; position: absolute; top: 50%; left: 50%; width: 22px; height: 2px; margin-left: -11px; background: #FFF; transition: .3s; } #panel-btn-icon:before { margin-top: -8px; } #panel-btn-icon:after { margin-top: 6px; } #panel-btn .close { background: transparent; } #panel-btn .close:before, #panel-btn .close:after { margin-top: 0; } #panel-btn .close:before { transform: rotate(-45deg); } #panel-btn .close:after { transform: rotate(-135deg); } nav.menu ul { display: none; } /*クリックしたら出てくるメニュー部分*/ nav.menu ul { width: 98%; left: 1%; position: absolute; top: 50px; z-index: 99; } nav.menu ul li { border-top: 1px solid #000; width: 100%; float: none; } nav.menu ul li a { border: none; color: #fff; display: block; } nav.menu ul li:last-child a { border: none; } }