あなたのキモチ つなげるカタチ

【jQuery】スクロール時に背景画像をスクロールの逆方向へ動かすパララックスアニメーションの実装方法(background-position-yプロパティを使用)

コーディングテクニックの実装内容

今回はWeb制作におけるパララックス・スクロールエフェクトに関する内容です。スクロール時に背景画像をスクロールの逆方向へ時間差で動かすパララックスアニメーションを実装する方法(background-position-yプロパティをJSで制御) を紹介します。

コーディングテクニックの使いどころ

jQueryのプラグインを使用せず、手軽にパララックスを実装するのに便利です。慣性スクロールで滑らかなスクロールを実現できます。

実装難易度・必要なスキル

コーディングとjQueryの基礎的な知識があれば実務未経験のコーダー、マークアップエンジニア、Webデザイナー、エンジニア、副業の初心者など誰でも実装可能です。

実装所要時間は10分程度

CSS,JavaScriptの記述内容

body {
  height: 1000px;
}
.block {
  position: relative;
  width: 100%;
  height: 1500px;
}

.bg {
  position: absolute;
  left: 0;
  top: 0;
  width: 100%;
  height: 100%;
  z-index: 0;
  background: url(/img/h.jpg) no-repeat center center;
  background-size: cover;
}
@media screen and (max-width:640px){
  .block {
    height: 500px;
  }
  .bg {
    background-size: contain;
  }
}
var scrollPos = $(window).scrollTop();
var scrollPrevPos = 0;
var bgPos = 0;

$(window).on("scroll", function() {
  scrollPos = $(window).scrollTop();
  var sectionLablesPos = $(".block").offset().top;
  var sectionLabelsHeight = $(".block").innerHeight();
  var delta = scrollPos - scrollPrevPos;
  if (scrollPos + window.innerHeight > sectionLablesPos && scrollPos < sectionLablesPos + sectionLabelsHeight) {
    console.log(delta);
    if (delta > 0) {
      bgPos = bgPos - 7;
    } else {
      bgPos = bgPos + 7;
    }
  }
    console.log(bgPos);
    $(".bg").stop(true, false).animate({
      "background-position-y": bgPos + "px",
    },1000);
  scrollPrevPos = scrollPos;
});

実装のポイント

現在制作中

この記事を書いた人(著者情報)

片岡 学

カタチップ編集長。昭和生まれの30代でWeb業界歴は15年。プログラマー出身のWebデザイナー。現在はカタチップを運用しつつ事業会社でWEBメディアサイトのディレクター兼コーダーを担当。最近はSNSの運用にも業務範囲を拡大中です。

著者画像

スポンサーリンク