js製作列表滾動(有捲軸)

來源:互聯網
上載者:User

標籤:cas   break   上下   listener   滑鼠移動   key   efault   scroll   垂直   

function mouseWheel(obj, fn){var ff = navigator.userAgent.indexOf("Firefox");if (ff != -1) {obj.addEventListener("DOMMouseScroll", wheel, false);}else{obj.onmousewheel = wheel;}function wheel(event){var event = event || window.event;var down = true; //判斷是否向下滾動if (event.preventDefault){ //清除預設事件event.preventDefault();}if (event.detail){ //FFdown = event.detail < 0;}else{down = event.wheelDelta > 0;}fn.apply(obj,[event, down]);return false;}}function scrollFn() {var wrap = document.querySelector(".panelFather");var middle = document.querySelector(".panelSons");var sliderWrap = document.querySelector("#sliderWrap");var slider = document.querySelector("#slider");var y = 0;//設定滾動按鈕高度function scrollHeight() {var scale =wrap.clientHeight/880;var height = sliderWrap.offsetHeight * scale; if (height < 50){ height = 50;}slider.style.height = height + "px";}scrollHeight();var contMaxHeight = 880 - wrap.clientHeight; var sliderMaxHeight = sliderWrap.offsetHeight - slider.clientHeight;//滾動函數function move() {if (y <= 0) { //限制滾動範圍y = 0;}else if (y >= sliderMaxHeight) {y = sliderMaxHeight;}var moveScale = y / sliderMaxHeight; slider.style.top = y + "px";middle.style.top = - contMaxHeight * moveScale + "px";}//滾動按鈕拖拽slider.onmousedown = function (event){var event = event || window.event;var disY = event.clientY - slider.offsetTop;document.onmousemove = function (event){var event = event || window.event;y = event.clientY - disY;move();}document.onmouseup = function (){document.onmousemove = null;}return false;}//自訂滾動距離mouseWheel(wrap, function (event, down){if (down){y -= 40;}else{y += 40;}move();});//鍵盤上下鍵控制上下滾動document.onkeydown = function (event){var event = event || window.event;switch (event.keyCode){case 38:y -= 5;break;case 40:y += 5;break;}move();}//點擊捲軸,跳到相應位置sliderWrap.onmousedown = function (event){var event = event || window.event;//計算移動的距離/*滑鼠垂直座標 - 最外層元素上間距 = 滑鼠移動的距離 y值是滑鼠移動的距離再減去滾動按鈕高度的一半,目的使滾動按鈕高度的中心位置對準滑鼠座標*/y = event.clientY - wrap.offsetTop - slider.offsetHeight / 2;move();}}scrollFn();

  直接鋪上代碼,簡單易懂

js製作列表滾動(有捲軸)

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.