スクロールすると出るボタン。スクロール位置で要素を表示させる。

ファーストビューでは非表示。
一定量をスクロールしたら、ボタンを出したい。

PCのときだけ、SNSのボタンを画面の左端に出してみました。

html

該当の要素に「is_flow」というクラスを付与。

<!-- 常に横にいるボタン -->
<div class="flow-nav__wrapper is_flow">
 <div class="flow-navi">
  <ul>
   <li>ボタン1</li>
   <li>ボタン2</li>
   <li>ボタン3</li>
  </ul>
 </div>
</div>

css

.flow-navi__wrapper {
  display:none;
}
.flow-navi {
  position: fixed;
  top: 260px;
  z-index: 3;
}
@media(max-width:863px) {
 .flow-navi__wrapper {
   position: static;
 }
 .flow-navi {
   display:none;
 }
}

今回は、PCのときだけ表示させたかったので、こんな感じにしてみました。
初期表示では、一番外側のクラス「flow-navi__wrapper」をdisplay:noneに。
画面幅が863px以下になったら「flow-navi」をdisplay:noneにしてボタンを隠します。

jQuery

$(window).on('load scroll', function(){
  if ($(window).scrollTop() > 200) {
    $('.is_flow').fadeIn(400);
   } else {
    $('.is_flow').fadeOut(400);
   }
});

画面のはじまりから200の位置までスクロールしたときに「is_flow」を付与した要素を表示。
fadeIn()とfadeOut()で、ボタンをゆっくり表示/非表示させます。(400)はスクロールする時の速度。

今回設置したのは画面の左隅にひっそりと佇むボタンですが、ページの最上部にスクロール移動する「PAGE TOP」のような固定配置したいボタンや、スマホの時にだけ出現する最下部のメニューだとか、左右に固定しておきたいカラムなどなど。いろいろなところで使えそうです。

SHARE

  • *
  • *
  • *