js 简易版滚动条实例(适用于移动端H5开发)
2017-06-26 07:46
661 查看
废话不多说,直接上代码
<!DOCTYPE html> <html> <head> <title>滑动条</title> <meta charset="utf-8"> <meta name="apple-mobile-web-app-capable" content="yes" /> <meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=0" /> <script type="text/javascript" src="./hScoll.js"></script> </head> <style> *{ margin: 0; padding: 0; } #content{ margin-top: 50px; width:100%; height: 200px; background: #eeeeee; overflow: hidden; position: relative; /**transform: translate(0px, -70px);*/ } #scoll{ overflow: hidden; } #content2{ margin-top: 50px; width:100%; height: 200px; background: red; overflow: hidden; position: relative; /**transform: translate(0px, -70px);*/ } #scoll2{ overflow: hidden; } .scrollbars{ position: absolute; height: 100%; right: 0; top: 0; width: 5px; border-radius: 5px; } .scollb{ position: absolute; right: 0; top: 0; width: 100%; background: #999999; border-radius: 5px; } </style> <body> <div id="content"> <div id="scoll"> <p>1111</p> <p>2222</p> <p>3333</p> <p>4444</p> <p>5555</p> <p>6666</p> <p>7777</p> <p>8888</p> <p>9999</p> <p>0000</p> <p>aaaa</p> <p>bbbb</p> <p>cccc</p> <p>dddd</p> <p>eeee</p> </div> </div> </body> <script> var options ={ interactiveScrollbars:true } window.hScoll.buildScoll('content',options); </script> </html>
js代码:
/** * Created by hechao on 2017/6/25. */ (function(){ /**添加window对象hScoll属性*/ window.hScoll = { buildScoll:function(el,options){ App.init(el,options); } } var App = { /**初始化组件*/ init:function(el,option){ App.options = option; App.prevY = 0; App.el = document.getElementById(el); App.scoll = this.el.children[0]; App.h = this.el.offsetHeight;//滑动范围高度 App.ch = this.el.scrollHeight;//内容的高度 if(parseFloat(this.h)<=parseFloat(this.ch)){ App.sdiv = document.createElement('div'); App.scollb = document.createElement('div'); App.sdiv.setAttribute('class','scrollbars'); App.scollb.setAttribute('class','scollb'); App.scollb.style.height = parseFloat(this.h)*parseFloat(this.h)/parseFloat(this.ch) + 'px'; App.el.appendChild(this.sdiv); App.sdiv.appendChild(this.scollb); App.initevent(); } }, /**绑定事件*/ initevent:function (){ App.el.addEventListener('touchstart', App.touchstart, false); App.el.addEventListener('touchmove', App.touchmove, false); App.el.addEventListener('touchend', App.touchend, false); }, /**记录滑动初始位置*/ touchstart:function(e){ var point = App.getPoint(e); App.startY = point.pageY; }, /**手指移动时,滚动条滚动*/ touchmove:function(e){ e.preventDefault();//阻止默认行为 var point = App.getPoint(e); App.moveY = point.pageY; App.deltaY = App.startY - App.moveY; if((App.prevY - App.deltaY)<=0 && (App.prevY - App.deltaY)>= -(App.ch-App.h)){ App.domove(App.prevY - App.deltaY); } if(App.options.interactiveScrollbars){ App.domove2(App.prevY - App.deltaY); }else{ if((App.prevY - App.deltaY)<=0 && (App.prevY - App.deltaY)>= -(App.ch-App.h)){ App.domove2(App.prevY - App.deltaY); } } }, /**手指离开时,判断位置*/ touchend:function(e){ App.prevY = App.prevY - App.deltaY; if(App.prevY >= 0){ App.prevY = 0; App.domove(App.prevY,true); App.domove2(App.prevY,true); } if(App.prevY <= -(App.ch-App.h)){ App.prevY = -(App.ch-App.h); App.domove(App.prevY,true); App.domove2(App.prevY,true); } }, getPoint:function (e) { return e.touches ? e.touches[0] : e; }, /**内容滑动*/ domove:function (y,t){ if(t){ App.scoll.setAttribute('style', 'transform: translate(0px, '+y+'px);transition:transform 300ms ease'); }else{ App.scoll.setAttribute('style', 'transform: translate(0px, '+y+'px);transition:transform 0ms ease'); } }, /**滚动条滑动*/ domove2:function(y,t){ if(t){ App.scollb.setAttribute('style', 'transform: translate(0px, '+-parseFloat(y)*parseFloat(App.h)/parseFloat(App.ch)+'px);transition:transform 0ms ease;height:'+parseFloat(App.h)*parseFloat(App.h)/parseFloat(App.ch) + 'px'+''); }else{ App.scollb.setAttribute('style', 'transform: translate(0px, '+-parseFloat(y)*parseFloat(App.h)/parseFloat(App.ch)+'px);transition:transform 0ms ease;height:'+parseFloat(App.h)*parseFloat(App.h)/parseFloat(App.ch) + 'px'+''); } } } })();
以上这篇js 简易版滚动条实例(适用于移动端H5开发)就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持脚本之家。
您可能感兴趣的文章:
相关文章推荐
- 静态资源(JS/CSS)存储在localStorage,适用于Web移动端H5页面制作
- H5开发:JS自动识别移动端和PC端,分配二级域名
- Js+Dhtml:WEB程序员简易开发工具包(预先体验版)
- Python中使用wxPython开发的一个简易笔记本程序实例
- 使用PHP做移动端 api接口开发方法(适用于TP框架)
- 基于ionic+cordova+angularJs从零开始搭建自己的移动端H5 APP
- 常见的移动端H5页面开发遇到的坑和解决办法
- 基于vue1.0开发的移动端H5积分商城项目
- H5案例分享:jquery.qrcode.js生成简易二维码
- 学前端开发适用于移动端常见的问题
- 移动端 h5 开发相关内容总结——JavaScript 篇
- storm实战入门:开发简易Topology实例
- 移动端 h5开发相关内容总结——CSS篇
- 微信应用号开发知识贮备之altjs官方实例初探
- 移动端 h5 开发相关内容总结——JavaScript 篇
- iOS开发中OC与H5网页交互之OC传值给JS(WKWebView)
- FrozenJS 针对移动端开发的 js 组件库
- 项目总结(3) H5 JS判断客户端是否是iOS或者Android手机移动端
- js操作滚动条事件实例
- JS模拟简易滚动条