废话不多说,直接上代码
<!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
# 滚动条
# JS简单判断滚动条的滚动方向实现方法
# 原生js封装自定义滚动条
# js实现彩色条纹滚动条效果
# 原生js仿浏览器滚动条效果
# js实现简易垂直滚动条
# 基于JavaScript实现自定义滚动条
# JavaScript实现垂直滚动条效果
# js实现刷新页面后回到记录时滚动条的位置【两种方案可选】
# 给大家
# 适用于
# 希望能
# 这篇
# 多说
# 绑定
# 小编
# 大家多多
# 简易版
# top
# height
# px
# padding
# text
# javascript
# script
# type
# margin
相关文章:
C#如何序列化对象为XML XmlSerializer用法
如何用低价快速搭建高质量网站?
如何用PHP快速搭建CMS系统?
制作电商网页,电商供应链怎么做?
电商网站制作公司有哪些,1688网是什么意思?
如何通过WDCP绑定主域名及创建子域名站点?
如何在Golang中使用encoding/gob序列化对象_存储和传输数据
小型网站建站如何选择虚拟主机?
如何在Windows 2008云服务器安全搭建网站?
网站制作公司,橙子建站是合法的吗?
网站制作公司哪里好做,成都网站制作公司哪家做得比较好,更正规?
如何快速搭建高效WAP手机网站?
如何在橙子建站上传落地页?操作指南详解
金*站制作公司有哪些,金华教育集团官网?
企业在线网站设计制作流程,想建设一个属于自己的企业网站,该如何去做?
高防服务器如何保障网站安全无虞?
宝塔建站助手安装配置与建站模板使用全流程解析
义乌企业网站制作公司,请问义乌比较好的批发小商品的网站是什么?
如何将凡科建站内容保存为本地文件?
如何通过免费商城建站系统源码自定义网站主题与功能?
北京制作网站的公司排名,北京三快科技有限公司是做什么?北京三快科技?
韩国服务器如何优化跨境访问实现高效连接?
制作企业网站建设方案,怎样建设一个公司网站?
齐河建站公司:营销型网站建设与SEO优化双核驱动策略
岳西云建站教程与模板下载_一站式快速建站系统操作指南
SAX解析器是什么,它与DOM在处理大型XML文件时有何不同?
三星网站视频制作教程下载,三星w23网页如何全屏?
视频网站app制作软件,有什么好的视频聊天网站或者软件?
详解jQuery停止动画——stop()方法的使用
如何制作一个表白网站视频,关于勇敢表白的小标题?
极客网站有哪些,DoNews、36氪、爱范儿、虎嗅、雷锋网、极客公园这些互联网媒体网站有什么差异?
详解一款开源免费的.NET文档操作组件DocX(.NET组件介绍之一)
建站主机是否属于云主机类型?
建站之星如何快速生成多端适配网站?
模具网站制作流程,如何找模具客户?
一键网站制作软件,义乌购一件代发流程?
如何在Ubuntu系统下快速搭建WordPress个人网站?
小视频制作网站有哪些,有什么看国内小视频的网站,求推荐?
如何高效配置香港服务器实现快速建站?
临沂网站制作企业,临沂第三中学官方网站?
建站之星安全性能如何?防护体系能否抵御黑客入侵?
建站主机选购指南:核心配置与性价比推荐解析
网页设计网站制作软件,microsoft office哪个可以创建网页?
韩国代理服务器如何选?解析IP设置技巧与跨境访问优化指南
建站之星安装需要哪些步骤及注意事项?
如何用狗爹虚拟主机快速搭建网站?
C#怎么使用委托和事件 C# delegate与event编程方法
制作证书网站有哪些,全国城建培训中心证书查询官网?
如何快速查询网站的真实建站时间?
上海网站制作开发公司,上海买房比较好的网站有哪些?
*请认真填写需求信息,我们会在24小时内与您取得联系。