HTML&CSS 上級編
・レスポンシブデザインとは
要素の幅を固定している場合、画面幅が狭くなるとコンテンツの一部が隠れてしまいますが、レスポンシブデザインを適用すると、画面幅に合わせてレイアウトが柔軟に切り替わります。ブラウザの画面サイズに応じてCSSのスタイルを設定できる手法をメディアクエリといいます。
/* responsive.css */ @media (max-width: 1000px) { /* ブレイクポイントをタブレットの画面幅に */ /* 1000px 以下の時に適用したいCSSを記述 */ .lesson { width: 50%; } } @media (max-width: 670px) { /* ブレイクポイントをスマートフォンの画面幅に */ /* 670px 以下の時に適用したいCSSを記述 */ .lesson { width: 100%; } }
・全要素にCSSを適用する
/* HTML全体にbox-sizing: border-box; を適用 */ * { /* 要素の幅(width)の合計にpaddingとborderを含むようにして、レイアウト崩れを防ぐ */ box-sizing: border-box; }
・viewportの設定
: <!-- メディアクエリを使用するには、viewportの設定が必要 --> <!-- viewportの下に分割したメディアクエリ用のCSSファイルを追加 --> :
・floatの解除
<!-- index.html --> <div class="lessons">: <div class="clear"></div> <!-- clearクラスを持つ空タグを追加 --></div> <pre>
/* stylesheet.css */ .clear { clear: left; /* floatを解除(親要素が高さを持つ) */ }
・画面幅を広げた際に冗長にならない様にする
.container { max-width: 1170px; /* 画面幅の上限を指定 */ width: 100%; /* その上限内で幅を最大まで広げる */ : }
・スマートフォンのヘッダーレイアウト(要素の表示/非表示)
<!-- index.html --> <a class="menu-icon" href="#"> <!-- メニューアイコンを追加 --> </a>
/* stylesheet.css */ .menu-icon { display: none; /* デフォルトでは非表示に設定 */ } /* responsive.css */ @media (max-width: 670px) { : .header-right { display: none; /* デフォルトのメニューを非表示にする */ } .menu-icon { display: block; /* メニューアイコンを表示させる */ } }
・完成版
<!-- index.html --> <!-- メディアクエリを使用するには、viewportの設定が必要 --> <!-- viewportの下に分割したメディアクエリ用のCSSファイルを追加 --> </pre> <header> <div class="container"> <div class="header-left"> <img class="logo" src="https://prog-8.com/images/html/advanced/main_logo.png" /></div> <!-- メニューアイコンを追加 --> <div class="header-right"> <a href="#">レッスン</a> <a href="#">新規登録</a> <a class="login" href="#">ログイン</a></div> </div> </header> <div class="top-wrapper"> <div class="container"> <h1>LEARN TO CODE.</h1> <h1>LEARN TO BE CREATIVE.</h1> Progateはオンラインプログラミング学習サービスです。 初心者にもやさしいスライドとレッスンで、ウェブサービスを作りながらプログラミングを学んでいきましょう。 <div class="btn-wrapper"> <a class="btn signup" href="#">新規登録はこちら</a> or <a class="btn facebook" href="#">Facebookで登録</a> <a class="btn twitter" href="#">Twitterで登録</a></div> </div> </div> <div class="lesson-wrapper"> <div class="container"> <div class="heading"> <h2>Learn Where to Get Started!</h2> </div> <div class="lessons"> <div class="lesson"> <div class="lesson-icon"> <img src="https://prog-8.com/images/html/advanced/html.png" /> HTML & CSS</div> ウェブページの作成に使用される言語です。HTMLとCSSを組み合わせることで、静的なページを作り上げることができます。</div> <div class="lesson"> <div class="lesson-icon"> <img src="https://prog-8.com/images/html/advanced/jQuery.png" /> jQuery</div> 素敵な動きを手軽に実装できるJavaScriptライブラリです。 アニメーション効果をつけたり、Ajax(エイジャックス)を使って外部ファイルを読み込んだりと色々なことができます。</div> <div class="lesson"> <div class="lesson-icon"> <img src="https://prog-8.com/images/html/advanced/ruby.png" /> Ruby</div> オープンソースの動的なプログラミング言語で、 シンプルさと高い生産性を備えています。大きなWebアプリケーションから小さな日用ツールまで、さまざまなソフトウェアを作ることができます。</div> <div class="lesson"> <div class="lesson-icon"> <img src="https://prog-8.com/images/html/advanced/php.png" /> PHP</div> HTMLだけではページの内容を変えることはできません。PHPはHTMLにプログラムを埋め込み、それを可能にします。</div> <div class="clear"></div> <!-- clearクラスを持つ空タグを追加 --></div> </div> </div> <div class="message-wrapper"> <div class="container"> <div class="heading"> <h2>さぁ、あなたもProgateでプログラミングを学んでみませんか?</h2> <h3>Let's learn to code, learn to be creative!</h3> </div> <span class="btn message">さっそく開発する</span></div> </div> <footer> <div class="container"> <img src="https://prog-8.com/images/html/advanced/footer_logo.png" /> Learn to code, learn to be creative.</div> </footer> <pre>
/* stylesheet.css */ * { /* 要素の幅(width)の合計にpaddingとborderを含むようにして、レイアウト崩れを防ぐ */ box-sizing: border-box; } body { margin: 0; font-family: "Hiragino Kaku Gothic ProN", sans-serif; } a { text-decoration: none; } .clear { clear: left; /* floatを解除(親要素が高さを持つ) */ } .container { max-width: 1170px; /* 画面幅の上限を指定 */ width: 100%; /* その上限内で幅を最大まで広げる */ padding: 0 15px; margin: 0 auto; } .top-wrapper { padding: 180px 0 100px 0; background-image: url(https://prog-8.com/images/html/advanced/top.png); background-size: cover; color: white; text-align: center; } .top-wrapper h1 { opacity: 0.7; font-size: 45px; letter-spacing: 5px; } .top-wrapper p { opacity: 0.7; } .btn-wrapper { text-align: center; margin: 20px 0; } .btn-wrapper p { margin: 10px 0; } .signup { background-color: #239b76; } .facebook { background-color: #3b5998; margin-right: 10px; } .twitter { background-color: #55acee; } .btn { padding: 8px 24px; color: white; display: inline-block; opacity: 0.8; border-radius: 4px; text-align: center; } .btn:hover { opacity: 1; } .fa { margin-right: 5px; } header { height: 65px; width: 100%; background-color: rgba(34, 49, 52, 0.9); position :fixed; top: 0; z-index: 10; } .logo { width: 124px; margin-top: 20px; } .header-left { float: left; } .header-right { float: right; margin-right: -25px; } .header-right a { line-height: 65px; padding: 0 25px; color: white; display: block; float: left; transition: all 0.5s; } .header-right a:hover { background-color: rgba(255, 255, 255, 0.3); } .menu-icon { color: white; float: right; font-size: 25px; padding: 21px 0; display: none; /* デフォルトでは非表示に設定 */ } .lesson-wrapper { padding-bottom: 80px; padding-left: 5%; padding-right: 5%; background-color: #f7f7f7; text-align: center; } .heading { padding-top: 80px; padding-bottom: 50px; color: #5f5d60; } .heading h2 { font-weight: normal; } .lesson { float: left; width: 25%; } .lesson-icon { position: relative; } .lesson-icon p { position: absolute; top: 44%; width: 100%; color: white; } .text-contents { width: 80%; display: inline-block; margin-top: 15px; font-size: 13px; color: #b3aeb5; } .heading h3 { font-weight: normal; } .message-wrapper { border-bottom: 1px solid #eee; padding-bottom: 80px; text-align: center; } .message { padding: 15px 40px; background-color: #5dca88; cursor: pointer; box-shadow: 0 7px #1a7940; } .message:active { position: relative; top: 7px; box-shadow: none; } footer img { width: 125px; } footer p { color: #b3aeb5; font-size: 12px; } footer { padding-top: 30px; padding-bottom: 20px; }
/* responsive.css */ /* タブレット向けレイアウト */ @media all and (max-width: 1000px) { /* ブレイクポイントをタブレットの画面幅に */ .lesson { width: 50%; margin-bottom: 50px; } footer { text-align: center; } .top-wrapper h1 { font-size: 32px; } .heading h2 { font-size: 20px; } } /* スマホ向けレイアウト */ @media all and (max-width: 670px) { /* ブレイクポイントをスマートフォンの画面幅に */ .lesson { width: 100%; } .btn { width: 100%; } .facebook { margin-bottom: 10px; } .top-wrapper { text-align: left; } .header-right { display: none; /* デフォルトのメニューを非表示にする */ } .menu-icon { display: block; /* メニューアイコンを表示させる */ } .top-wrapper h1 { font-size: 24px; } .top-wrapper p { font-size: 14px; } }
[siteorigin_widget class=”AdWidgetItem”][/siteorigin_widget]
[siteorigin_widget class=”WP_Widget_Search”][/siteorigin_widget]
[siteorigin_widget class=”WP_Widget_Pages”][/siteorigin_widget]
[siteorigin_widget class=”AdWidgetItem”][/siteorigin_widget]