> 웹 프론트엔드 > JS 튜토리얼 > jQuery scrollFix 스크롤 위치 지정 플러그인_javascript 기술

jQuery scrollFix 스크롤 위치 지정 플러그인_javascript 기술

WBOY
풀어 주다: 2016-05-16 16:06:26
원래의
1339명이 탐색했습니다.

사용자가 페이지를 특정 위치로 위아래로 스크롤하면 대상 요소가 고정되기 시작합니다(위치: 고정). 사용자가 원래 위치로 다시 스크롤하면 대상 요소가 원래 상태로 돌아갑니다. 트리거 스크롤의 상대적인 화면 위치와 트리거는 IE6과 호환되는 스크롤 방향을 사용자 정의할 수 있습니다

[플러그인 매개변수]

$(".target_element").scrollFix( [ "top" | "bottom" | 길이(음수일 수 있으며 상대 하단을 나타냄), [ "top" | "bottom" ] ]);

첫 번째 매개변수: 선택사항, 기본값은 "top"입니다. 대상 요소가 화면을 기준으로 한 위치에 도달하면 고정이 트리거됩니다. 100,-200과 같은 값을 입력할 수 있습니다. 음수 값은 화면 하단을 기준으로 함을 의미합니다

첫 번째 매개변수: 선택 사항, 기본값은 고정된 스크롤 방향을 트리거하는 "top", 위에서 아래로 스크롤할 때 트리거를 의미하는 "top", 아래에서 위로 스크롤할 때 트리거를 의미하는 "bottom"입니다

【플러그인 다운로드】scrollFix(jb51.net).rar

코드 복사 코드는 다음과 같습니다.



【코드 예】



$("#a").scrollFix(-200);
아래 200px까지 스크롤하면 수정되기 시작하며 기본적으로 위에서 아래로 트리거됩니다




$("#b").scrollFix(200,"bottom");
200px 이상으로 스크롤할 때 수정 시작, 아래에서 위로 트리거하려면 "bottom"을 지정하세요




$("#c").scrollFix("top","top");
위의 0 거리까지 스크롤할 때 수정 시작, 위에서 아래로 트리거하려면 "top"을 지정하세요




$("#d").scrollFix("bottom","top");
아래 0 거리까지 스크롤할 때 수정 시작, 아래에서 위로 트리거하려면 "bottom"을 지정하세요




구현 코드:
코드 복사 코드는 다음과 같습니다.


핵심 코드:

;(function($) {
 jQuery.fn.scrollFix = function(height, dir) {
  height = height || 0;
  height = height == "top" ? 0 : height;
  return this.each(function() {
   if (height == "bottom") {
    height = document.documentElement.clientHeight - this.scrollHeight;
   } else if (height < 0) {
    height = document.documentElement.clientHeight - this.scrollHeight + height;
   }
   var that = $(this),
    oldHeight = false,
    p, r, l = that.offset().left;
   dir = dir == "bottom" &#63; dir : "top"; //默认滚动方向向下
   if (window.XMLHttpRequest) { //非ie6用fixed


    function getHeight() { //>=0表示上面的滚动高度大于等于目标高度
     return (document.documentElement.scrollTop || document.body.scrollTop) + height - that.offset().top;
    }
    $(window).scroll(function() {
     if (oldHeight === false) {
      if ((getHeight() >= 0 && dir == "top") || (getHeight() <= 0 && dir == "bottom")) {
       oldHeight = that.offset().top - height;
       that.css({
        position: "fixed",
        top: height,
        left: l
       });
      }
     } else {
      if (dir == "top" && (document.documentElement.scrollTop || document.body.scrollTop) < oldHeight) {
       that.css({
        position: "static"
       });
       oldHeight = false;
      } else if (dir == "bottom" && (document.documentElement.scrollTop || document.body.scrollTop) > oldHeight) {
       that.css({
        position: "static"
       });
       oldHeight = false;
      }
     }
    });
   } else { //for ie6
    $(window).scroll(function() {
     if (oldHeight === false) { //恢复前只执行一次,减少reflow
      if ((getHeight() >= 0 && dir == "top") || (getHeight() <= 0 && dir == "bottom")) {
       oldHeight = that.offset().top - height;
       r = document.createElement("span");
       p = that[0].parentNode;
       p.replaceChild(r, that[0]);
       document.body.appendChild(that[0]);
       that[0].style.position = "absolute";
      }
     } else if ((dir == "top" && (document.documentElement.scrollTop || document.body.scrollTop) < oldHeight) || (dir == "bottom" && (document.documentElement.scrollTop || document.body.scrollTop) > oldHeight)) { //结束
      that[0].style.position = "static";
      p.replaceChild(that[0], r);
      r = null;
      oldHeight = false;
     } else { //滚动
      that.css({
       left: l,
       top: height + document.documentElement.scrollTop
      })
     }
    });
   }
  });
 };
})(jQuery);
로그인 후 복사
관련 라벨:
원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
최신 이슈
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿