javascript模擬實現滾動條效果程式碼例項
很多時候,自帶的滾動條並不能夠滿足我們的需求。
多半是由於醜陋的外觀導致的,下面就分享一段程式碼例項,它模擬實現了垂直滾動條效果。
程式碼例項如下:
[HTML] 純文字檢視 複製程式碼<!doctype html> <html> <head> <meta charset="utf-8"> <meta name="author" content="http://www.softwhy.com/" /> <title>螞蟻部落</title> <style> * { margin: 0; padding: 0; } body { background: #E5F0FF; } .wrap { width: 520px; height: 500px; margin: 50px auto; overflow: hidden; border: 1px solid #999; border-radius: 5px; background: #fff; position: relative; -moz-user-select: none; } .content { float: left; width: 480px; padding: 10px; position: absolute; top: 0; } .scrollbar { float: right; width: 20px; background: #ececec; height: 500px; position: relative; } .bar { width: 20px; height: 50px; border: 1px solid #bbb; background: #ccc; border-radius: 5px; cursor: default; position: absolute; left: 0; top: 0; } </style> </head> <body> <div class="wrap"> <div class="content"></div> <div class="scrollbar"> <div class="bar"></div> </div> </div> <script> (function () { var wrap = document.querySelector('.wrap'); var content = document.querySelector('.content'); var scrollbar = document.querySelector('.scrollbar') var bar = document.querySelector('.bar'); var scrollbarPos = pos(scrollbar); var wrapPos = pos(wrap); var flag = false; function pos(ele) { return ele.getBoundingClientRect(); } bar.onmousedown = function (e) { var e = e || window.event; var barPos = pos(bar); var mouseY = e.clientY - barPos.top; flag = true; document.onmousemove = function (e) { if (flag) { var e = e || window.event; var contentPos = pos(content); var Y = e.clientY - mouseY - scrollbarPos.top; if (Y < 0) { Y = 0; } else if (Y > scrollbarPos.height - barPos.height) { Y = scrollbarPos.height - barPos.height; } var cY = -Y * (contentPos.height - wrapPos.height) / (scrollbarPos.height - barPos.height); bar.style.top = Y + 'px'; content.style.top = cY + 'px'; } return false; } document.onmouseup = function () { flag = false; document.onmousemove = null; } } wrap.onselectstart = function () { return false; } if (wrap.onmousewheel === null) { wrap.onmousewheel = function (e) { var e = e || window.event; var delta = event.wheelDelta; fn(delta); } } else { wrap.addEventListener('DOMMouseScroll', function (e) { var delta = e.detail > 0 ? -120 : 120; e.preventDefault(); fn(delta); }, false) } function fn(delta) { var contentY = pos(content).top - wrapPos.top; var cY = contentY + delta; if (cY >= 0) { cY = 0; } else if (cY <= -pos(content).height + wrapPos.height) { cY = -pos(content).height + wrapPos.height; } var bY = -cY * (scrollbarPos.height - pos(bar).height) / (pos(content).height - wrapPos.height) bar.style.top = bY + 'px'; content.style.top = cY + 'px'; } })() </script> </body> </html>
相關文章
- 美化滾動條效果程式碼例項
- CSS3滾動條效果程式碼CSSS3
- JavaScript模擬拋物運動的程式碼實現JavaScript
- html實現簡單ListViews效果的例項程式碼HTMLView
- JavaScript運動框架程式碼例項JavaScript框架
- css3晃動效果程式碼例項CSSS3
- 隱藏滾動條保留滾動效果
- 微信小程式功能之全屏滾動效果的實現程式碼微信小程式
- CSS3星系運動效果程式碼例項CSSS3
- 前端實現文字滾動效果前端
- JavaScript實現選項卡效果JavaScript
- jQuery tab選項卡效果程式碼例項jQuery
- canvas載入效果程式碼例項Canvas
- CSS橢圓效果程式碼例項CSS
- 十行程式碼實現網頁標題滾動效果!行程網頁
- JavaScript in運算子程式碼例項JavaScript
- CSS條紋背景程式碼例項CSS
- JavaScript模擬拋物效果JavaScript
- canvas原型鐘錶效果程式碼例項Canvas原型
- css3水滴效果程式碼例項CSSS3
- css背景虛化效果程式碼例項CSS
- canvas氣泡上浮效果程式碼例項Canvas
- JavaScript取餘數程式碼例項JavaScript
- JavaScript 阻止事件冒泡程式碼例項JavaScript事件
- JavaScript隨滑鼠晃動的div塊程式碼例項JavaScript
- JavaScript水平無縫滾動程式碼JavaScript
- scroll-view元件bindscroll例項應用:自定義滾動條View元件
- 巢狀滾動效果實現討論巢狀
- 移動端模擬滾動
- jQuery點選滑出層效果程式碼例項jQuery
- CSS3心形效果程式碼例項CSSS3
- div前後翻轉效果程式碼例項
- 當前文字框高亮效果程式碼例項
- CSS3旋轉效果程式碼例項CSSS3
- 淡入淡出效果簡單程式碼例項
- canvas繪製箭頭效果程式碼例項Canvas
- javascript模擬new的實現JavaScript
- JavaScript 模擬new的實現JavaScript
- JavaScript模擬實現replaceAll方法JavaScript