1.ちょっとスクロールしたら「トップへ戻るボタン」を表示





demo


html
 
  <p id="page-top"><a href="#wrap">PAGE TOP</a></p>
  

fixed

css
 
  #page-top {
   position: fixed;
   bottom: 20px;
   right: 20px;
   font-size: 77%;
  }
  #page-top a {
   background: #666;
   text-decoration: none;
   color: #fff;
   width: 100px;
   padding: 30px 0;
   text-align: center;
   display: block;
   border-radius: 5px;
  }
  #page-top a:hover {
   text-decoration: none;
   background: #999;
  }
  

100

javascript
 
  $(function() {
   var topBtn = $('#page-top'); 
   topBtn.hide();
   //スクロールが100に達したらボタン表示
   $(window).scroll(function () {
    if ($(this).scrollTop() > 100) {
     topBtn.fadeIn();
    } else {
     topBtn.fadeOut();
    }
   });
   //スクロールしてトップ
      topBtn.click(function () {
    $('body,html').animate({
     scrollTop: 0
    }, 500);
    return false;
      });
  });
  





demo
javascript
 
  $(function() {
   var showFlag = false;
   var topBtn = $('#page-top'); 
   topBtn.css('bottom', '-100px');
   var showFlag = false;
   //スクロールが100に達したらボタン表示
   $(window).scroll(function () {
    if ($(this).scrollTop() > 100) {
     if (showFlag == false) {
      showFlag = true;
      topBtn.stop().animate({'bottom' : '20px'}, 200); 
     }
    } else {
     if (showFlag) {
      showFlag = false;
      topBtn.stop().animate({'bottom' : '-100px'}, 200); 
     }
    }
   });
   //スクロールしてトップ
      topBtn.click(function () {
    $('body,html').animate({
     scrollTop: 0
    }, 500);
    return false;
      });
  });
  

41015
 

2.スクロールするとヘッダーに固定表示(アニメーションバージョン)

jQueryでスクロールすると上部に固定されるナビゲーションというのを作ったとき、ドロップダウンしたら実用的かもというご意見をいただきましたのでやってみました。

demo

html

	<div class="nav">
		<ul class="clearfix">
			<li><a href="#">HOME</a></li>
			<li><a href="#">ABOUT</a></li>
			<li><a href="#">NEWS</a></li>
			<li><a href="#">LINK</a></li>
		</ul>
	<!-- /#nav --></div>
	

css

	.nav {
		padding: 0 20px;
		margin: 0 auto 60px;
		width: 760px;
	}
	.fixed {
		position: fixed;
		top: 0;
		left: 0;
		width: 100%;
	}
	

javascript

	$(function() {
		var nav = $('.nav');
		//表示位置
		var navTop = nav.offset().top+500;
		//ナビゲーションの高さ(シャドウの分だけ足してます)
		var navHeight = nav.height()+10;
		var showFlag = false;
		nav.css('top', -navHeight+'px');
		//ナビゲーションの位置まできたら表示
		$(window).scroll(function () {
			var winTop = $(this).scrollTop();
			if (winTop >= navTop) {
				if (showFlag == false) {
					showFlag = true;
					nav
						.addClass('fixed')
						.stop().animate({'top' : '0px'}, 200);
				}
			} else if (winTop <= navTop) {
				if (showFlag) {
					showFlag = false;
					nav.stop().animate({'top' : -navHeight+'px'}, 200, function(){
						nav.removeClass('fixed');
					});
				}
			}
		});
	});
	

4行目の表示位置はアニメーションするのでちょっと余裕をもたせて下の方で表示するようにしています。
ムダなところがけっこうあるかもしれません。

3.下部までスクロールすると横からスライドして表示




 CTA  

demo
html
 
  <div id="footer">
   <div id="slide">
   <div id="slide-in">
    <h3>Footer</h3>
    <p>フッターコンテンツ</p>
    <p id="close"><a>閉じる</a></p>
   </div>
   </div>
  </div>
  

css
 
  #footer {
   overflow: hidden;
   position: fixed;
   width: 100%;
   bottom: 0;
  }
  #slide {
   background: #555;
   color: #fff;
   width: 100%;
  }
  #slide-in {
   padding: 20px;
  }
  #footer a {
   color: #fff;
   text-decoration: none;
   cursor: pointer;
  }
  

javascript
 
$(function() {
 var winWidth = $('body').outerWidth(true);
 var footer = $('#footer');
 var slide = $('#slide');
 //画面下位置を取得
 var bottomPos = $(document).height() - $(window).height() -500;
 var showFlug = false;

    // ウィンドウより小さかったら開く
    panelOpen();
 //slideを画面右外へ配置
 $('#slide').css('margin-left', winWidth+'px');
 $(window).scroll(function () {
        panelOpen();
 });
 //閉じるボタン
 $('#close').click(function(){
  footer.hide();
 });
 //ウィンドウリサイズしたらwidth変更
 $(window).resize(function(){
  winWidth = $('body').outerWidth(true);
  bottomPos = $(document).height() - $(window).height() - 500;
 });

    function panelOpen() {
        if ($(this).scrollTop() >= bottomPos) {
            if (showFlug == false) {
                showFlug = true;
                slide.stop().animate({'marginLeft' : '0px'}, 200);
            }
        } else {
            if (showFlug) {
                showFlug = false;
                slide.stop().animate({'marginLeft' : winWidth+'px'}, 200);
            }
        }
    }
});

scrollTop$(document).height() 
 $(document).height()  $(window).height()  
 -500  




 
   

demo


html
 
 <div id="slide">
  <div id="slide-in">
   <div id="open-btn"><img src="img/open-btn.gif" width="20" height="20" /></div>
   <h3>開くかも</h3>
   <div id="slide-contents">
    <p>これは開くかもしれない。開きましたか?</p>
   </div>
  </div>
 </div>
 

css

css
 
 #slide {
  position: fixed;
  width: 200px;
  height: 30px;
  bottom: 0;
  right: 0;
  color: #666;
  background: #fff;
  border-left: solid 1px #999;
  border-top: solid 1px #999;
  box-shadow: 0px 0px 10px 0px rgba(0,0,0,1);
 }
 #slide-in {
  padding: 5px 10px;
 }
 #slide a {
  text-decoration: none;
  cursor: pointer;
 }
 #slide h3 {
  margin-bottom: 10px;
 }
 #slide #open-btn {
  position: absolute;
  right: 5px;
  top: 5px;
  width: 20px;
  height: 20px;
  cursor: pointer;
  background: url(img/close-btn.gif);
 }
 

javascript
 
 $(function() {
  var slide = $('#slide');
  var contents = $('#slide-contents');
  //開くボタン
  var openBtn = $('#open-btn img');
  var btnOpenFlag = false;
  var openFlag = false;
  var panelSwitch = function() {
   //閉じる
   if (openFlag == true ) {
    slide.stop().animate({'width' : '200px','height' : '30px'}, 500); 
    openBtn.show();  //開くボタンにする
   }
   //開く
   else if (openFlag == false) {
    slide.stop().animate({'width' : '400px','height' : '200px'}, 500); 
    openBtn.hide();  //閉じるボタンにする
   }
  };
  //開くボタンクリックしたら
  $('#open-btn').click(function(){
   panelSwitch();
   openFlag = !openFlag;
   btnOpenFlag = true;
  });
  //画面下位置を取得
  var bottomPos = $(document).height() - $(window).height() - 500;
  $(window).scroll(function () {
   if (!btnOpenFlag) {
    if ($(this).scrollTop() >= bottomPos) {
     if (openFlag == false) {
      panelSwitch();
      openFlag = true;
     }
    } else {
     if (openFlag) {
      panelSwitch();
      openFlag = false;
     }
    }
   }
  });
 });
 



退