指引网

当前位置: 主页 > 网页制作 > JavaScript >

javascript自定义滚动条效果

来源:网络 作者:佚名 点击: 时间:2017-08-07 22:14
[摘要] javascript自定义滚动条效果
window.onload=function(){
                var oBtn=document.getElementById("barbtn");
                var oBar=document.getElementById("bar");
                var oBox=document.getElementById("box");
                var oCon=document.getElementById("con");
                var y=0;
                oBtn.onmousedown=function(ev){
                        var ev=ev||event;
                        var disY=ev.clientY-oBtn.offsetTop;
                        document.onmousemove=function(){
                                var ev=ev||event;
                                y=ev.clientY-disY;
                                toRun();        
                                
                        }                        
                        document.onmouseup=function(){
                                document.onmousemove=null;
                                document.onmouseup=null;
                        }
                        return false;        
                }
        
                function toRun(){
                        if(y<0)y=0;
                        if(y>oBar.offsetHeight-oBtn.offsetHeight)y=oBar.offsetHeight-oBtn.offsetHeight;
                        var scale=oBtn.offsetTop/(oBar.offsetHeight-oBtn.offsetHeight);
                        var maxH=oCon.offsetHeight-oBox.offsetHeight;                        
                        oBtn.style.top=y+"px";
                        oCon.style.marginTop=-scale*maxH+"px";
                }
                //滚轮事件
                toWheel(oBox,function(down){
                        if(down){
                                y+=10;
                        }else{
                                y-=10;
                        }
                        toRun();
                })
        }
        
        function toWheel(obj,fn){
                var bDown=false;
                if(window.navigator.userAgent.indexOf('Firefox')!=-1){
                        obj.addEventListener('DOMMouseScroll',fnWheel,false);
                }else{
                        obj.onmousewheel=fnWheel;
                }
        function fnWheel(ev){
                var ev=ev||event;
                if(ev.detail){
                        if(ev.detail>0){
                                bDown=true;
                        }else{
                                bDown=false;
                        }        
                }else{
                        if(ev.wheelDelta>0){
                                //向上
                                bDown=false;
                        }else{
                                //向下
                                bDown=true;
                        }        
                }                        
                fn&&fn(bDown);                
        }        
}        

<div class="box" id="box">
            <div class="con" id="con">DIV+CSS是WEB设计标准,它是一种网页的布局方法。与传统中通过表格(table)布局定位的方式不同,它可以实现网页页面内容与表现相分离。提起DIV+CSS组合,还要从XHTML说起。XHTML是一种在HTML(标准通用标记语言的子集)基础上优化和改进的新语言,目的是基于XML应用与强大的数据转换能力,适应未来网络应用更多的需求。
“DIV+CSS”其实是错误的叫法,而标准的叫法应是XHTML+CSS。因为DIV与Table都是XHTML或HTML语言中的一个标记,而CSS只是一种表现形式。也许其提出者本意并没有错,但是跟风者从表现曲解了其意思,认为整个页面就应当是DIV+CSS文件的组合。
        </div>
        <div class="bar" id="bar">
                <span class="barbtn" id="barbtn"></span>
               </div>
    </div>
------分隔线----------------------------