5b. ProgateでHTML&CSS中級(ランディングページ)(備忘録)

HTML&CSS 中級編

・headerとfooter
<div class=”header”><div class=”footer”>のような、ヘッダーとフッターのためのタグは非常によく使われるので、HTMLには<header><footer>というタグが用意されています。

<!-- <div>とクラス名を用いた方法 -->
<div class="header"></div>
<div class="footer"></div>

<!-- <header><footer>を用いた方法 -->
<header></header>								<!-- こっちを使う方が一般的 -->
<footer></footer>


・背景画像の大きさを指定

div {
	height: 200px;
	background-image: url{top.png};			/* 背景画像の指定 */
	background-size: cover;					/* 1枚の画像で表示範囲を埋め尽くすように背景を拡大・縮小 */
}

・要素を中央に配置する

.box {
	width: 300px;			/* margin を auto にする時は必ずwidthを指定する */
	margin: 0 auto;			/* 中央に寄せるにはmarginの左右にautoを指定(上下にautoは指定できない) */
}

・透明度、文字の間隔を調整する

.top-wrapper h1 {
  opacity: 0.7;			/* 要素を透過させる */
  letter-spacing: 5px;	/* 文字の間隔を指定 */
}


・インラインブロック

ブロック要素とインライン要素の特徴を併せ持つインラインブロック要素というものがあります。インラインブロック要素はインライン要素と同様に横に並びますが、ブロック要素のように幅や高さを持たせることができます。

ブロック要素(<div>タグなど) インラインブロック要素 インライン要素(<a>タグなど)
width, height 〇 指定できる 〇 指定できる × 指定できない
margin, padding 〇 指定できる 〇 指定できる △ 左右のみ指定できる
配置 縦並び 横並び 横並び

<a>タグは初期状態でインライン要素ですが、displayプロパティを使ってインラインブロック要素に変更できます。

.btn {
  display: inline-block;		/* インラインブロック要素を指定 */
}


・レイアウトを整える

div:hover {							/* カーソルを乗せた時のCSSを指定 */
	background-color: red;
}

.box {
	border-radius: 10px;			/* ボタンを角丸にする */
}

.top-wrapper {
	text-align: center;				/* テキストを中央に寄せる */
}

・アイコンの使い方

<!-- Font AwesomeのCSSファイルを読み込む -->
<link rel="stylesheet" href="//maxcdn.bootstrapcdn.com/font-awesome/4.3.0/css/font-awesome.min.css">

<!-- <span>タグにfaクラスとfa-アイコン名クラスを指定する -->
<span class="fa fa-twitter"></span>

・rgba

.rgba-sample {
	background-color: rgba(84, 190, 238, 0.5);		/* 背景色だけが透明 */
}

・アニメーションの設定

div {
	transition: all 1s;			/* アニメーションを付ける */
}

div:hover {						/* transitionとhoverを組み合わせて使う */
	background-color: red;
}

・行間と文字の太さの指定

	line-height: 30px;			/* 行の高さを指定(縦の中央寄せ) */
	font-weight: bold;			/* 文字を太字にする */

・親要素に対する相対的な大きさの指定

<!-- index.html -->
<div class="parent">
	<div class="child"></div>
	<div class="child"></div>
</div>
/* stylesheet.css */
.child {
	width: 50%;
		:
}

・要素同士を重ねて表示

.box1 {
	position: absolute;
	top: 50px;				/* サイト全体の左上部分を基準 */
	left: 70px;
}
.box2 {
	position: absolute;
	top: 120px;
	left: 140px;
}

・カーソルの形を変更する

	cursor: pointer;				/* カーソルを手の形に */
	box-shadow: 10px 10px #000000;	/* ボックスに影を付ける */

・クリック時に変化を付ける

.btn:active {					/* セレクタにactiveを用いる */
	box-shadow: none;			/* 影を消す */
	position: relative;			/* 基準位置を変更する */
	top: 6px;					/* 影の分だけ位置を下げる */
}

・ヘッダーを固定する

.fixed-img {
	position: fixed;		/* 画面上の指定した位置に固定 */
	top: 10px;
	left: 40px;
	z-index: 10;			/* 要素の重なりの順序を指定(positionプロパティと併用する必要あり) */
}


・完成版

<!-- index.html -->
<!DOCTYPE html>
<html>
  <head>
    <meta charset="utf-8">
    <title>Progate</title>
    <link rel="stylesheet" href="stylesheet.css">

    <!-- Font AwesomeのCSSファイルを読み込む -->
    <link rel="stylesheet" href="//maxcdn.bootstrapcdn.com/font-awesome/4.3.0/css/font-awesome.min.css">
  </head>
  <body>
    <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="#" class="login">ログイン</a>
        </div>
      </div>
    </header>
    <div class="top-wrapper">
      <div class="container">
        <h1>LEARN TO CODE.</h1>
        <h1>LEARN TO BE CREATIVE.</h1>
        <p>Progateはオンラインプログラミング学習サービスです。</p>
        <p>初心者にもやさしいスライドとレッスンで、ウェブサービスを作りながらプログラミングを学んでいきましょう。</p>
        <div class="btn-wrapper">
          <a href="#" class="btn signup">新規登録はこちら</a>
          <p>or sign up with</p>

          <!-- <span>タグにfaクラスとfa-アイコン名クラスを指定 -->
          <a href="#" class="btn facebook"><span class="fa fa-facebook"></span>Facebookで登録</a>
          <a href="#" class="btn twitter"><span class="fa fa-twitter"></span>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">
              <p>HTML & CSS</p>
            </div>
            <p class="txt-contents">ウェブページの作成に使用される言語です。HTMLとCSSを組み合わせることで、静的なページを作り上げることができます。</p>
          </div>
          <div class="lesson">
            <div class="lesson-icon">
              <img src="https://prog-8.com/images/html/advanced/jQuery.png">
              <p>jQuery</p>
            </div>
            <p class="txt-contents">素敵な動きを手軽に実装できるJavaScriptライブラリです。 アニメーション効果をつけたり、Ajax(エイジャックス)を使って外部ファイルを読み込んだりと色々なことができます。</p>
          </div>
          <div class="lesson">
            <div class="lesson-icon">
              <img src="https://prog-8.com/images/html/advanced/ruby.png">
              <p>Ruby</p>
            </div>
            <p class="txt-contents">オープンソースの動的なプログラミング言語で、 シンプルさと高い生産性を備えています。大きなWebアプリケーションから小さな日用ツールまで、さまざまなソフトウェアを作ることができます。</p>
          </div>
          <div class="lesson">
            <div class="lesson-icon">
              <img src="https://prog-8.com/images/html/advanced/php.png">
              <p>PHP</p>
            </div>
            <p class="txt-contents">HTMLだけではページの内容を変えることはできません。PHPはHTMLにプログラムを埋め込み、それを可能にします。</p>
          </div>
        </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">
        <p>Learn to code, learn to be creative.</p>
      </div>
    </footer>
  </body>
</html>
/* stylesheet */
body {
  margin: 0;
  font-family: "Hiragino Kaku Gothic ProN";
}

a {
  text-decoration: none;
}

.container {
  width: 1170px;	/* margin を auto にする時は必ずwidthを指定する */
  padding: 0 15px;
  margin: 0 auto;	/* 中央に寄せるにはmarginの左右にautoを指定(上下にautoは指定できない) */
}

.top-wrapper {
  padding: 180px 0 100px 0;
  background-image: url(https://prog-8.com/images/html/advanced/top.png);	/* 背景画像の指定 */
  background-size: cover;	/* 1枚の画像で表示範囲を埋め尽くすように背景を拡大・縮小 */
  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 {
  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;		/* ボタンを角丸にする */
}

.btn:hover {
  opacity: 1;
}

.fa {
  margin-right: 5px;
}

header {
  height: 65px;
  width: 100%;
  background-color: rgba(34, 49, 52, 0.9);	/* 背景色だけが透明 */
  position: fixed;	/* 画面上の指定した位置に固定 */
  top: 0px;
  z-index: 10;		/* 要素の重なりの順序を指定(positionプロパティと併用する必要あり) */
}

.logo {
  width: 124px;
  margin-top: 20px;
}

.header-left {
  float: left;
}

.header-right {
  float: right;
  background-color: rgba(255, 255, 255, 0.3);
  transition: all 0.5s;		/* アニメーションを付ける(hoverと組み合わせて使う) */
}

.header-right:hover {		/* カーソルを乗せた時のCSSを指定 */
  background-color: rgba(255, 255, 255, 0.5);
}

.header-right a {
  line-height: 65px;		/* 行の高さを指定(縦の中央寄せ) */
  padding: 0 25px;
  color: white;
  display: block;
}

.lesson-wrapper {
  height: 500px;
  padding-bottom: 80px;
  background-color: #f7f7f7;
  text-align: center;
}

.heading {
  padding-top: 60px;
  padding-bottom: 30px;
  color: #5f5d60;
}

.heading h2 {
  font-weight: normal;	/* 文字を太字から標準に戻す */
}

.lesson {
  float: left;
  width: 25%;			/* 親要素に対する相対的な大きさを25%に */
}

.lesson-icon {
  position: relative;
}

.lesson-icon p {
  position: absolute;	/* 要素同士を重ねて表示 */
  top: 90px;
  width: 100%;
  color: white;
}

.txt-contents {
  width: 80%;
  display: inline-block;
  margin-top: 20px;
  font-size: 12px;
  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 {		/* セレクタにactiveを用いてクリック時に変化を付ける */
  box-shadow: none;		/* 影を消す */
  position: relative;	/* 基準位置を変更する */
  top: 7px;				/* 影の分だけ位置を下げる */
}

footer img {
  width: 125px;
}

footer p {
  color: #b3aeb5;
  font-size: 12px;
}

footer {
  padding-top: 30px;
}