【入門編】カフェサイトのコーディング練習

カフェサイトのコーディング練習

webdesigner-go.com

記述例 - 参考サイト例との違い

  • クラス名は、ほぼ参考ページと同様に設定
  • navのリストは、paddingで面を広げてボタンとして役割をもたせてある
  • navのリストは、Flexboxで横並びを指定
  • 「Concept」と「blog」の横並びは、CSS Gridで指定
  • ブログ内の「日付」にtime要素を使用
  • ブログ内の「日付」と「タイトル」の順序を変更
  • ボタン内の「矢印」は、FontAwesome6 で設定
  • 画像は、引用元のまま
<!DOCTYPE html>
<html lang="ja">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width">
<title>【コーディング練習】Sky Coffee</title>
<link rel="stylesheet" href="css/style.css">
</head>
<body>
<!-- .header -->
<header class="header">
  <h1 class="logo"> <a href="#"><img src="img/logo.png" alt="SKY COFFEE"></a></h1>
</header>
<!-- /.header -->

<!-- .main-visual -->
<div class="main-visual">
  <picture>
    <source media="(min-width: 768px)" srcset="img/pc_main-visual.jpg">
    <img src="img/sp_main-visual.jpg" alt="複数の青いカップのコーヒー">
  </picture>
</div>
<!-- /.main-visual -->

<!-- global-nav -->
<nav class="gnav">
  <ul>
    <li><a href="#">menu</a></li>
    <li><a href="#">blog</a></li>
    <li><a href="#">access</a></li>
  </ul>
</nav>
<!-- /global-nav -->

<!-- .main-content -->
<main class="main-content">

<!-- .concept -->
<section class="concept">
  <div class="container">
    <div class="img">
      <img src="img/concept.jpg" alt="青いカップのコーヒー">
    </div>
    <div class="text-block">
      <div class="subtitle">Concept</div>
      <h2 class="title">心静かにコーヒーを</h2>
        <p>
          立ち止まって、<br>
          空の青さを眺めて、<br>
          一息つきましょう。
        </p>
    </div><!-- /.text-block -->
  </div><!-- /.container -->
</section>
<!-- /.concept -->

<!-- .blog -->
<section class="blog">
  <div class="container">
    <h2 class="heading">blog<br>ブログ</h2>
    <div class="list">
      <div class="item">
        <a href="#">
          <div class="img"><img src="img/thumbnail01.jpg" alt="青いトラック"></div>
          <time datetime="2030.08.08" class="dtime">2030.08.08</time>
          <div class="title">コーヒーカー始めました。</div>
        </a>
      </div>
      <div class="item">
        <a href="#">
          <div class="img"><img src="img/thumbnail02.jpg" alt="牛乳"></div>
          <time datetime="2030.08.05" class="dtime">2030.08.05</time>
          <div class="title">濃厚クリーミーなミルクをどうぞ</div>
        </a>
      </div>
      <div class="item">
        <a href="#">
          <div class="img"><img src="img/thumbnail03.jpg" alt="音楽アプリ"></div>
          <time datetime="2030.08.02" class="dtime">2030.08.02</time>
          <div class="title">Sky Coffeeのオリジナル曲が完成!<br>無料ダウンロード可能です。</div>
        </a>
      </div>
      <div class="item">
        <a href="#">
          <div class="img"><img src="img/thumbnail04.jpg" alt="山々"></div>
          <time datetime="2030.07.28" class="dtime">2030.07.28</time>
          <div class="title">ハイキング用のコーヒーを販売中です。</div>
        </a>
      </div>
      <div class="item">
        <a href="#">
          <div class="img"><img src="img/thumbnail05.jpg" alt="青とピンクのグラデーション"></div>
          <time datetime="2030.07.27" class="dtime">2030.07.27</time>
          <div class="title">ショップの壁を塗ってみました。</div>
        </a>
      </div>
      <div class="item">
        <a href="#">
          <div class="img"><img src="img/thumbnail06.jpg" alt="コーヒーと手帳"></div>
          <time datetime="2030.07.26" class="dtime">2030.07.26</time>
          <div class="title">ブログをはじめました。</div>
        </a>
      </div>
    </div>
    <a href="#" class="btn">
      ブログ一覧<i class="fa-solid fa-angles-right"></i>
    </a>
  </div><!-- /.container -->
</section>
<!-- /.blog -->

</main>
<!-- /.main-content -->

<!-- .footer -->
<footer class="footer">
  <p class="logo"><a href="#"><img src="img/logo-white.png" alt="SKY COFFEE"></a></p>
  <p class="copyright"><small>&copy;Sky Coffee</small></p>
</footer>
<!-- /.footer -->
<script src="https://kit.fontawesome.com/1965ed1cf3.js" crossorigin="anonymous"></script>
</body>
</html>
@charset "URF-8";

/* --------------------------------------
  reset
-------------------------------------- */
*, *::before, *::after {
  margin: 0;
  padding: 0;
  box-sizing: border-box;
}
ul, li {
  list-style: none;
}
a {
  color: inherit;
  text-decoration: none;
}
img {
  max-width: 100%;
  vertical-align: bottom;
}


/* --------------------------------------
  body
-------------------------------------- */
body {
  color: #333;
  font-size: 16px;
  font-family: Arial, sans-serif;
  line-height: 1.0;
}


/* --------------------------------------
  layout
-------------------------------------- */
.container {
  padding: 0 20px;
}

@media screen and (min-width: 768px) {
  .container {
    max-width: 1170px;
    margin: 0 auto;
    padding: 0 30px;
  }
}

/* --------------------------------------
  header
-------------------------------------- */
.header {
  padding: 30px 0;
}
  .header .logo {
    width: 160px;
    margin: 0 auto;
  }
@media screen and (min-width: 768px) {
  .header {
    padding: 50px 0;
  }
    .header .logo {
      width: 280px;
    }
}


/* --------------------------------------
  nav
-------------------------------------- */
.gnav {
  padding: 20px 0;
}
  .gnav ul {
    display: flex;
    justify-content: center;
  }
    .gnav li {
      letter-spacing: 0.1em;
    }
    .gnav a {
      display: block;
      padding: 10px 25px;
    }

@media screen and (min-width: 768px) {
  .gnav li {
    font-size: 18px;
  }
  .gnav a {
    display: block;
    padding: 20px 40px;
  }
}


/* --------------------------------------
  main
-------------------------------------- */

/* ----------- concept ----------- */
.concept {
  padding: 40px 0;
}
  .text-block {
    padding: 36px 20px 0;
  }
  .text-block .subtitle {
    margin-bottom: 20px;
    font-size: 15px;
    letter-spacing: 0.1em;
  }
  .text-block .title {
    margin-bottom: 20px;
    color: #24a8bf;
    font-size: 26px;
    font-weight: bold;
    line-height: 1.5;
    letter-spacing: 0.1em;
  }
  .text-block p {
    font-size: 15px;
    line-height: 1.8;
    letter-spacing: 0.1em;
  }

@media screen and (min-width: 768px) {
  .concept {
    padding: 50px 0;
  }
  .concept > .container {
    display: grid;
    grid-template-columns: repeat(2, 1fr);
    gap: 40px;
    align-items: center;
  }
    .text-block .subtitle {
      font-size: 16px;
    }
    .text-block .title {
      margin-bottom: 30px;
      font-size: 32px;
    }
    .text-block p {
      font-size: 16px;
    }
}

/* ----------- blog ----------- */
.blog {
  padding: 40px 0;
}
  .blog .heading {
    margin-bottom: 30px;
    color: #333;
    font-size: 13px;
    font-weight: normal;
    letter-spacing: 0.03em;
    text-align: center;
  }
  .blog .heading::first-line {
    color: #24a8bf;
    font-size: 30px;
    font-weight: bold;
    line-height: 1.8;
    letter-spacing: 0.08em;
  }
    .blog .item a {
      display: block;
    }
      .blog .item a:hover {
        opacity: .7;
      }
        .blog .img {
          margin-bottom: 12px;
        }
        .dtime {
          display: block;
          margin-bottom: 8px;
        }
        .blog .title {
          margin-bottom: 20px;
          font-weight: bold;
          line-height: 1.5;
        }

@media screen and (min-width: 768px) {
  .blog .list {
    display: grid;
    grid-template-columns: repeat(3, 1fr);
    gap: 30px;
    margin-bottom: 30px;
  }
  .blog .heading::first-line {
    color: #24a8bf;
    font-size: 32px;
    font-weight: bold;
    line-height: 1.4;
    letter-spacing: 0.08em;
  }
  .blog .title {
    margin-bottom: 0;
  }
}

/* ----------- button ----------- */
  a.btn {
    display: block;
    width: 220px;
    margin: 0 auto;
    padding: 18px 0;
    border: 1px solid #24a8bf;
    border-radius: 3px;
    color: #24a8bf;
    font-size: 15px;
    font-weight: bold;
    text-align: center;
    transition: 0.3s;
    position: relative;
  }
    a.btn:hover {
      opacity: 0.7;
    }
    a.btn i {
      margin-left: 20px;
    }

/* --------------------------------------
  footer
-------------------------------------- */
.footer {
  padding: 70px 0 30px;
  background-color: #000;
}
  .footer .logo {
    width: 180px;
    margin: 0 auto;
    margin-bottom: 50px;
  }
  .footer .copyright {
    font-size: 14px;
    letter-spacing: 1px;
    color: #8b8b8b;
    text-align: center;
  }


参考

プロジェクトの切り替え
  • VS Code 拡張機能「Project Manager」をインストールして、フォルダーを追加し切り替えています


ピクセルパーフェクト
  • line-heightの初期設定の違い、書体指定の違い、Mac / Winの表示の違いなどからパーフェクトは難しいので、読みやすさを優先に文書構造が破綻しないレイアウトを心がけ、トレースコーディングを行います

Google Chrome 拡張機能