国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁(yè) > 編程 > JavaScript > 正文

原生JS實(shí)現(xiàn)自定義滾動(dòng)條效果

2019-11-19 16:01:26
字體:
來(lái)源:轉(zhuǎn)載
供稿:網(wǎng)友

本文實(shí)例為大家分享了JS實(shí)現(xiàn)自定義滾動(dòng)條的具體代碼,供大家參考,具體內(nèi)容如下

實(shí)現(xiàn)思路:

1.外層設(shè)置一個(gè)div,在外層的div里面設(shè)置一個(gè)特別高的div(高度為外層5個(gè)div的高度),在高的div里面設(shè)置5個(gè)div,每個(gè)div的高度,都和父級(jí)的高度相同
2.在外層div的右側(cè)邊框以里自定義一個(gè)滾動(dòng)條,(本人用div設(shè)置樣式作為滾動(dòng)條)
3.最外層的div添加onmousewheel事件,使用e.wheelDelta來(lái)獲取每次滑動(dòng)的距離,若為正數(shù)則向上滑動(dòng),將每次增加的數(shù),賦給滾動(dòng)條的top值,若為負(fù)數(shù)則向下互動(dòng),將每次減少的值,賦值給滾動(dòng)條的top值,并對(duì)特別高的div作對(duì)應(yīng)的上下平移處理
4.注意:滾動(dòng)條的高度需要和高的div的高度成比例滑動(dòng)

<!DOCTYPE html> <html>   <head>     <meta charset="UTF-8">     <title>自定義滾輪事件</title>     <style type="text/css">       *{         padding: 0;         margin: 0;       }       #wrap{         height: 500px;         width: 300px;         position: relative;         /*超出隱藏*/         overflow: hidden;         margin: 200px auto 0;         border: 3px solid black;       }       #content{         width: 300px;         /*不需要設(shè)置高度,可被圖片撐開(kāi)*/         position: absolute;         left: 0;         top: 0;         border: 1px solid red;       }       #content > div{         width: 294px;         /*去除圖片間的間隙*/         vertical-align: top;         height: 500px;         border: 1px solid red;         text-align: center;         font-size: 100px;         line-height: 500px;       }       #sliderWrap{         height:100% ;         width:16px ;         background-color: greenyellow;         position: absolute;         right: 0;         top: 0;       }       #slider{         width: 10px;         height: 50px;         background-color: blue;         position: absolute;         left: 3px;         top: 0px;         border-radius: 10px;       }     </style>   </head>   <body>     <div id="wrap">       <div id="content">         <div>1</div>         <div>2</div>         <div>3</div>         <div>4</div>         <div>5</div>       </div>       <!--右側(cè)滾動(dòng)條部分-->       <div id="sliderWrap">         <div id="slider">                    </div>       </div>     </div>   </body>   <script type="text/javascript">     var wrapDiv = document.getElementById("wrap");     var contentDiv = document.getElementById("content");     var sliderWrap = document.getElementById("sliderWrap");     var slider = document.getElementById("slider");     //設(shè)置比例     //clientHeight - 不包括border     var scale = wrapDiv.clientHeight / contentDiv.clientHeight;     //設(shè)置滑塊的高度     var h1 = sliderWrap.clientHeight * scale;     //為了合理設(shè)置高度,設(shè)置滑塊的最小高度     if (h1 < 50) {       h1 = 50;     }else if (scale >= 1) {       //說(shuō)明當(dāng)前內(nèi)容能過(guò)完全顯示在可視區(qū)域內(nèi),不需要滾動(dòng)條       sliderWrap.style.display = "none";     }     //設(shè)置滑塊的高度     slider.style.height = h1 +"px";     //設(shè)置y軸的增量     var y = 0;     //為wrap添加滾輪事件     wrapDiv.onmousewheel = function(e){       var event1 = event || e       if (event.wheelDelta < 0) {         //滑動(dòng)條向下滾動(dòng)         y += 10;       }else if (event.wheelDelta > 0) {         //滑動(dòng)條向上滾動(dòng)         y -= 10;       }       //y變化時(shí)說(shuō)明在滾動(dòng),此時(shí)使?jié)L動(dòng)條發(fā)生滾動(dòng),以及設(shè)置content內(nèi)容部分滾動(dòng)       //判斷極端情況,滑塊不能劃出屏幕       if (y <= 0) {         //滑塊最多滑到頂部         y = 0;       }       if(y >= sliderWrap.clientHeight - slider.clientHeight){         //滑塊最多滑到最底部         y = sliderWrap.clientHeight - slider.clientHeight;       }       //更新滑塊的位置       slider.style.top = y +"px";       scale = wrapDiv.clientHeight / contentDiv.clientHeight;       contentDiv.style.top = - y / scale +"px";     }   </script> </html> 

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持武林網(wǎng)。

發(fā)表評(píng)論 共有條評(píng)論
用戶(hù)名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 行唐县| 西乡县| 凌云县| 如皋市| 钟祥市| 襄樊市| 株洲县| 梁山县| 达日县| 竹山县| 丹东市| 舒兰市| 亚东县| 通州市| 信丰县| 江川县| 黎城县| 灵璧县| 邹平县| 涡阳县| 高青县| 偃师市| 应城市| 白城市| SHOW| 罗甸县| 前郭尔| 彰化县| 雷波县| 泗阳县| 交口县| 金平| 南川市| 芮城县| 萨迦县| 丁青县| 梁平县| 获嘉县| 登封市| 西乌珠穆沁旗| 宝兴县|