图片代替滚动条 JS文件2

jscroll.js

/**
 * jscroll.js
 * http://www.zhaomu.com
/*--------------------------------------------------------------------------------------------------*/
$.fn.extend({//添加滚轮事件//by jun
 mousewheel:function(Func){
  return this.each(function(){
   var _self = this;
      _self.D = 0;//滚动方向
   if($.browser.msie||$.browser.safari){
      _self.onmousewheel=function(){_self.D = event.wheelDelta;event.returnValue = false;Func && Func.call(_self);};
   }else{
      _self.addEventListener("DOMMouseScroll",function(e){
     _self.D = e.detail>0?-1:1;
     e.preventDefault();
     Func && Func.call(_self);
      },false);
   }
  });
 }
});
$.fn.extend({
 jscroll:function(j){
  return this.each(function(){
   j = j || {}
   j.Bar = j.Bar||{};//2级对象
   j.Btn = j.Btn||{};//2级对象
   j.Bar.Bg = j.Bar.Bg||{};//3级对象
   j.Bar.Bd = j.Bar.Bd||{};//3级对象
   j.Btn.uBg = j.Btn.uBg||{};//3级对象
   j.Btn.dBg = j.Btn.dBg||{};//3级对象
   var jun = { W:"15px"
      ,BgUrl:""
      ,Bg:"#efefef"
      ,Bar:{  Pos:"up"
        ,Bd:{Out:"#b5b5b5",Hover:"#ccc"}
        ,Bg:{Out:"#fff",Hover:"#fff",Focus:"orange"}}
      ,Btn:{  btn:true
        ,uBg:{Out:"#ccc",Hover:"#fff",Focus:"orange"}
        ,dBg:{Out:"#ccc",Hover:"#fff",Focus:"orange"}}
      ,Fn:function(){}}
   j.W = j.W||jun.W;
   j.BgUrl = j.BgUrl||jun.BgUrl;
   j.Bg = j.Bg||jun.Bg;
    j.Bar.Pos = j.Bar.Pos||jun.Bar.Pos;
     j.Bar.Bd.Out = j.Bar.Bd.Out||jun.Bar.Bd.Out;
     j.Bar.Bd.Hover = j.Bar.Bd.Hover||jun.Bar.Bd.Hover;
     j.Bar.Bg.Out = j.Bar.Bg.Out||jun.Bar.Bg.Out;
     j.Bar.Bg.Hover = j.Bar.Bg.Hover||jun.Bar.Bg.Hover;
     j.Bar.Bg.Focus = j.Bar.Bg.Focus||jun.Bar.Bg.Focus;
    j.Btn.btn = j.Btn.btn!=undefined?j.Btn.btn:jun.Btn.btn;
     j.Btn.uBg.Out = j.Btn.uBg.Out||jun.Btn.uBg.Out;
     j.Btn.uBg.Hover = j.Btn.uBg.Hover||jun.Btn.uBg.Hover;
     j.Btn.uBg.Focus = j.Btn.uBg.Focus||jun.Btn.uBg.Focus;
     j.Btn.dBg.Out = j.Btn.dBg.Out||jun.Btn.dBg.Out;
     j.Btn.dBg.Hover = j.Btn.dBg.Hover||jun.Btn.dBg.Hover;
     j.Btn.dBg.Focus = j.Btn.dBg.Focus||jun.Btn.dBg.Focus;
   j.Fn = j.Fn||jun.Fn;
   var _self = this;
   var Stime,Sp=0,Isup=0;
   $(_self).css({overflow:"hidden",position:"relative",padding:"0px"});
   var dw = $(_self).width(), dh = $(_self).height()-1;
   var sw = j.W ? parseInt(j.W) : 21;
   var sl = dw - sw
   var bw = j.Btn.btn==true ? sw : 0;
   if($(_self).children(".jscroll-c").height()==null){//存在性检测
  $(_self).wrapInner("<div class='jscroll-c' style='top:0px;z-index:9999;zoom:1;position:relative'></div>");
   $(_self).children(".jscroll-c").prepend("<div style='height:0px;overflow:hidden'></div>");
   $(_self).append("<div class='jscroll-e' unselectable='on' style=' height:100%;top:0px;right:0;-moz-user-select:none;position:absolute;overflow:hidden;z-index:10000;'><div class='jscroll-u' style='position:absolute;top:0px;width:100%;left:0;background:blue;overflow:hidden'></div><div class='jscroll-h'  unselectable='on' style='background:green;position:absolute;left:0;-moz-user-select:none;'></div><div class='jscroll-d' style='position:absolute;bottom:0px;width:100%;left:0;overflow:hidden;'></div></div>");
   }
   var jscrollc = $(_self).children(".jscroll-c");
   var jscrolle = $(_self).children(".jscroll-e");
   var jscrollh = jscrolle.children(".jscroll-h");
   var jscrollu = jscrolle.children(".jscroll-u");
   var jscrolld = jscrolle.children(".jscroll-d");
   if($.browser.msie){document.execCommand("BackgroundImageCache", false, true);}
   jscrollc.css({"padding-right":sw});
   jscrolle.css({width:sw,background:j.Bg,"background-image":j.BgUrl});
   jscrollh.css({top:bw,background:j.Bar.Bg.Out,"background-image":j.BgUrl,"border-color":j.Bar.Bd.Out,width:sw-2});
   jscrollu.css({height:bw,background:j.Btn.uBg.Out,"background-image":j.BgUrl});
   jscrolld.css({height:bw,background:j.Btn.dBg.Out,"background-image":j.BgUrl});
   jscrollh.hover(function(){if(Isup==0)$(this).css({background:j.Bar.Bg.Hover,"background-image":j.BgUrl,"border-color":j.Bar.Bd.Hover})},function(){if(Isup==0)$(this).css({background:j.Bar.Bg.Out,"background-image":j.BgUrl,"border-color":j.Bar.Bd.Out})})
   jscrollu.hover(function(){if(Isup==0)$(this).css({background:j.Btn.uBg.Hover,"background-image":j.BgUrl})},function(){if(Isup==0)$(this).css({background:j.Btn.uBg.Out,"background-image":j.BgUrl})})
   jscrolld.hover(function(){if(Isup==0)$(this).css({background:j.Btn.dBg.Hover,"background-image":j.BgUrl})},function(){if(Isup==0)$(this).css({background:j.Btn.dBg.Out,"background-image":j.BgUrl})})
   var sch = jscrollc.height();
   //var sh = Math.pow(dh,2) / sch ;//Math.pow(x,y)x的y次方
   //var sh = (dh-2*bw)*dh / sch
   var sh = 30;
   if(sh<10){sh=10}
   var wh = sh/6//滚动时候跳动幅度
  // sh = parseInt(sh);
   var curT = 0,allowS=false;
   jscrollh.height(sh);
   if(sch<=dh){jscrollc.css({padding:0});jscrolle.css({display:"none"})}else{allowS=true;}
   if(j.Bar.Pos!="up"){
   curT=dh-sh-bw;
   setT();
   }
   jscrollh.bind("mousedown",function(e){
    j['Fn'] && j['Fn'].call(_self);
    Isup=1;
    jscrollh.css({background:j.Bar.Bg.Focus,"background-image":j.BgUrl})
    var pageY = e.pageY ,t = parseInt($(this).css("top"));
    $(document).mousemove(function(e2){
      curT =t+ e2.pageY - pageY;//pageY浏览器可视区域鼠标位置,screenY屏幕可视区域鼠标位置
      setT();
    });
    $(document).mouseup(function(){
     Isup=0;
     jscrollh.css({background:j.Bar.Bg.Out,"background-image":j.BgUrl,"border-color":j.Bar.Bd.Out})
     $(document).unbind();
    });
    return false;
   });
   jscrollu.bind("mousedown",function(e){
   j['Fn'] && j['Fn'].call(_self);
    Isup=1;
    jscrollu.css({background:j.Btn.uBg.Focus,"background-image":j.BgUrl})
    _self.timeSetT("u");
    $(document).mouseup(function(){
     Isup=0;
     jscrollu.css({background:j.Btn.uBg.Out,"background-image":j.BgUrl})
     $(document).unbind();
     clearTimeout(Stime);
     Sp=0;
    });
    return false;
   });
   jscrolld.bind("mousedown",function(e){
   j['Fn'] && j['Fn'].call(_self);
    Isup=1;
    jscrolld.css({background:j.Btn.dBg.Focus,"background-image":j.BgUrl})
    _self.timeSetT("d");
    $(document).mouseup(function(){
     Isup=0;
     jscrolld.css({background:j.Btn.dBg.Out,"background-image":j.BgUrl})
     $(document).unbind();
     clearTimeout(Stime);
     Sp=0;
    });
    return false;
   });
   _self.timeSetT = function(d){
    var self=this;
    if(d=="u"){curT-=wh;}else{curT+=wh;}
    setT();
    Sp+=2;
    var t =500 - Sp*50;
    if(t<=0){t=0};
    Stime = setTimeout(function(){self.timeSetT(d);},t);
   }
   jscrolle.bind("mousedown",function(e){
     j['Fn'] && j['Fn'].call(_self);
       curT = curT + e.pageY - jscrollh.offset().top - sh/2;
       asetT();
       return false;
   });
   function asetT(){    
      if(curT<bw){curT=bw;}
      if(curT>dh-sh-bw){curT=dh-sh-bw;}
      jscrollh.stop().animate({top:curT},100);
      var scT = -((curT-bw)*sch/(dh-2*bw));
      jscrollc.stop().animate({top:scT},1000);
   };
   function setT(){    
      if(curT<bw){curT=bw;}
      if(curT>dh-sh-bw){curT=dh-sh-bw;}
      jscrollh.css({top:curT});
      var scT = -((curT-bw)*sch/(dh-2*bw));
      jscrollc.css({top:scT});
   };
   $(_self).mousewheel(function(){
     if(allowS!=true) return;
     j['Fn'] && j['Fn'].call(_self);
      if(this.D>0){curT-=wh;}else{curT+=wh;};
      setT();
   })
  });
 }
});

转载于:https://www.cnblogs.com/wryYH/archive/2012/04/09/2438825.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
在Javascript中,可以通过事件监听和DOM操作来实现让图片跟着滚动条自动切换的效果。下面是一个简单的实现方式: 首先,在HTML中创建一个包含多张图片的容器,如div,并给容器设置一个固定的高度和宽度,以及overflow属性为hidden,以隐藏溢出的内容。 然后,在Javascript中监听窗口滚动事件,当滚动条滚动时触发相应的处理函数。可以使用window对象的scroll事件来监听滚动条的滚动。 接下来,在处理函数中,可以通过获取滚动条的滚动距离来判断何时切换图片。可以使用window对象的pageYOffset属性获取当前滚动条的垂直滚动距离。 根据滚动条的滚动距离计算出当前应该显示的图片索引,然后通过DOM操作改变容器中图片的显示状态。可以使用style属性的display属性来控制图片的显示和隐藏。 最后,将处理函数绑定到scroll事件上,以实现滚动时自动切换图片的效果。 以下是一个简单的示例代码: HTML部分: ``` <div id="imageContainer"> <img src="image1.jpg" alt="image1"> <img src="image2.jpg" alt="image2"> <img src="image3.jpg" alt="image3"> </div> ``` Javascript部分: ```javascript window.addEventListener('scroll', function() { var container = document.getElementById('imageContainer'); var images = container.getElementsByTagName('img'); var scrollDistance = window.pageYOffset; var imageIndex = Math.floor(scrollDistance / (container.offsetHeight / images.length)); // 隐藏所有图片 for (var i = 0; i < images.length; i++) { images[i].style.display = 'none'; } // 显示当前应该显示的图片 images[imageIndex].style.display = 'block'; }); ``` 这样,当滚动条滚动时,图片会根据滚动条的位置自动切换。可以根据实际需要调整代码来实现更复杂的效果,例如添加动画、延迟切换等。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值