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]
