【jQuery】スクロール途中から追尾(fixed)、指定位置(class)で消える
- 2019.11.6
- jQuery

jQueryを使って、スクロールの途中から追尾(fixed)、そして、指定の位置(class)で消える、というのを実装してみたいと思います。

なんだか複雑だー

理解できれば意外と簡単ですー
1. 実装サンプル
See the Pen
【jQuery】スクロール途中から追尾、指定位置(class)で消える、実装サンプル by 125naroom (@125naroom)
on CodePen.
HTML
<div class="sikaku_box">しかく</div> <div class="oneArea"> <div class="one_title">まる</div> </div> <div class="end_box">しかくが消える</div>
追尾(fixed)要素を『sikaku_box』というクラスを付けて実装してみました。
▽流れ
- 『sikaku_box』を通過すると追尾(fixed)
- 『end_box』までスクロールすると『sikaku_box』が消える
CSS
▽ちょっと動きがあったほうが楽しいので以下のようにしっかりとCSSを書いてみました。
.sikaku_box { display: flex; justify-content: center; align-items: center; width: 100px; height: 100px; background: #fff689; font-size: 16px; font-weight: bold; top: 0; transition-duration: .6s; } .sikaku_box.fixed { position: fixed; top: 50px; left: auto; z-index: +1; } .sikaku_box.fixed.none { opacity: 0; z-index: -1; } .oneArea { display: flex; justify-content: center; align-items: center; height: 1000px; background: #f2f2f2; } .oneArea .one_title { font-size: 30px; font-weight: bold; } .end_box { display: flex; justify-content: center; align-items: center; height: 300px; padding: 20px; background: #000000; color: #fff; font-size: 30px; font-weight: bold; } @media screen and (max-width: 1024px) { .oneArea .one_title { font-size: 18px; } .end_box { font-size: 18px; } }
▽必要なものだけ抜き出したCSSは以下になります。
.sikaku_box { } .sikaku_box.fixed { position: fixed; top: 50px; left: auto; z-index: +1; } .sikaku_box.fixed.none { opacity: 0; z-index: -1; }
JavaScript
▽jquery-1.11.3.min.js使用
$(function(){ var scrollStart = $('.sikaku_box').offset().top; //ページ上部からの距離を取得 var scrollEnd = $('.end_box').offset().top; //ページ上部からの距離を取得 var distance = 0; $(document).scroll(function(){ distance = $(this).scrollTop(); //スクロールした距離を取得 if (scrollStart <= distance) { //スクロール距離が『.sikaku_box』の位置を超えたら $('.sikaku_box').addClass('fixed'); //class『fixed』を追加 } else if (scrollStart >= distance) { //スクロールがページ上部まで戻ったら $('.sikaku_box').removeClass('fixed'); //class『fixed』を削除 } if (scrollEnd <= distance) { //スクロール距離が『.end_box』の位置を超えたら $('.sikaku_box').addClass('none'); //class『none』を追加 } else{ $('.sikaku_box').removeClass('none'); //『.end_box』より上部に戻ったらclass『none』を削除 } }); });
△
上記の15行目から19行目は、下記のように『fadeOut』、『fadeIn』でもオッケー。
※ちょっと動きを付けたい場合は上記のほうがおすすめです。
▽
if (scrollEnd <= distance) { //スクロール距離が『.end_box』の位置を超えたら $('.sikaku_box').fadeOut(); //フェードアウト } else{ $('.sikaku_box').fadeIn(); //『.end_box』より上部に戻ったらフェードイン } });
メモ
jQueryのことで何かわからないことがあればjQueryの日本語リファレンスサイトがあるので一度チェックしてみるといろいろ解決できたりしますよ。
さいごに

ふむふむ。もぐもぐ。

Googleさんの自動広告をつけてる場合は消える位置がずれると思われますのでその際は調整をー。
関連記事
おすすめ
かんれん
- web / 2018.10.24
- 【CSS】ベンダープレフィックス 必要なもの不要なもの
- web / 2018.9.14
- 【CSS】Flexbox 上下中央揃え
Googleさんのおすすめ
人気記事
- web / 2019.4.16
- 【CSS】ハンバーガーメニュー実装サンプル集(クリック時のエフェクトも集めました)
- web / 2022.2.1
- 【jQuery】アコーディオン実装サンプル10選
- web / 2019.9.27
- 【jQuery】スライダープラグイン「slick」実装サンプル集
Googleさんのおすすめ
デザインの記事
- 2023.10.02New
- Aubloom オーブルーム – RAWSILK SHAMPOO ローシルクシャンプー
- 国内、海外のウェブデザイン、パソコン・タブレット・スマートフォンでも見やすいレスポンシブ対応の「あ、いいな」と思うウェブデザインを集めています。
- デザインのこと – Web design gallery
- 2022.06.15
- ちょっと思い出しただけ
- (C)2022『ちょっと思い出しただけ』製作委員会 もくじ 『ちょっと思い出しただけ』 あ…
- いつかのこと – 無印良品の家と暮らす
- 2023.07.31
- 【Google Chrome】ショートカットキーまとめ(Windows or Mac)
- クロームでF5(更新)ってどうするんでしたっけ? あー、Macですか?わかるわかる、な…
- 125naroom / デザインするところ(会社)です。