源码网商城,靠谱的源码在线交易网站 我的订单 购物车 帮助

源码网商城

jQuery scrollFix滚动定位插件

  • 时间:2022-03-12 03:50 编辑: 来源: 阅读:
  • 扫一扫,手机访问
摘要:jQuery scrollFix滚动定位插件
当用户向上或向下滚动页面到一定位置时,目标元素开始固定定位(position:fixed),当回滚到原位置时目标元素恢复到原状态,可以定制触发滚动相对屏幕位置和触发滚动方向,兼容IE6 [b]【插件参数】[/b] $(".target_element").scrollFix( [ "top" | "bottom" | length(可以为负,表示相对bottom), [ "top" | "bottom" ] ]); 第一个参数: 可选,默认为"top",当目标元素到了屏幕相对的位置时开始触发固定,可以填一个数值,如100,-200 ,负值表示相对于屏幕下方 第一个参数: 可选,默认为"top",表示触发固定的滚动方向,"top"表示从上向下滚动时触发,"bottom"表示从下向上滚动时触发 [b]【下载插件】[/b][url=http://xiazai.jb51.net/201504/yuanma/scrollFix(jb51.net).rar]scrollFix(jb51.net).rar[/url]
[u]复制代码[/u] 代码如下:
<script type="text/javascript" src="jquery-1.7.2.min.js"></script> <script type="text/javascript" src="scrollFix.js"></script> <p><span style="color: #808000;">【代码示例】</span></p> <div class="d"> <div class="demo" style="background: #ff6000;">$("#a").scrollFix(-200); <div>滚动到距离下面200px时开始固定,默认从上到下触发</div> </div>  </div> <div class="d"> <div class="demo" style="background: #82BF00;">$("#b").scrollFix(200,"bottom"); <div>滚动到距离上面200px时开始固定,指定"bottom"从下到上触发</div> </div>  </div> <div class="d"> <div class="demo" style="background: #0C9CAE;">$("#c").scrollFix("top","top"); <div>滚动到距离上面0时开始固定,指定"top"从上到下触发</div> </div>  </div> <div class="d"> <div class="demo" style="background: #478FCE;">$("#d").scrollFix("bottom","top"); <div>滚动到距离下面0时开始固定,指定"bottom"从下到上触发</div> </div> </div>
实现代码:
[u]复制代码[/u] 代码如下:
<script type="text/javascript">// <![CDATA[ window.onload=function(){   $(".demo:eq(0)").scrollFix(-200);   $(".demo:eq(1)").scrollFix(200,"bottom");   $(".demo:eq(2)").scrollFix("top","top");   $(".demo:eq(3)").scrollFix("bottom","bottom"); } // ]]></script>
核心代码:
;(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" ? 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);
  • 全部评论(0)
联系客服
客服电话:
400-000-3129
微信版

扫一扫进微信版
返回顶部