LPコーディングで使用した「jQuery」

はじめに

先日、クラウドワークスの「XDデータからのLPコーディング案件」に応募したところ、ありがたいことに、ご依頼いただけました。

納品完了したので、今回使用した技術について書いていきます。長くなりそうなので、今回は、jQueryに絞って書いていきます。

ページスクロール

ナビゲーションをクリックしたときに、特定のセクションに飛ぶようにしました。

$(function () {
  $('a[href*="#"]').click(function () {
    var elmHash = $(this).attr('href');
    var pos = $(elmHash).offset().top - 70;
    $('body,html').animate({ scrollTop: pos }, 500);
    return false;
  });
})

「aタグをクリックしたら、変数elmHashにhref属性を代入して、変数posにemlhashのY座標から70px上の値を代入し、全体を500ミリ秒でposの分だけスクロールさせる」という意味です。

70pxはヘッダーを考慮した分です。

例えば、以下のリンクをクリックすると、

<nav>
 <ul>
  <li><a href="#about">〇〇について</a></li>
  //省略
 </ul>
</nav>

aboutというidを持ったセクション付近にゆっくりとスクロールします。

<section class="about" id="about">
  //省略
</section>

ページスクロールに関しては、こちらのページで分かりやすく解説されています。

画像スライダー

ライブラリのslickを使用しました。

slickの基本的な使い方については、省略します。(こちらのページで分かりやすく解説されていました)

ドットを表示させ、矢印は非表示、自動再生ONで設定しました。自動再生のスピードと切り替わるタイミングも指定しました。

  $(".slider").slick({
    dots: true,
    arrows: false,
    autoplay: true,
    autoplaySpeed: 3000,
    speed: 800,
  });

以下のsliderに対して、jQueryの記述を書きました。

<ul class="slider">
 <li>
  <picture>
   <source type="image/webp" srcset="img/main-visual/mv.webp" />
   <img src="img/main-visual/mv.png" alt="メインビジュアル" />
  </picture>
 </li>

 // 以下省略(li要素がスライドの数だけ繰り返されます)
</ul>

今回、画像形式にwebp(ウェッピー)を使用したため、picture要素で囲ってあります。webpの使用方法については、こちらのページが参考になります。

スマホハンバーガーメニュー

ハンバーガーメニューは、スマホの画面幅に収まりきらなくなったナビゲーションメニューを表示させるときに便利です。

以下のjQueryを記述しました。

$(function () {
    $(".openbtn").click(function () {
    $(this).toggleClass('active');
        $(".sp-nav").toggleClass('panelactive');
    });

    $(".sp-nav a").click(function () {
        $(".openbtn").removeClass('active');
        $(".sp-nav").removeClass('panelactive');
    });
})

ハンバーガーメニューのボタンには、openbtnというクラスを付けました。

<div class="openbtn"><span></span><span></span><span></span></div>

ナビゲーション部分には、sp-navというクラスを付けました。

<nav class="sp-nav">
 <ul>
  <a class="sp-nav__top" href="index.html">
   <li>
    トップページ
   </li>
  </a>

  //省略
  </ul>

 //省略
</nav>

ボタンをクリックすると、activeというクラスが付きます。すると、ボタンの見た目がハンバーガーだったのが、ばつ印に変化します。

以下のCSSでこの見た目を実現しました。(省略部分あり。こちらのページが参考になります。)

.openbtn {
  position: fixed;
  top: 27px;
  right: 5px;
}

.openbtn span {
    &:nth-of-type(1) {
      top: 20px;
    }

    &:nth-of-type(2) {
      top: 31px;
    }

    &:nth-of-type(3) {
      top: 42px;
    }

}

.openbtn.active span {
    &:nth-of-type(1) {
      top: 24px;
      transform: translateY(6px) rotate(-45deg);
    }

    &:nth-of-type(2) {
      opacity: 0;
    }

    &:nth-of-type(3) {
      top: 36px;
      transform: translateY(-6px) rotate(45deg);
    }
}

ナビゲーション部分は、もともと画面上部の外側に隠れています。panelactiveというクラスが付くと、topの位置が下に下がることで、メニュー部分が表示されます。

以下のCSSで実現できます(省略部分あり)

.sp-nav {
  position: fixed;
  top: -120%;
  transition: all 0.6s;
}

sp-nav.panelactive {
  top: 0;
}

次回

次回は、sassについて書いていきたいと思います。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です