ホームページ >ウェブフロントエンド >jsチュートリアル >jQuery スクロール修正スクロール位置プラグイン_JavaScript スキル

jQuery スクロール修正スクロール位置プラグイン_JavaScript スキル

WBOY
WBOYオリジナル
2016-05-16 16:06:261369ブラウズ

ユーザーがページを上下にスクロールすると、対象要素は固定され始めます(位置:固定)。ユーザーが元の位置に戻ると、対象要素は元の状態に戻ります。相対的な画面位置とトリガー スクロールのトリガーをカスタマイズできます。IE6

と互換性があります。

[プラグインパラメータ]

$(".target_element").scrollFix( [ "top" | "bottom" | length (相対的な下端を示す、負の値も可能), [ "top" | "bottom" ] ]);

最初のパラメータ: オプション、デフォルトは「top」です。ターゲット要素が画面を基準とした位置に到達すると、固定がトリガーされます。100、-200、および a などの値を入力できます。負の値は画面の下部を基準にした相対値を意味します

最初のパラメータ: オプション、デフォルトは「top」です。これは、固定スクロール方向をトリガーすることを意味します。「top」は、上から下にスクロールするときにトリガーすることを意味します。「bottom」は、下から上にスクロールするときにトリガーすることを意味します

【プラグインダウンロード】scrollFix(jb51.net).rar

コードをコピーします コードは次のとおりです:

f0ff38f95f97e9adaf2996656fde08962cacc6d41bbb37262a98f745aa00fbf0
4a26ca5b0e654502c38f3e7ca59cf4a42cacc6d41bbb37262a98f745aa00fbf0
e388a4556c0f65e1904146cc1a846bee38de4fc0f1377dbf639abf16409266be【コード例】54bdf357c58b8a65c66d7c19c8e4d11494b3e26ee717c64999d7867364b1b4a3
712231cdf4e4ac4bb2ff1b81fe71f40e
09c0dbc96a10fef8c9e2a5dc3783df00$("#a").scrollFix(-200);
dc6dce4a544fdca2df29d5ac0ea9906b下 200 ピクセルまでスクロールすると修正が開始され、デフォルトでは上から下にトリガーされます16b28748ea4df4d9c2150843fecfba68
16b28748ea4df4d9c2150843fecfba68
16b28748ea4df4d9c2150843fecfba68
712231cdf4e4ac4bb2ff1b81fe71f40e
$("#b").scrollFix(200,"bottom");
dc6dce4a544fdca2df29d5ac0ea9906b上 200 ピクセルまでスクロールすると修正を開始します。下から上にトリガーするには「bottom」を指定します16b28748ea4df4d9c2150843fecfba68
16b28748ea4df4d9c2150843fecfba68
16b28748ea4df4d9c2150843fecfba68
712231cdf4e4ac4bb2ff1b81fe71f40e
401db1ee3dbfd4818a4a5454d44296aa$("#c").scrollFix("top","top");
dc6dce4a544fdca2df29d5ac0ea9906b上の 0 距離までスクロールすると修正を開始します。上から下にトリガーするには「top」を指定します16b28748ea4df4d9c2150843fecfba68
16b28748ea4df4d9c2150843fecfba68
16b28748ea4df4d9c2150843fecfba68
712231cdf4e4ac4bb2ff1b81fe71f40e
2624006370d153805b4ddcff1b5707a1$("#d").scrollFix("bottom","top");
dc6dce4a544fdca2df29d5ac0ea9906b下に 0 距離スクロールすると修正を開始します。下から上にトリガーするには「bottom」を指定します16b28748ea4df4d9c2150843fecfba68
16b28748ea4df4d9c2150843fecfba68
16b28748ea4df4d9c2150843fecfba68

実装コード:
コードをコピー コードは次のとおりです:

4ec11beb6c39d0703d1751d203c17053// d41da8a09ceffa334c575ce4205f56332cacc6d41bbb37262a98f745aa00fbf0

コアコード:

;(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);
声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。