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

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

WBOY
リリース: 2016-05-16 16:06:26
オリジナル
1329 人が閲覧しました

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

と互換性があります。

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

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

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

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

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

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



【コード例】



$("#a").scrollFix(-200);
下 200 ピクセルまでスクロールすると修正が開始され、デフォルトでは上から下にトリガーされます




$("#b").scrollFix(200,"bottom");
上 200 ピクセルまでスクロールすると修正を開始します。下から上にトリガーするには「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 までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート