• 根据网络改变的新自定义滚动条功能


    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <title>滚动条js特效 by js.alixixi.com</title>
    <style type="text/css">
    *{ margin:0; padding:0;}
    p{ height:1000px;}
    #mainBox{ 400px; height:500px; border:1px #bbb solid; position:relative; overflow:hidden; margin:50px auto;}
    #content{  height:2500px; position:absolute; left:0; top:0; background:url(http://www.alixixi.cn/skins/GRAY2010/logo3.gif) }
    .scrollDiv{ 18px;  position:absolute; top:0; background:#666; border-radius:10px;}
    .finishDiv{18px;position:absolute;top:0;background:#C00;}
    </style>
    </head>
    
    <body>
    <div id="mainBox">
    
     <div id="content">11111sssssss</div>
    </div>
    <p></p>
    <script type="text/javascript">
    
    var doc=document;
    var _wheelData=-1;
    var mainBox=doc.getElementById('mainBox');
    function bind(obj,type,handler){
     var node=typeof obj=="string"?$(obj):obj;
     if(node.addEventListener){
      node.addEventListener(type,handler,false);
     }else if(node.attachEvent){
      node.attachEvent('on'+type,handler);
     }else{
      node['on'+type]=handler;
     }
    }
    function mouseWheel(obj,handler){
     var node=typeof obj=="string"?$(obj):obj;
      bind(node,'mousewheel',function(event){
       var data=-getWheelData(event);
       handler(data);
       if(document.all){
        window.event.returnValue=false;
       }else{
        event.preventDefault();
       }
       
      });
      //火狐
      bind(node,'DOMMouseScroll',function(event){
       var data=getWheelData(event);
       handler(data);
       event.preventDefault();
      });
      function getWheelData(event){
       var e=event||window.event;
       return e.wheelDelta?e.wheelDelta:e.detail*40;
      }
    }
    
    function addScroll(){
     this.init.apply(this,arguments);
    }
    addScroll.prototype={
     init:function(mainBox,contentBox,className,classNamefinish){
      var mainBox=doc.getElementById(mainBox);
      var contentBox=doc.getElementById(contentBox);
      var scrollDiv=this._createScroll(mainBox,className,classNamefinish);
      this._resizeScorll(scrollDiv,mainBox,contentBox);
      this._tragScroll(scrollDiv,mainBox,contentBox);
      this._wheelChange(scrollDiv,mainBox,contentBox);
      this._clickScroll(scrollDiv,mainBox,contentBox);
     },
     //创建滚动条
     _createScroll:function(mainBox,className,classNamefinish){
      var _scrollBox=doc.createElement('div')
      var _scroll=doc.createElement('div');
      var _finishscroll=doc.createElement("div");//新加
      var span=doc.createElement('span');
       _scrollBox.appendChild(_finishscroll);//新加
       _scrollBox.appendChild(_scroll);
       _scroll.appendChild(span);
       _scroll.className=className;
       _finishscroll.className=classNamefinish;//
       mainBox.appendChild(_scrollBox);
       return _scroll;
     },
     //调整滚动条
     _resizeScorll:function(element,mainBox,contentBox){
      var p=element.parentNode;
      var conHeight=contentBox.offsetHeight;
      var _width=mainBox.clientWidth;
      var _height=mainBox.clientHeight;
      var _scrollWidth=element.offsetWidth;
      var _left=_width-_scrollWidth;
      p.style.width=_scrollWidth+"px";
      p.style.height=_height+"px";
      p.style.left=_left+"px";
      p.style.position="absolute";
      p.style.background="#ccc";
      contentBox.style.width=(mainBox.offsetWidth-_scrollWidth)+"px";
      var _scrollHeight=parseInt(_height*(_height/conHeight));
      if(_scrollHeight>=mainBox.clientHeight){
       element.parentNode.style.display="none";
      }
      element.style.height=_scrollHeight+"px";
     },
     //拖动滚动条
     _tragScroll:function(element,mainBox,contentBox){
      var mainHeight=mainBox.clientHeight;
      element.onmousedown=function(event){
       var _this=this;
       var _scrollTop=element.offsetTop;
       var e=event||window.event;
       var top=e.clientY;
       //this.onmousemove=scrollGo;
       document.onmousemove=scrollGo;
       document.onmouseup=function(event){
        this.onmousemove=null;
       }
       function scrollGo(event){
        var e=event||window.event;
        var _top=e.clientY;
        var _t=_top-top+_scrollTop;
        if(_t>(mainHeight-element.offsetHeight)){
         _t=mainHeight-element.offsetHeight;
        }
        if(_t<=0){
         _t=0;
        }
        element.style.top=_t+"px";
        element.parentNode.childNodes[0].style.height=_t+"px";/////
        contentBox.style.top=-_t*(contentBox.offsetHeight/mainBox.offsetHeight)+"px";
        _wheelData=_t;
       }
      }
      element.onmouseover=function(){
       this.style.background="#444"; 
      }
      element.onmouseout=function(){
       this.style.background="#666"; 
      }
     },
     //鼠标滚轮滚动,滚动条滚动
     _wheelChange:function(element,mainBox,contentBox){
      var node=typeof mainBox=="string"?$(mainBox):mainBox;
      var flag=0,rate=0,wheelFlag=0;
      if(node){
       mouseWheel(node,function(data){
        wheelFlag+=data;
        if(_wheelData>=0){
         flag=_wheelData;
         element.style.top=flag+"px";
         element.parentNode.childNodes[0].style.height=flag+"px";
         wheelFlag=_wheelData*12;
         _wheelData=-1;
        }else{
         flag=wheelFlag/12;
        }
        if(flag<=0){
         flag=0;
         wheelFlag=0;
        }
        if(flag>=(mainBox.offsetHeight-element.offsetHeight)){
         flag=(mainBox.clientHeight-element.offsetHeight);
         wheelFlag=(mainBox.clientHeight-element.offsetHeight)*12;
         
        }
        element.style.top=flag+"px";
        element.parentNode.childNodes[0].style.height=flag+"px";
        contentBox.style.top=-flag*(contentBox.offsetHeight/mainBox.offsetHeight)+"px";
       });
      }
     },
     _clickScroll:function(element,mainBox,contentBox){
      var p=element.parentNode;
      p.onclick=function(event){
       var e=event||window.event;
       var t=e.target||e.srcElement;
       var sTop=document.documentElement.scrollTop>0?document.documentElement.scrollTop:document.body.scrollTop;
       var top=mainBox.offsetTop;
       var _top=e.clientY+sTop-top-element.offsetHeight/2;
       if(_top<=0){
        _top=0;
       }
       if(_top>=(mainBox.clientHeight-element.offsetHeight)){
        _top=mainBox.clientHeight-element.offsetHeight;
       }
       if(t!=element){
        element.style.top=_top+"px";
        element.parentNode.childNodes[0].style.height=_top+"px";
        contentBox.style.top=-_top*(contentBox.offsetHeight/mainBox.offsetHeight)+"px";
        _wheelData=_top;
       }
      }
     }
    }
    new addScroll('mainBox','content','scrollDiv','finishDiv');
    </script>
    </body>
    </html>
    View Code
    滚动条js特效 经过改编
    11111sssssss
  • 相关阅读:
    Python:判断文本中的用户名在数据库中是否存在,存在返回1,不存在返回0
    Mongodb创建修改用户权限
    web开发一些常用的工具类的网站
    python linux交互模块(paramiko、fabric与pexpect)
    python内建模块详解
    python笔记_01_打开文件读取一行的最好方法
    轻量级RPC设计与实现第二版
    轻量级RPC设计与实现第一版
    Dubbo-服务注册中心之AbstractRegistry
    dubbo之心跳机制
  • 原文地址:https://www.cnblogs.com/sunrise/p/3365369.html
Copyright © 2020-2023  润新知