【ソースコード】入門編:レシピサイト/レシピページ

目次

※コーディングの解説はCSSのコメントを参照

ディレクトリ構成

    
recipe2
 ├─img
 │  ├─favicon.ico
 │  └─recipe.jpg
 │
 ├─css
 │  └─style.css
 │
 └─index.html
    
  

HTML(index.html)

別タブで開く
index.html

<!DOCTYPE html>
<html lang="ja">
  <head>
    <meta charset="utf-8">
    <title>Recipe Diary</title>
    <meta name="description" content="テキストテキストテキストテキストテキストテキストテキストテキスト">
    <meta name="viewport" content="width=device-width, initial-scale=1">
    <link rel="shortcut icon" href="img/favicon.ico">
    <link rel="stylesheet" href="https://unpkg.com/ress/dist/ress.min.css">
    <link rel="stylesheet" href="css/style.css">
  </head>

  <body>
    <main>
      <div class="flex">
        <div class="image">
          <img src="img/recipe.jpg" alt="">
        </div>

        <div class="recipe">
          <h1 class="page-title">ひよこ豆とアボガドのタコス</h1>
          <p>たっぷりのひよこ豆とレンズ豆にアボガドとトマトを添えて、少しライムを絞ったらおいしいタコスのできあがりです。</p>

          <h2 class="content-title">材料(2人分)</h2>
          <dl class="ingredient-list">
            <dt>テキストテキスト</dt>
            <dd>1個</dd>
            <dt>テキストテキスト</dt>
            <dd>1個</dd>
            <dt>テキストテキスト</dt>
            <dd>1個</dd>
            <dt>テキストテキスト</dt>
            <dd>1個</dd>
            <dt>テキストテキスト</dt>
            <dd>1個</dd>
          </dl>

          <h2 class="content-title">作り方</h2>
          <ol class="step-list">
            <li>テキストテキストテキストテキスト</li>
            <li>テキストテキストテキストテキスト</li>
            <li>テキストテキストテキストテキスト</li>
            <li>テキストテキストテキストテキスト</li>
            <li>テキストテキストテキストテキスト</li>
          </ol>
        </div>
      </div>

      <div class="btn">
        <a href="#">レシピ一覧を見る</a>
      </div>
    </main>

    <footer id="footer">
      <ul class="sns">
        <li><a href="#">Instagram</a></li>
        <li><a href="#">Twitter</a></li>
        <li><a href="#">Facebook</a></li>
      </ul>
      <p>&copy; 2021 Recipe Diary</p>
    </footer>
  </body>
</html>

CSS(style.css)

別タブで開く
style.css

@charset "UTF-8";

html {
  font-size: 100%;
}
body {
  color: #2b2a27;
  font-family: "Helvetica Neue", "Arial", "Hiragino Sans", "Meiryo", sans-serif;
}
img {
  max-width: 100%;
}
ul {
  list-style: none;
}
a {
  color: #2b2a27;
}

/*-------------------------------------------
Recipe
-------------------------------------------*/
.flex {
  display: flex;
  margin-bottom: 60px;
}
.flex .image {
  width: 50%;
}
/*
高さは700pxで固定し、「object-fit: cover;」で
高さを固定したまま画面幅にあわせて画像を拡大縮小させる
*/
.flex .image img {
  width: 100%;
  height: 700px;
  object-fit: cover;
  vertical-align: bottom;
}
.flex .recipe {
  width: 50%;
  padding: 40px 5% 0 5%;
}
.flex .recipe .page-title {
  font-size: 1.75rem;
  margin-bottom: 20px;
}
.flex .recipe .content-title {
  border-bottom: solid 1px #ccc;
  font-size: 1.25rem;
  padding-bottom: 5px;
  margin: 40px 0 15px 0;
}
.flex .recipe .ingredient-list {
  display: flex;
  flex-wrap: wrap;
}
/*
border-bottom に「dotted」を指定して点線にする
*/
.flex .recipe .ingredient-list dt {
  width: 85%;
  border-bottom: dotted 1px #ccc;
  padding: 6px 0;
}
.flex .recipe .ingredient-list dd {
  width: 15%;
  border-bottom: dotted 1px #ccc;
  padding: 6px 0;
  text-align: right;
}
.flex .recipe .step-list li {
  border-bottom: dotted 1px #ccc;
  padding: 6px 0;
  margin-left: 20px;
}

/*-------------------------------------------
Button
-------------------------------------------*/
.btn {
  text-align: center;
  margin-bottom: 80px;
}
/*
「display: inline-block;」でaタグに幅と高さを持たせる。
paddingでボタンのサイズを調整。
*/
.btn a {
  display: inline-block;
  border: solid 1px #2b2a27;
  font-size: 0.875rem;
  padding: 18px 60px;
  text-decoration: none;
}

/*-------------------------------------------
Footer
-------------------------------------------*/
#footer {
  font-size: 0.75rem;
  padding: 20px;
  text-align: center;
}
/*
リンクはul、liタグで記述
SNSのリンク集という、一つの意味をもったリスト群になるので、ul、liタグでグルーピング
※リストタグを使用しなくても問題ないが、使用した方が検索エンジンに対して
より適切に意味を伝えることができると考えリストタグを選択しています。
*/
#footer .sns {
  display: flex;
  justify-content: center;
  margin-bottom: 20px;
}
#footer .sns li {
  margin: 0 10px;
}

/*-------------------------------------------
SP
-------------------------------------------*/
@media screen and (max-width: 834px) {
  /*-------------------------------------------
  Recipe
  -------------------------------------------*/
  .flex {
    flex-direction: column;
  }
  .flex .image {
    width: 100%;
  }
  /*
  画像の高さを固定していたのを解除する
  */
  .flex .image img {
    height: auto;
  }
  .flex .recipe {
    width: 100%;
  }
}