>  기사  >  웹 프론트엔드  >  js에서 스크롤 막대를 사용자 정의하는 방법(코드 첨부)

js에서 스크롤 막대를 사용자 정의하는 방법(코드 첨부)

不言
不言원래의
2018-08-28 16:58:031642검색

이 기사의 내용은 js에서 스크롤 막대를 사용자 정의하는 방법(코드 포함)입니다. 특정 참조 값이 있으므로 도움이 필요한 친구에게 도움이 되기를 바랍니다.

마우스 휠 이벤트

FireFox: DOMMouseScroll

e.detail 3까지 아래로 스크롤 -3

Non-FireFox까지 스크롤: onmousewheel

e.wheelDelta -120까지 아래로 스크롤 120까지 스크롤

사용자 정의 스크롤 막대 소스 코드

<!DOCTYPE html>
<html lang="">
<head>
    <meta charset="utf-8">
    <title></title>
    <style>
        * {
            margin: 0;            
            padding: 0;        
            }

        html,        
            body {
                        width: 100%;            
                        height: 100%;        
                  }

        #box {
            width: 100%;            
            height: 100%;            
            overflow: hidden;        
            }

        .ball {
                        width: 100%;            
                        height: 500px;        
                }

        #scroll {
                            width: 6px;            
                            height: 96%;            
                            position: fixed;            
                            top: 2%;            
                            right: 5px;           
                            border-radius: 3px;            
                            background-color: rgba(235, 233, 233, 0.5);            
                            z-index: 9998;            
                            opacity: 1;       
                  }

        #scrollBar {
                              position: absolute;            
                              z-index: 9999;            
                              width: 6px;            
                              height: 20px;            
                              border-radius: 3px;            
                              left: 0;            
                              top: 0;            
                              background-color: #383838;        
                     }
    </style>
   </head>
   <body style="overflow:hidden;">
    <div id="box">
        <div id="content">
            <p class="ball" style="background-color:lightpink;"></p>
            <p class="ball" style="background-color:blue;"></p>
            <p class="ball" style="background-color:yellow;"></p>
            <p class="ball" style="background-color:lightpink;"></p>
            <p class="ball" style="background-color:blue;"></p>
            <p class="ball" style="background-color:yellow;"></p>
        </div>
    </div>
    <div id="scroll">
        <div id="scrollBar"></div>
    </div></body></html><script type="text/javascript">
    var content = document.getElementById("content");    
   var box = document.getElementById("box");    
   var scroll = document.getElementById("scroll");    
   var scrollBar = document.getElementById("scrollBar");    
   var data = 30;    
   //  浏览器的可视高度减/页面的总高度*滚动栏的总高度=滚动按钮的高度
    var _eight;
    window.onresize = function (){
        init();
    }    
   function init (){
        _height = window.innerHeight * scroll.offsetHeight / content.offsetHeight;
        scrollBar.style.height = _height + "px";
    }
    init();    //火狐
    box.addEventListener("DOMMouseScroll", function (e) {
        var e = e || event;        if (e.detail > 0) {//向下滚动
            box.scrollTop += data;
        } else {//向上滚动
            box.scrollTop -= data;
        }        
   //浏览器的滚动距离/(页面的总高度-浏览器的可视高度)* (滚动栏的总高度-滚动按钮的高度)= 滚动的距离
        var _top = box.scrollTop * (scroll.offsetHeight - scrollBar.offsetHeight) / (content.offsetHeight - window.innerHeight);
        scrollBar.style.top = _top + "px";
    });    //非火狐
    box.addEventListener("mousewheel", function (e) {
        var e = e || event;        
   if (e.wheelDelta > 0) {//向上滚动
            box.scrollTop -= data;
        } else {//向下滚动
            box.scrollTop += data;
        }        
   //浏览器的滚动距离/(页面的总高度-浏览器的可视高度)* (滚动栏的总高度-滚动按钮的高度)= 滚动的距离
        var _top = box.scrollTop * (scroll.offsetHeight - scrollBar.offsetHeight) / (content.offsetHeight - window.innerHeight);
        scrollBar.style.top = _top + "px";
    });
   </script>

관련 권장 사항:

JS 구현된 페이지 사용자 정의 스크롤 막대 효과_javascript 기술

네이티브 js의 코드 사례 공유 사용자 정의 스크롤 막대의 캡슐화

위 내용은 js에서 스크롤 막대를 사용자 정의하는 방법(코드 첨부)의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.