Web白描

Webデザインの勉強 - 演習

Sleepy Cats - サイト試案

Sleepy Cats - サイト試案

完成例

記述例
  • 動画は、圧縮サイトで3MB以内に圧縮してあります
  • headerは、固定してあるため「トップへ戻る」ボタンは設置しません
  • ナビゲーションは、スマートフォン前提で記述

index.html
<!DOCTYPE html>
<html lang="ja">
<head>
<meta charset="utf-8">
<title>Sleepy Cats</title>
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<link rel="shortcut icon" href="img/favicon.png">
<link rel="preconnect" href="https://fonts.googleapis.com">
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
<link href="https://fonts.googleapis.com/css2?family=Caveat:[email protected]&family=M+PLUS+Rounded+1c&display=swap" rel="stylesheet">
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/slick-carousel/1.9.0/slick.min.css">
<link rel="stylesheet" href="css/style.css">
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.7.1/jquery.min.js" defer></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/slick-carousel/1.9.0/slick.min.js" defer></script>
<script src="js/script.js" defer></script>
</head>
<body>
<!-- header -->
<header id="header">
  <h1><a href="index.html"><img src="img/logo.svg" alt="Sleepy Cats"></a></h1>
  <!-- nav -->
  <nav id="gnav">
    <ul class="nav_menu">
      <li><a href="#pickup">PICK UP</a></li>
      <li><a href="#feature">FEATURE</a></li>
      <li><a href="#contact">CONTACT</a></li>
    </ul>
    <ul class="nav_sns">
      <li><a href="https://twitter.com/" target="_blank">Twitter</a></li>
      <li><a href="https://www.facebook.com/" target="_blank">facebook</a></li>
      <li><a href="https://www.instagram.com/" target="_blank">instagram</a></li>
    </ul>
  </nav>
  <!-- toggle_btn -->
  <div id="toggle_btn">
    <span></span>
    <span></span>
    <span></span>
  </div>
  <div id="mask"></div>
</header>
<!-- /header -->

<!-- main -->
<main class="main">
  <video id="video" loop autoplay muted playsinline>
  <source src="video/cat.mp4">
  </video>
  <!-- pickup -->
  <section id="pickup">
    <h2>PICK UP</h2>
    <ul class="slick-area">
      <li><img src="img/pickup1.webp" alt=""></li>
      <li><img src="img/pickup2.webp" alt=""></li>
      <li><img src="img/pickup3.webp" alt=""></li>
      <li><img src="img/pickup4.webp" alt=""></li>
      <li><img src="img/pickup5.webp" alt=""></li>
      <li><img src="img/pickup6.webp" alt=""></li>
      <li><img src="img/pickup7.webp" alt=""></li>
      <li><img src="img/pickup8.webp" alt=""></li>
      <li><img src="img/pickup9.webp" alt=""></li>
    </ul>
    <p class="lead">猫がよく眠るのは習性で、ほとんどの場合は心配する必要はないようです。
    遊びたくなれば、猫は起きてきて飼い主に知らせるので、それまではゆっくり休ませてあげましょう。</p>
  </section>
  <!-- feature -->
  <section id="feature" class="container">
    <h2 class="sec-title">FEATURE</h2>
    <ul class="grid">
      <li class="item">
        <img class="fadein" src="img/feature9.webp" alt="">
        <div class="item_content">
          <p class="item_cat">アメリカンショートヘア</p>
          <p class="item_text">基本的には大変明るく、好奇心旺盛だと言われています。そんな性格であるうえ、高い身体能力を備えているので、場合によってはやんちゃが過ぎることも。</p>
          <p class="item_date">
            <time datetime="2024-05-03">2024.05.03</time>
          </p>
        </div>
      </li>
      <li class="item">
        <img class="fadein" src="img/feature8.webp" alt="">
        <div class="item_content">
          <p class="item_cat">ターキッシュアンゴラ</p>
          <p class="item_text">白猫は警戒心が強い反面、飼い主と認めた相手には心を許しとても甘えるようになります。個体差はあるもののその分独占欲が強いことも多いです。</p>
          <p class="item_date">
            <time datetime="2023.02.18">2024.04.18</time>
          </p>
        </div>
      </li>
      <li class="item">
        <img class="fadein" src="img/feature5.webp" alt="">
        <div class="item_content">
          <p class="item_cat">ブリティッシュショートヘア</p>
          <p class="item_text">とても人懐っこく、一緒に遊ぶのも楽しいです。 とても頭の良い猫種ですので、飼い主にも手間をかけずとても飼いやすいといえます。</p>
          <p class="item_date">
            <time datetime="2023-10-03">2024.04.13</time>
          </p>
        </div>
      </li>
      <li class="item">
        <img class="fadein" src="img/feature2.webp" alt="">
        <div class="item_content">
          <p class="item_cat">ハチワレ</p>
          <p class="item_text">日本ではキジトラ柄に続いて2番目に多くいる柄がハチワレ猫だとされていて、中でも白黒の色が多くを占めています。</p>
          <p class="item_date">
            <time datetime="2024-04-21">2024.04.02</time>
          </p>
        </div>
      </li>
      <li class="item">
        <img class="fadein" src="img/feature3.webp" alt="">
        <div class="item_content">
          <p class="item_cat">アメリカンショートヘア</p>
          <p class="item_text">茶トラは、人のそばで暮らすようになってから増えた毛色で、人懐っこいほうが食事をもらいやすかったことから、甘えん坊な子が多くなったと考えられています。</p>
          <p class="item_date">
            <time datetime="2024-03-03">2024.01.22</time>
          </p>
        </div>
      </li>
      <li class="item">
        <img class="fadein" src="img/feature4.webp" alt="">
        <div class="item_content">
          <p class="item_cat">ブリティッシュショートヘア</p>
          <p class="item_text">グレーを基調に白い毛色がある猫の性格は、グレー猫寄り。知的で落ち着きがあり、飼い主には甘えん坊な性格をしています。</p>
          <p class="item_date">
            <time datetime="2024-02-19">2023.12.19</time>
          </p>
        </div>
      </li>
      <li class="item">
        <img class="fadein" src="img/feature6.webp" alt="">
        <div class="item_content">
          <p class="item_cat">ハチワレ</p>
          <p class="item_text">白黒の割合によって性格が異なるという説もあります。白が多い猫は警戒心が強くて人見知り、黒が多い猫はおおらかで人懐っこい、などと言われています。</p>
          <p class="item_date">
            <time datetime="2023-10-03">2023.11.26</time>
          </p>
        </div>
      </li>
      <li class="item">
        <img class="fadein" src="img/feature7.webp" alt="">
        <div class="item_content">
          <p class="item_cat">メインクーン</p>
          <p class="item_text">温厚で人懐っこい性格です。愛嬌がよく、ほかの猫や動物、小さな子どもともうまく付き合えます。活発で好奇心旺盛な一面もあります。</p>
          <p class="item_date">
            <time datetime="2023.04.14">2023.10.14</time>
          </p>
        </div>
      </li>
      <li class="item" >
        <img class="fadein" src="img/feature1.webp" alt="">
        <div class="item_content">
          <p class="item_cat">マッカレル・タビー</p>
          <p class="item_text">茶トラ猫は警戒心が少なく、甘えん坊でおおらかな性格の子が多いといいます。細かな性格は個々の育った環境によっても異なります。</p>
          <p class="item_date">
            <time datetime="2024-05-03">2023.09.16</time>
          </p>
        </div>
      </li>
    </ul>
  </section>
  <!-- contact -->
  <section id="contact">
    <div class="container">
      <h2>CONTACT</h2>
      <div class="content">
        <div class="contact_info">
          <h3>猫がよく眠るのはなぜ?</h3>
          <p>「猫」の語源について、ご存じですか?
          諸説あるようですが、「寝る子」と書いて「ネコ」と呼ぶことに由来すると言われるくらい、昔から猫はよく睡眠をとることで知られています。</p>
          <p>猫の睡眠時間は一般的に1日の3分の2程度といわれています。
          狩猟本能から、昼間のうちにたっぷりと睡眠をとり、狩猟のためのエネルギーを蓄えているのです。
          猫が心地よく眠れるように、配慮してあげましょう。</p>
        </div><!-- /.contact_info -->
        <div class="contact_form">
          <form action="#">
            <dl>
              <dt><label for="name">Name:</label></dt>
              <dd><input type="text" id="name" name="your-name"></dd>
              <dt><label for="email">Mail:</label></dt>
              <dd><input type="email" id="email" name="your-email"></dd>
              <dt><label for="message">Message:</label></dt>
              <dd><textarea id="message" name="your-message"></textarea></dd>
            </dl>
            <div class="button"><input type="submit" value="SEND"></div>
          </form>
        </div><!-- /.contact_form -->
      </div><!-- /.content -->
    </div><!-- /.container -->
  </section>
</main>
<!-- /main -->

<!-- footer -->
<footer class="footer">
  <p>&copy; Sneakers</p>
</footer>
<!-- /footer -->
</body>
</html>

style.css
@charset "UTF-8";

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


/* ---------------------------------------
  body
--------------------------------------- */
body {
  background-color: #fff;
  color: #333;
  font-size: 1.0rem;
  font-family: "Caveat", "M PLUS Rounded 1c", cursive;
  line-height: 1.0;
}


/* ---------------------------------------
  layout(共通)
--------------------------------------- */
.container {
  width: min(90%, 1240px);
  margin: 0 auto;
}
h2 {
  font-size: 2.25rem;
  margin-bottom: 30px;
  text-align: center;
} 
.fadein {
  opacity : 0;
  transform: translateY(20px);
  transition: all 1s;
}

@media screen and (max-width: 767px) {
  h2 {
    font-size: 1.875rem;
    margin-bottom: 20px;
  }
}


/* ---------------------------------------
  header
--------------------------------------- */
#header {
  display: grid;
  grid-template-columns: 200px auto;
  width: 100%;
  padding: 10px 60px;
  position: fixed;
  z-index: 100;
  background-color: #fff;
}

@media screen and (max-width: 767px) {
  #header {
    padding: 10px 20px;
  }
  h1 {
    width: 160px;
  }
}


/* ---------------------------------------
  nav
--------------------------------------- */
#gnav {
  display: block;
  position: fixed;
  top: 0;
  left: -325px;
  bottom: 0;
  width: 325px;
  color: #fff;
  padding: 100px 25px;
  background-color: #121212;
  overflow-x: hidden;
  overflow-y: auto;
  -webkit-overflow-scrolling: touch;
  transition: all .3s;
  z-index: 20;
  opacity: 0;
}
  #gnav a {
    color: #fff;
  }
  .active #gnav {
    left: 0;
    opacity: 1;
  }
  #gnav ul {
    margin: 0;
    padding: 0;
  }
  #gnav ul.nav_menu {
    margin-bottom: 60px;
    border-top: solid 1px #fff;
    text-align: center;
  }
  #gnav ul.nav_menu li {
    position: relative;
    margin: 0;
    border-bottom: 1px solid #fff;
  }
  #gnav ul.nav_menu li > a {
    display: block;
    padding: 20px 0;
  }
  #gnav ul.nav_sns li {
    padding: 15px 0;
  }

/* ----------- toggle_btn -------------- */
#toggle_btn {
  display: block;
  position: fixed;
  top: 20px;
  right: 60px;
  width: 30px;
  height: 30px;
  transition: all .5s;
  cursor: pointer;
  z-index: 20;
}
#toggle_btn span {
  display: block;
  position: absolute;
  left: 0;
  width: 30px;
  height: 2px;
  background-color: #333;
  border-radius: 4px;
  transition: all .5s;
}
#toggle_btn span:nth-child(1) {
  top: 4px;
}
#toggle_btn span:nth-child(2) {
  top: 50%;
}
#toggle_btn span:nth-child(3) {
  bottom: 4px;
}
.active #toggle_btn span {
  background-color: #fff;
}
.active #toggle_btn span:nth-child(1) {
  top: 50%;
  transform: rotate(45deg);
}
.active #toggle_btn span:nth-child(2) {
  opacity: 0;
}
.active #toggle_btn span:nth-child(3) {
  top: 50%;
  transform: rotate(-45deg);
}
#mask {
  display: none;
  transition: all .3s;
}
  .active #mask {
    display: block;
    position: fixed;
    top: 0;
    left: 0;
    width: 100%;
    height: 100%;
    background: #000;
    opacity: .5;
    z-index: 10;
    cursor: pointer;
  }

@media screen and (max-width: 767px) {
  #toggle_btn {
    top: 10px;
    right: 20px;
  }
}


/* ---------------------------------------
  main
--------------------------------------- */
.main {
  padding-top: 80px;
}

@media screen and (max-width: 767px) {
  .main {
    padding-top: 40px;
  }
}

/* -------------- video --------------- */
#video {
  width: 100%;
  max-height: 960px;
  object-fit: cover;
}
@media screen and (max-width: 767px) {
  #video {
    height: 60vh;
  }
}


/* -------------- pickup --------------- */
#pickup {
  width: 100%;
  padding-top: 100px;
}
  #pickup li {
      padding: 0 10px;
    }
  .lead {
    max-width: 640px;
    margin: 30px auto;
    padding: 0 40px;
    line-height: 1.7;
    text-align: justify;
    white-space: pre-line;
  }

@media screen and (max-width: 767px) {
  #pickup {
    padding-top: 60px;
  }
}

/* -------------- feature -------------- */
#feature {
  max-width: 1240px;
  margin: 0 auto 50px;
  padding-top: 100px;
}
  #feature > ul {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(300px, 1fr));
    gap: 26px;
  }
    #feature li{
      transition: all  0.3s ease;
      border: 1px solid #ccc;
      box-shadow: 0 0 8px #ccc;
    }
      #feature .item_content {
        padding: 30px;
      }
        .item_cat {
          font-size: 0.875rem;
          margin-bottom: 20px;
        }
        .item_text {
          margin-bottom: 20px;
          font-weight: bold;
          line-height: 1.4;
          text-align: justify;
        }
        .item_date {
          font-size: 0.875rem;
          text-align: right;
        }

@media screen and (max-width: 767px) {
  #feature {
    padding-top: 60px;
  }
  #feature .item_content {
    padding: 16px 24px;
  }
  .item_text {
    margin-bottom: 10px;
    font-size: 0.8rem;
  }
}

/* -------------- contact --------------- */
#contact {
  padding-top: 110px;
  background-color: #121212;
  color: #fff;
}
  .content {
    display: grid;
    grid-template-columns: 45% 45%;
    gap: 10%;
    padding: 0 16px;
  }
    .contact_info h3 {
      margin-bottom: 40px;
    }
    .contact_info p {
      margin-bottom: 30px;
      line-height: 1.7;
      white-space: pre-line;
    }

@media screen and (max-width: 767px) {
  .content {
    display: block;
  }
  .contact_info h3 {
    text-align: center;
  }
  .contact_info p {
    font-size: 0.875rem;
  }
}


/* --------------- form ---------------- */
.contact_form dt {
  margin-bottom: 10px;
}
  .contact_form input,
  .contact_form textarea {
    width: 100%;
    margin-bottom: 20px;
    padding: 10px;
    background-color: #fff;
  }
  .contact_form .button input {
    width: 200px;
    margin-bottom: 0;
    padding: 12px 0;
    background-color: #121212;
    border: solid 1px #fff;
    color: #fff;
  }
    .contact_form .button input:hover {
      background-color: #fff;
      color: #202020;
    }

@media screen and (max-width: 767px) {
  .contact_form .button input {
    width: 100%;
  }
}


/* ---------------------------------------
  footer
--------------------------------------- */
.footer {
  padding: 20px;
  background-color: #121212;
  color: #fff;
  font-size: 0.75rem;
  text-align: center;
}

script.js
$(function(){

  /* ======================================
    ハンバーガーメニューの開閉
  ====================================== */
  // ハンバーガーメニューのクリックイベント
  $('#toggle_btn').on('click', function() {
    if ($('#header').hasClass('active')) {
      $('#header').removeClass('active');
    } else {
      $('#header').addClass('active');
    }
  });

  // #maskのエリアをクリックした時にメニューを閉じる
  $('#mask').on('click', function() {
    $('#header').removeClass('active');
  });

  // リンクをクリックした時にメニューを閉じる
  $('#gnav a').on('click', function() {
    $('#header').removeClass('active');
  });


  /* ======================================
    PICK UP スライダー
  ====================================== */
  // カルーセル用「slick」の設定
  $('.slick-area').slick({
    arrows: false,
    centerMode: true,
    centerPadding: '100px',
    slidesToShow: 3,
    autoplay: true,
    autoplaySpeed: 2000,
    speed: 2000,
    responsive: [
      {
        breakpoint: 768,
        settings: {
          centerPadding: '50px',
          slidesToShow: 1
        }
      }
    ]
  });


  /* ======================================
    スクロール時の画像フェード表示
  ====================================== */
  // スクロール時のイベント
  $(window).scroll(function() {

    // fadeinクラスに対して順に処理を行う
    $('.fadein').each(function() {
      // スクロールした距離
      let scroll = $(window).scrollTop();
      // fadeinクラスの要素までの距離
      let target = $(this).offset().top;
      // 画面の高さ
      let windowHeight = $(window).height();
      // fadeinクラスの要素が画面下にきてから200px通過した
      // したタイミングで要素を表示
      if (scroll > target - windowHeight + 200) {
        $(this).css('opacity','1');
        $(this).css('transform','translateY(0)');
      }
    });

  });

});

COFFEE - サイト試案

COFFEE - サイト試案

完成例

記述例
  • 「ヒーローイメージ」は、100vhで設定

index.html
<!DOCTYPE html>
<html lang="ja">
<head>
<meta charset="UTF-8">
<title>COFFEE</title>
<meta name="viewport" content="width=device-width, initial-scale=1">
<link rel="shortcut icon" href="img/favicon.ico">
<link rel="stylesheet" href="css/style.css">
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.7.1/jquery.min.js" defer></script>
<script src="js/script.js" defer></script>
</head>
<body>
<!-- header -->
<header class="header">
  <h1><img src="img/logo.svg" alt="COFFEE"></h1>
  <!-- nav -->
  <nav class="gnav">
    <ul>
      <li><a href="#menu">MENU</a></li>
      <li><a href="#about">ABOUT</a></li>
      <li><a href="#location">LOCATION</a></li>
    </ul>
  </nav>
</header>
<!-- /header -->

<!-- main -->
<main class="main">
  <!-- menu -->
  <section id="menu">
    <div class="menu_img fixed_bg">
      <h2>MENU</h2>
    </div><!-- /.fixed_bg -->
    <div class="menu_content container">
      <!-- menu_item -->
      <div class="menu_item">
        <h3 class="item_title">DRINK</h3>
        <dl>
          <dt>ブレンドコーヒー</dt>
          <dd>&yen;500</dd>
          <dt>アメリカンコーヒー</dt>
          <dd>&yen;500</dd>
          <dt>アメリカンコーヒー</dt>
          <dd>&yen;500</dd>
          <dt>カフェラテ</dt>
          <dd>&yen;500</dd>
          <dt>カフェモカ</dt>
          <dd>&yen;500</dd>
          <dt>ウインナーコーヒー</dt>
          <dd>&yen;500</dd>
          <dt>紅茶(ストレート、ミルク、レモン)</dt>
          <dd>&yen;500</dd>
          <dt>ミルクティー(ロイヤルミルクティー等)</dt>
          <dd>&yen;500</dd>
          <dt>ココア(ホット・アイス)</dt>
          <dd>&yen;500</dd>
          <dt>炭酸飲料(ジンジャエール、コーラ等)</dt>
          <dd>&yen;500</dd>
        </dl>
      </div>
      <!-- menu_item -->
      <div class="menu_item">
        <h3>FOOD</h3>
        <dl class="food">
          <dt>サンドイッチ</dt>
          <dd>&yen;500</dd>
          <dt>パンケーキ</dt>
          <dd>&yen;500</dd>
          <dt>トースト</dt>
          <dd>&yen;500</dd>
        </dl>
        <h3>OTHER</h3>
        <dl>
          <dt>ケーキ</dt>
          <dd>&yen;500</dd>
          <dt>プリン</dt>
          <dd>&yen;500</dd>
          <dt>アイスクリーム</dt>
          <dd>&yen;500</dd>
        </dl>
      </div>
    </div><!-- /.menu_content -->
  </section>
  <!-- about -->
  <section id="about">
    <div class="about_img fixed_bg">
      <h2>ABOUT</h2>
    </div><!-- /.fixed_bg -->
    <div class="about_content container">
      <!-- about_item -->
      <div class="about_item">
        <h3>COFFEE</h3>
        <ul>
          <li>池袋の繁華街から一本路地に入った静かな場所にあるコーヒーショップです。
          落ち着いた雰囲気と可愛らしい内装が特徴的で、女性のお客様に人気があります。
          <li>店内は白を基調とした明るい雰囲気で、所々にピンクを取り入れた可愛らしいデザインになっています。
            
          テーブルや椅子はアンティーク調で、壁には女性アーティストの絵画が飾られています。</li>
          <li>席は、ゆったりとくつろげるソファ席や、テラス席も用意されています。</li>
          <li>読書やミーティングなど、長時間の滞在にも対応しています。</li>
        </ul>
        <a class="btn" href="#"><span>Read More</span></a>
      </div><!-- /.about_item -->
    </div><!-- /.about_content -->
  </section>
  <!-- location -->
  <section id="location">
    <div class="location_img fixed_bg">
      <h2>LOCATION</h2>
    </div><!-- /.fixed_bg -->
    <div class="location_content container">
      <div class="location_item">
        <h3>OUR STORE</h3>
        <div class="item_map">
          <iframe src="https://www.google.com/maps/embed?pb=!1m18!1m12!1m3!1d3239.011647393562!2d139.71131521238382!3d35.72593207245827!2m3!1f0!2f0!3f0!3m2!1i1024!2i768!4f13.1!3m3!1m2!1s0x60188d69a1bfc623%3A0x6f829dc3047a4f7c!2z44CSMTcxLTAwMjIg5p2x5Lqs6YO96LGK5bO25Yy65Y2X5rGg6KKL77yS5LiB55uu77yR77yS4oiS77yZIO-8q--8q-ODk-ODqw!5e0!3m2!1sja!2sjp!4v1715881293087!5m2!1sja!2sjp" width="100%" height="400" style="border:0;" allowfullscreen="" loading="lazy" referrerpolicy="no-referrer-when-downgrade"></iframe>
        </div><!-- /.item_map -->
        <div class="item_info">
          <p>5-34-12, Minamiikebukuro, Toshima-ku, Tokyo 171-0022
          東京都豊島区南池袋5-34-12</p>
          <p>Open 7 days a Week
          9:00am to 10:00pm</p>
          <p>Tel : 03-5678-1234</p>
        </div><!-- /.item_info -->

      </div><!-- /.location_item -->
    </div><!-- /.location_content -->
  </section>
</main>
<!-- /main -->

<!-- footer -->
<footer class="footer">
  <p><small>&copy; COFFEE</small></p>
  <div id="toTop">to<br>TOP</div>
</footer>
<!-- /footer -->
</body>
</html>

style.css
@charset "UTF-8";

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

@media screen and (max-width: 767px) {
  html {
    font-size: 90%;
  }
}


/* ---------------------------------------
  body
--------------------------------------- */
body {
  background-color: #fff;
  color: #333;
  font-size: 1.0rem;
  font-family: "Noto Sans JP", sans-serif;
  line-height: 1.0;
}


/* ---------------------------------------
  layout(共通)
--------------------------------------- */
.container {
  width: min(94%, 1000px);
  margin: 0 auto;
  padding: 50px 16px;
  text-align: center;
}
h2 {
  width: 100%;
  color: #fff;
  text-align: center;
  font-size: 4.5rem;
  filter: drop-shadow(0 0 8px #303030);
  position: absolute;
  top: 38%;
}
h3 {
  display: inline-block;
  margin-bottom: 70px;
  padding-bottom: 10px;
  border-bottom: solid 6px #e03131;
  font-size: 2.5rem;
}
.fixed_bg {
  height: 300px;
  background-position: center;
  background-size: cover;
  background-attachment: fixed;
}

@media screen and (max-width: 767px) {
  .container {
    padding: 50px 0;
  }
  h1 img {
    width: 64%;
  }
  h2 {
    font-size: 2.8rem;
  }
  h3 {
    font-size: 1.4rem;
    margin-bottom: 20px;
    padding-bottom: 6px;
    border-bottom: solid 3px #e03131;
  }
  .fixed_bg {
    height: 120px;
  }
}


/* ---------------------------------------
  header
--------------------------------------- */
.header {
  width: 100%;
  min-height: 100vh;
  padding: 40px;
  background: url(../img/main.jpg) no-repeat top center / cover;
  position: relative;
}
  .header > h1 {
    padding: 0 16px;
    text-align: center;
    position: absolute;
    top: 45%;
    left: 0;
    right: 0;
    filter: drop-shadow(0 0 8px #303030);
  }

@media screen and (max-width: 767px) {
  .header {
    min-height: 100vh;
  }
}

/* ---------------------------------------
  footer
--------------------------------------- */
.footer {
  font-size: 0.5rem;
  padding: 10px 0 30px;
  text-align: center;
}


/* ---------------------------------------
  nav
--------------------------------------- */
.gnav ul {
  display: grid;
  grid-auto-flow: column;
  place-content: end;
  gap: 30px;
}
  .gnav li a {
    color: #fff;
    font-size: 1.5rem;
    font-weight: bold;
    transition: all  0.3s ease;
    filter: drop-shadow(0 0 6px #000);
  }
  .gnav li a:hover {
    color: #e03131;
  }

@media screen and (max-width: 767px) {
  .gnav ul {
    place-content: center;
  }
}


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

/* --------------- menu --------------- */
.menu_img {
  background-image: url(../img/menu.jpg);
  position: relative;
}
.menu_content {
  display: grid;
  grid-template-columns: 58% 37%;
  gap: 40px;
}
  .menu_item {
    padding-inline: 2%;
  }
  .menu_item:first-child {
    padding-right: 50px;
    border-right: solid 1px #000;
  }
  .menu_item dl {
    display: grid;
    grid-template-columns: 87% 13%;
  }
  .menu_item dt {
    text-align: left;
    border-bottom: dotted 1px #000;
    margin-bottom: 25px;
    padding-bottom: 10px;
  }
  .menu_item dd {
    text-align: right;
    padding-top: 8px;
  }
  .menu_item dl.food {
    margin-bottom: 55px;
  }

@media screen and (max-width: 767px) {
  .menu_img {
    height: 200px;
  }
  .menu_content {
    display: block;
    width: 100%;
    padding-inline: 6%;
  }
  .menu_item:first-child {
    margin-bottom: 20px;
    padding-right: 2%;
    border-right: 0;
  }
  .menu_item dl.food {
    margin-bottom: 20px;
  }
}

/* --------------- about --------------- */

.about_img {
  background-image: url(../img/about.jpg);
  position: relative;
}
#about ul {
  display: grid;
  grid-template-columns: repeat(2, 1fr);
  gap: 5%;
  margin-bottom: 40px;
  }
  #about li {
    line-height: 1.7;
    text-align: left;
    text-align: justify;
    white-space: pre-line;
  }
#about .btn {
  width: 160px;
  height: 50px;
  line-height: 3.0;
  display: inline-block;
  color: #000;
  padding: 0;
  cursor: pointer;
  transition: all 0.3s ease;
  position: relative;
}
  #about .btn span {
    position: relative;
    display: block;
    width: 100%;
    height: 100%;
  }
  #about .btn::before,
  #about .btn::after {
    position: absolute;
    content: "";
    right: 0;
    bottom: 0;
    background: #e03131;
    transition: all 0.3s ease;
  }
  #about .btn span::before,
  #about .btn span::after {
    position: absolute;
    content: "";
    left: 0;
    top: 0;
    background: #e03131;
    transition: all 0.3s ease;
  }
    #about .btn::before,
    #about .btn span::before {
      width: 2px;
      height: 50%;
    }
    #about .btn::after,
    #about .btn span::after {
      width: 20%;
      height: 2px;
    }
    #about .btn:hover::before,
    #about .btn span:hover::before {
      height: 100%;
    }
    #about .btn:hover::after,
    #about .btn span:hover::after {
      width: 100%;
    }

@media screen and (max-width: 767px) {
  .about_img {
    height: 200px;
  }
  #about ul {
    display: block;
    margin-bottom: 10px;
  }
}

/* --------------- location --------------- */
.location_img {
  background-image: url(../img/location.jpg);
  position: relative;
}
.item_map {
  filter: grayscale(1);
  margin-bottom: 0;
}
  .item_map iframe {
    width: 100%;
    height: 400px;
  }
  .item_info {
    text-align: left;
    line-height: 1.5;
    white-space: pre-line;
  }

@media screen and (max-width: 767px) {
  .location_img {
    height: 200px;
  }
}


/* ------------------------------------------
  toTop(ページトップへ戻る)
------------------------------------------ */
#toTop {
  position: fixed;
  right: 16px;
  bottom: 16px;
  display: none;
  width: 60px;
  height: 60px;
  padding-top: 14px;
  background-color: #e03131;
  border-radius: 50%;
  color: #fff;
  font-size: 0.9rem;
  font-weight: bold;
  line-height: 1.0;
  text-align: center;
  cursor: pointer;
}

script.js
$(function(){
  
  /* =====================================================
    toTop(ページトップへ)
  ===================================================== */
  let toTop = $('#toTop');
  toTop.on('click', function(){
  $('html,body').animate({ scrollTop: 0 }, 200);
  });
  $(window).on('scroll', function(){
    let scl = $(this).scrollTop();
      if(scl > 500){
            toTop.fadeIn();
      }else{
            toTop.fadeOut();
      }
  });
  
});

和食の魅力 - サイト試案

和食の魅力 - サイト試案

完成例
  • 「bxSlider」のスライダーは100vhにすると「スクロール」しての閲覧の機会が減るため、スライダーの下部にコンテンツ内容が見えるように設定
  • h2には「::after」を利用して飾りを追加
  • 長いスクロールになるため、最下部に「トップへ戻る」ボタンを設置

記述例
  • レシピ検索用の動画は、YouTubeにアップロードではなくvideoタグで挿入

index.html
<!DOCTYPE html>
<html lang="ja">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>和食の魅力</title>
<link rel="preconnect" href="https://fonts.googleapis.com">
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
<link href="https://fonts.googleapis.com/css2?family=Shippori+Mincho+B1&display=swap" rel="stylesheet">
<link href="https://unpkg.com/[email protected]/dist/aos.css" rel="stylesheet">
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/[email protected]/dist/jquery.bxslider.min.css">
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/lightbox2/2.11.5/css/lightbox.css">
<link rel="stylesheet" href="css/style.css">
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.7.1/jquery.min.js" defer></script>
<script src="https://cdn.jsdelivr.net/npm/[email protected]/dist/jquery.bxslider.min.js" defer></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/lightbox2/2.11.5/js/lightbox.min.js" defer></script>
<script src="https://unpkg.com/[email protected]/dist/aos.js" defer></script>
<script src="js/script.js" defer></script>
</head>
<body>
<!-- header -->
<header class="header">
  <div class="container">
    <h1><img src="img/logo.svg" alt="Bike Life"></h1>
    <nav class="gnav">
      <ul>
        <li><a href="#">御飯</a></li>
        <li><a href="#">麺</a></li>
        <li><a href="#">惣菜</a></li>
      </ul>
    </nav>
  </div><!-- /.container -->
</header>
<!-- /header -->

<!-- main -->
<main class="main">
  
  <div class="slider">
    <ul class="bxslider">
      <li><img src="img/01.jpg" alt=""></li>
      <li><img src="img/02.jpg" alt=""></li>
      <li><img src="img/03.jpg" alt=""></li>
      <li><img src="img/04.jpg" alt=""></li>
    </ul>
  </div><!-- /.slider -->

  <div class="container">
    <p class="lead" data-aos="fade-up">和食の魅力は、その美しさと健康的な要素にあります。季節感を大切にし、新鮮な食材を活かした料理は、見た目にも楽しませてくれます。例えば、色とりどりの野菜や魚を使った盛り付けは、目にも美味しい体験を提供します。さらに、和食は食事を通じて心を落ち着ける文化が根付いており、食べることが心の豊かさにつながります。</p>
    <!-- section.modal -->
    <section class="modal">
      <h2>色々な和食</h2>
      <ul class="modal_gallery">
        <li data-aos="fade-up"><a href="img/11.jpg" data-lightbox="example-set"><img src="img/11.jpg" alt=""></a></li>
        <li data-aos="fade-up"><a href="img/12.jpg" data-lightbox="example-set"><img src="img/12.jpg" alt=""></a></li>
        <li data-aos="fade-up"><a href="img/13.jpg" data-lightbox="example-set"><img src="img/13.jpg" alt=""></a></li>
        <li data-aos="fade-up"><a href="img/14.jpg" data-lightbox="example-set"><img src="img/14.jpg" alt=""></a></li>
        <li data-aos="fade-up"><a href="img/15.jpg" data-lightbox="example-set"><img src="img/15.jpg" alt=""/></a></li>
        <li data-aos="fade-up"><a href="img/16.jpg" data-lightbox="example-set"><img src="img/16.jpg" alt=""></a></li>
      </ul>
    </section>
    <!-- section.search -->
    <section class="search">
      <h2>レシピを探す</h2>
      <p><video src="img/recipe.mp4" autoplay loop muted playsinline poster="video-poster.webp"></video></p>
    </section>
    <!-- section.charm -->
    <section class="charm">
    <h2>和食の魅力</h2>
    <ul id="accordion_menu">
      <li>
        <h3 class="label">美しさと季節感</h3>
        <ul class="detail">
          <li>見た目の美しさを重視</li>
          <li>色彩や形状、器の選び方が重要</li>
          <li>四季折々の食材を使用し、季節の移ろいを表現</li>
        </ul>
      </li>
      <li>
        <h3 class="label">健康志向</h3>
        <ul class="detail">
          <li>栄養バランスが良い食事スタイル</li>
          <li>主食(ご飯)、主菜(魚や肉)、副菜(野菜)、味噌汁や漬物の組み合わせ</li>
          <li>発酵食品(味噌、醤油、納豆など)の多用</li>
          <li>腸内環境を整える効果が期待できる</li>
        </ul>
      </li>
      <li>
        <h3 class="label">伝統と文化</h3>
        <ul class="detail">
          <li>日本の伝統や文化が反映された食文化</li>
          <li>食事の作法や食材の選び方、調理法に歴史と地域の特色</li>
          <li>「おもてなし」の心を大切にし、人とのつながりを深める役割</li>
          <li>特別な日には祝い膳を用意し、家族や友人との絆を深める</li>
        </ul>
      </li>
    </ul>
    </section>
  </div><!-- /.container -->

  <div class="carousel_list"><img src="img/11.jpg" alt=""><img src="img/12.jpg" alt=""><img src="img/13.jpg" alt=""><img src="img/14.jpg" alt=""><img src="img/15.jpg" alt=""><img src="img/16.jpg" alt=""></div>

</main>
<!-- /main -->

<!-- footer -->
<footer class="footer">
  <p><small>&copy; 和食の魅力</small></p>
  <div id="toTop">to<br>TOP</div>
</footer>
<!-- /footer -->
</body>
</html>

style.css
@charset "UTF-8";

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


/* ------------------------------------------
  body
------------------------------------------ */
body {
  background-color: #fff;
  font-size: 1.0rem;
  color: #333;
  font-family: serif;
  font-family: "Shippori Mincho B1", serif;
  line-height: 1.0;
}


/* ------------------------------------------
  layout
------------------------------------------ */
.container {
  width: min(90%, 960px);
  margin: 0 auto;
}
h2 {
  width: fit-content;
  margin: auto;
  margin-bottom: 24px;
  letter-spacing: -0.12rem;
  text-align: center;
  position: relative;
}
h2::after {
  content: '';
  position: absolute;
  top: 0;
  left: -5px;
  width: 140px;
  height: 100px;
  background-image: url(../img/brush.png);
  background-repeat: no-repeat;
  background-size: contain;
  z-index: -100;
}
.lead {
  margin-bottom: 60px;
  padding: 0 6rem;
  line-height: 1.6;
  text-align: justify;
}
@media screen and (max-width: 767px) {
  .lead {
    padding: 0 1rem;
    font-size: 0.9rem;
  }
}


/* ------------------------------------------
  header
------------------------------------------ */
.header > .container {
  display: flex;
  align-items: end;
  width: min(92%, 960px);
  margin: 0 auto;
  padding: 16px 0;
}
h1 {
  width: 180px;
  margin-right: auto;
}

/* ----- nav ----- */
.gnav > ul {
  display: flex;
  justify-content: center;
  gap: 30px;
  padding: 5px 0;
  font-size: 1.125rem;
  font-weight: bold;
}


/* ------------------------------------------
  footer
------------------------------------------ */
.footer {
  padding: 10px 0;
  background-color: #000;
  color: #fff;
  text-align: center;
}


/* ------------------------------------------
  slider
------------------------------------------ */
.bx-wrapper {
  box-shadow: none;
  border: none;
  background: #fff;
  height: 600px;
}
  .bx-wrapper .bx-prev {
    background: none;
  }
  .bx-wrapper .bx-next {
    background: none;
  }
@media screen and (max-width: 767px) {
  .bx-wrapper {
    height: 26vh;
  }
}


/* ------------------------------------------
  lightbox
------------------------------------------ */
.modal {
  margin-bottom: 40px;
}
.modal_gallery {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(240px, 1fr));
  gap: 20px;
  margin-bottom: 60px;
}
@media screen and (max-width: 767px) {
  .modal_gallery {
    grid-template-columns: repeat(2, 1fr);
  }
}


/* ------------------------------------------
  animation
------------------------------------------ */
p.lead {
  transition-delay: .4s;
}
.modal_gallery li:nth-of-type(2){
  transition-delay: .4s;
}
.modal_gallery li:nth-of-type(3){
  transition-delay: .6s;
}
.modal_gallery li:nth-of-type(4){
  transition-delay: .4s;
}
.modal_gallery li:nth-of-type(5){
  transition-delay: .6s;
}
.modal_gallery li:nth-of-type(6){
  transition-delay: .8s;
}


/* ------------------------------------------
  search
------------------------------------------ */
.search {
  margin-bottom: 60px;
}
.search > p {
  text-align: center;
}
  .search video {
    width: min(98%, 640px);
    margin: auto;
    border: 12px solid #fff;
    box-shadow: 0 0 6px #aaa;
  }


/* ------------------------------------------
  charm
------------------------------------------ */
#accordion_menu {
  margin-bottom: 80px;
}
#accordion_menu {
  border-bottom: solid 1px #999;
}
  #accordion_menu .label {
    padding: 16px 20px;
    border-top: solid 1px #999;
    font-size: 1.125rem;
    font-weight: 600;
    transition: .5s;
    position: relative;
    cursor:pointer;
  }

/* ----------- detail -----------  */
.detail {
  list-style: disc;
  padding: 12px 0 12px 3.5rem;
  border-top: solid 1px #999;
}
  .detail li {
    padding: 6px 0;
    line-height: 1.4;
  }
  #accordion_menu .detail li:last-child {
    border-bottom: none;
  }
  #accordion_menu .label:hover {
    background-color: #d0e6c2;
  }

@media screen and (max-width: 767px) {
  .detail {
    list-style: disc;
    padding: 12px 0 12px 2.0rem;
    border-top: solid 1px #999;
    font-size: 0.875rem;
  }
}

/* ----------- h3 animation -----------  */
#accordion_menu .label::before,
#accordion_menu .label::after {
  content: '';
  width: 20px;
  height: 1px;
  background: #000;
  position: absolute;
  top: 50%;
  right: 20px;
  transform: translateY(-50%);
}
#accordion_menu .label::after {
  transform: translateY(-50%) rotate(90deg);
  transition: .5s;
}
  #accordion_menu .label.open {
    background-color: #d0e6c2;
  }
    #accordion_menu .label.open::before {
      opacity: 0;
    }
    #accordion_menu .label.open::after {
      transform: rotate(180deg);
    }


/* ------------------------------------------
  carousel
------------------------------------------ */
.main > .bx-wrapper {
  margin: 0;
  height: fit-content;
}


/* ------------------------------------------
  toTop(ページトップへ戻る)
------------------------------------------ */
#toTop {
  position: fixed;
  right: 16px;
  bottom: 16px;
  display: none;
  width: 60px;
  height: 60px;
  padding-top: 14px;
  background-color: #666;
  border-radius: 50%;
  color: #fff;
  font-size: 0.9rem;
  font-weight: bold;
  line-height: 1.0;
  text-align: center;
  cursor: pointer;
}

script.js
$(function(){

  /* =====================================================
    bxSlider
  ===================================================== */
  const slider = $('.bxslider').bxSlider({
    mode: 'fade',
    auto: true,
    speed: 2000,
    pause: 6000,
    pager: false
  });


  /* =====================================================
    AOS
  ===================================================== */
  AOS.init({
    duration: 1000
  });

  slider.on('load', function(){
    AOS.refresh();
  });


  /* =====================================================
    アコーディオンパネル
  ===================================================== */
    $('.detail').hide();
    $('#accordion_menu .label').on('click', function() {
      let $detail = $(this).next();
      $('.detail').not($detail).slideUp();
      $('#accordion_menu .label').not(this).removeClass('open');
      $detail.slideToggle();
      $(this).toggleClass('open');
    });


  /* =====================================================
    carousel
  ===================================================== */
    $('.carousel_list').bxSlider({
      ticker: true,
      shrinkItems: false,
      speed: 30000,
      minSlides: 4,
      maxSlides: 6,
      slideWidth: 240,
    });


  /* =====================================================
    toTop(ページトップへ)
  ===================================================== */
  let toTop = $('#toTop');
  toTop.on('click', function(){
  $('html,body').animate({ scrollTop: 0 }, 200);
  });
  $(window).on('scroll', function(){
    let scl = $(this).scrollTop();
      if(scl > 500){
            toTop.fadeIn();
      }else{
            toTop.fadeOut();
      }
  });
  
});

AOS.jsとbxSlider

AOS.jsとbxSlider

注意点
  • AOS.jsとbxSliderは、バッティングして「AOS」を指定した部分が表示されなくなります
  • 以下のような方法で解決できます

bxSliderを読み込んだ後に、AOSを初期化
$(function() {
  // bxSliderの初期化
  $('.bxslider').bxSlider({
  });

  // AOSの初期化
  AOS.init();
});
完成例

index.html
  • AOS、bxSlider、Lightboxは、CDNで読み込み(ダウンロードしたファイルの読み込みでも可)
<!DOCTYPE html>
<html lang="ja">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>jQueryを使ったトップページ</title>
<link href="https://unpkg.com/[email protected]/dist/aos.css" rel="stylesheet">
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/[email protected]/dist/jquery.bxslider.min.css">
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/lightbox2/2.11.5/css/lightbox.css">
<link rel="stylesheet" href="css/style.css">
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.7.1/jquery.min.js" defer></script>
<script src="https://cdn.jsdelivr.net/npm/[email protected]/dist/jquery.bxslider.min.js" defer></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/lightbox2/2.11.5/js/lightbox.min.js" defer></script>
<script src="https://unpkg.com/[email protected]/dist/aos.js" defer></script>
<script src="js/script.js" defer></script>
</head>
<body>
<!-- header -->
<header class="header">
  <div class="container">
    <h1><img src="img/logo.svg" alt="Bike Life"></h1>
    <nav class="gnav">
      <ul>
        <li><a href="#">bxSlider</a></li>
        <li><a href="#">Lightbox</a></li>
        <li><a href="#">AOS</a></li>
      </ul>
    </nav>
  </div><!-- /.container -->
</header>
<!-- /header -->

<!-- main -->
<main class="main">
  
  <div class="slider">
    <ul class="bxslider">
      <li><img src="img/01.jpg" alt=""></li>
      <li><img src="img/02.jpg" alt=""></li>
      <li><img src="img/03.jpg" alt=""></li>
      <li><img src="img/04.jpg" alt=""></li>
    </ul>
  </div><!-- /.slider -->

  <div class="container">
    <p class="lead" data-aos="fade-up">バイクライフを楽しんでいます。週末には愛車を駆り、自然の中をツーリングしています。<br>風を感じながら走る瞬間が何よりのリフレッシュ。新しい道を開拓したり、仲間とキャンプを楽しんだり、バイクを通じて得た経験は貴重です。安全運転を心がけ、バイクの魅力を多くの人と共有したいと思っています。これからも、素敵な旅を続けていきます!</p>
    <section class="modal">
      <h2>Gallery</h2>
      <ul class="modal_gallery">
        <li data-aos="fade-up"><a href="img/11.jpg" data-lightbox="example-set"><img src="img/11.jpg" alt=""></a></li>
        <li data-aos="fade-up"><a href="img/12.jpg" data-lightbox="example-set"><img src="img/12.jpg" alt=""></a></li>
        <li data-aos="fade-up"><a href="img/13.jpg" data-lightbox="example-set"><img src="img/13.jpg" alt=""></a></li>
        <li data-aos="fade-up"><a href="img/14.jpg" data-lightbox="example-set"><img src="img/14.jpg" alt=""></a></li>
        <li data-aos="fade-up"><a href="img/15.jpg" data-lightbox="example-set"><img src="img/15.jpg" alt=""/></a></li>
        <li data-aos="fade-up"><a href="img/16.jpg" data-lightbox="example-set"><img src="img/16.jpg" alt=""></a></li>
      </ul>
    </section>
  </div><!-- /.container -->

</main>
<!-- /main -->

<!-- footer -->
<footer class="footer">
  <p><small>&copy; Bike Life</small></p>
</footer>
<!-- /footer -->
</body>
</html>

style.css
  • リード文も2番めの画像の表示タイミングに合わせています
@charset "UTF-8";

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

/* ------------------------------------------
  body
------------------------------------------ */
body {
  background-color: #fff;
  font-size: 1.0rem;
  color: #333;
  font-family: Arial, Helvetica, sans-serif;
  line-height: 1.0;
}

/* ------------------------------------------
  layout
------------------------------------------ */
.container {
  width: min(90%, 960px);
  margin: 0 auto;
}
h2 {
  margin-bottom: 16px;
}
.lead {
  margin-bottom: 60px;
  padding: 0 6rem;
  line-height: 1.6;
  text-align: justify;
}
@media screen and (max-width: 767px) {
  .lead {
    padding: 0 1rem;
    font-size: 0.9rem;
  }
}

/* --------------------------------
  header
-------------------------------- */
.header > .container {
  display: flex;
  align-items: center;
  width: min(92%, 960px);
  margin: 0 auto;
  padding: 16px 0;
}
h1 {
  width: 120px;
  margin-right: auto;
}

/* ----- nav ----- */
.gnav > ul {
  display: flex;
  justify-content: center;
  gap: 30px;
}

/* --------------------------------
  footer
-------------------------------- */
.footer {
  padding: 10px 0;
  background-color: #000;
  color: #fff;
  text-align: center;
}


/* --------------------------------
  slider
-------------------------------- */
.bx-wrapper {
  box-shadow: none;
  border: none;
  background: #fff;
  height: 56vh;
}
  .bx-wrapper .bx-prev {
    background: none;
  }
  .bx-wrapper .bx-next {
    background: none;
  }
@media screen and (max-width: 767px) {
  .bx-wrapper {
    height: 26vh;
  }
}

/* --------------------------------
  lightbox
-------------------------------- */
.modal {
  margin-bottom: 40px;
}
.modal_gallery {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(240px, 1fr));
  gap: 20px;
}
@media screen and (max-width: 767px) {
  .modal_gallery {
    grid-template-columns: repeat(2, 1fr);
  }
}

/* --------------------------------------------
  animation
-------------------------------------------- */
p.lead {
  transition-delay: .4s;
}
.modal_gallery li:nth-of-type(2){
  transition-delay: .4s;
}
.modal_gallery li:nth-of-type(3){
  transition-delay: .6s;
}
.modal_gallery li:nth-of-type(4){
  transition-delay: .4s;
}
.modal_gallery li:nth-of-type(5){
  transition-delay: .6s;
}
.modal_gallery li:nth-of-type(6){
  transition-delay: .8s;
}

script.js
$(function() {
  // bxSlider
  const slider = $('.bxslider').bxSlider({
    mode: 'fade',
    auto: true,
    speed: 2000,
    pause: 6000,
    pager: false
  });

  // AOSの初期化
  AOS.init({
    duration: 1000
  });

  slider.on('load', function(){
    AOS.refresh();
  });
});

AOS.js - 実践

AOS.js - 実践

michalsnik.github.io

実装
  • 「Download」または「CDN」

記述例
  • CDNで記述
  • 「data-aos="fade-up"」で、下からふわっと浮き上がってくる状態にする

index.html
<!DOCTYPE html>
<html lang="ja">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
<link href="https://unpkg.com/[email protected]/dist/aos.css" rel="stylesheet">
<link rel="stylesheet" href="css/style.css">
</head>
<body>
<header class="header">
  <p class="space"></p>
</header>
<main class="main">
  <div class="container">
    <ul class="grid">
      <li data-aos="fade-up"><img src="img/01.jpg" alt=""></li>
      <li data-aos="fade-up"><img src="img/02.jpg" alt=""></li>
      <li data-aos="fade-up"><img src="img/03.jpg" alt=""></li>
    </ul>
  </div><!-- /.container -->
  <p class="space"></p>
</main>
<script src="https://unpkg.com/[email protected]/dist/aos.js"></script>
<script>
AOS.init({
  duration: 1000
});
</script>
</body>
</html>

style.css
  • スクロールするスペースを確保する
  • アニメーションの遅延は「transition-delay: .3s;」で適宜設定
@charset "UTF-8";

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

/* --------------------------------------------
  layout
-------------------------------------------- */
p.space {
  margin-bottom: 1000px;
}
.container {
  width: min(92%, 1100px);
  margin: auto;
}
.grid {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(300px, 1fr));
  gap: 30px;
}

/* --------------------------------------------
  animation
-------------------------------------------- */
.grid li:nth-of-type(2){
  transition-delay: .3s;
}
.grid li:nth-of-type(3){
  transition-delay: .3s;
}