var SimulateScroll = (function(){
var oParent = document.getElementById('wrap-scroll-bar'),
oBox = document.getElementById('scroll-bar'),
oWp = document.getElementById('container'),
oDiv = document.getElementById('cont'),
bDown = true,
downFun = function(ev){
var oEv = ev || event;
var disY = oEv.clientY - oBox.offsetTop;
document.onmousemove = function(ev){
var oEv = ev || event;
var l = oEv.clientY - disY;
setTop(l);
}; document.onmouseup = function(){
document.onmousemove = null;
document.onmouseup = null;
}; return false;
}; function mouseWheel(ev){ var oEv = ev || event; bDown = oEv.wheelDelta ? oEv.wheelDelta < 0 : oEv.detail > 0; if(bDown){
setTop(oBox.offsetTop + 10);
}else{
setTop(oBox.offsetTop - 10);
} if(oEv.preventDefault){
oEv.preventDefault();
}
return false;
} function setTop(l){ var h = oParent.offsetHeight - oBox.offsetHeight; if(l < 0){
l = 0;
}else if(l > h){
l = h;
} oBox.style.top = l + 'px'; var bl = l/h; oDiv.style.top =- (oDiv.offsetHeight - oWp.offsetHeight) * bl + 'px';
} function setBarHeight(){
var containerHeight = oWp.offsetHeight,
contentHeight = oDiv.offsetHeight;
oBox.style.height = (containerHeight * containerHeight /contentHeight) + 'px';
} function addEvent(obj, sEv, fn){
if(obj.addEventListener){
obj.addEventListener(sEv,fn,false);
}else{
obj.attachEvent('on' + sEv,fn);
}
} return {
oWp : oWp,
oDiv : oDiv,
scrollHidden : function(){
oBox.style.height = 0;
oBox.style.top = 0;
oDiv.style.top = 0;
oBox.onmousedown = null;
query.EventUtil.remove(oParent, 'mousewheel', mouseWheel);
query.EventUtil.remove(oParent, 'DOMMouseScroll', mouseWheel);
query.EventUtil.remove(oWp, 'mousewheel', mouseWheel);
query.EventUtil.remove(oWp, 'DOMMouseScroll', mouseWheel);
},
isScrollShow : function(){ if(oDiv.offsetHeight > oWp.offsetHeight){ SimulateScroll.inIt(); }else{ SimulateScroll.scrollHidden(); }
},
inIt : function(){
setBarHeight();
oBox.onmousedown = downFun;
query.EventUtil.add(oParent, 'mousewheel', mouseWheel);
query.EventUtil.add(oParent, 'DOMMouseScroll', mouseWheel);
query.EventUtil.add(oWp, 'mousewheel', mouseWheel);
query.EventUtil.add(oWp, 'DOMMouseScroll', mouseWheel);
}
}
})(); SimulateScroll.isScrollShow(); query.EventUtil.add(window,'resize',SimulateScroll.isScrollShow); //query.EventUtil 为原生js事件库。如需使用以上滚动条方法,需加上事件库,或者改为jq写法

html结构:

原生js实现滚动条的更多相关文章

  1. JS 原生JS 判断滚动条滑动到底部(兼容苹果safari)

    ListenerScoller () { var pageIndex = 1; var startX, startY; document.addEventListener('touchstart',f ...

  2. JS 原生JS 判断滚动条滑动到底部

    window.addEventListener("scroll", function(event) { var scrollTop = document.documentEleme ...

  3. 原生js和jquey获取窗口宽高,滚动条,鼠标位置总结

    JQuery获取浏览器窗口的可视区域高度和宽度,滚动条高度   alert($(window).height()); //浏览器时下窗口可视区域高度 alert($(document).height( ...

  4. 原生JS 和 JQ 获取滚动条的高度,以及距离顶部的高度

    JQ:相对比较简便 获取浏览器显示区域(可视区域)的高度 : $(window).height(); 获取浏览器显示区域(可视区域)的宽度 : $(window).width(); 获取页面的文档高度 ...

  5. 原生js实现随着滚动条滚动,导航会自动切换的效果

    最近学习前端,把前面用原生js写的一段有关tab切换效果的代码贴上,实现的效果比较简陋,请大家见谅 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1 ...

  6. 原生JS实现瀑布流

    浏览网页的时候经常会遇到瀑布流布局的网站.也许有些读者不了解瀑布流.瀑布流,又称瀑布流式布局.是比较流行的一种网站页面布局,视觉表现为参差不齐的多栏布局,随着页面滚动条向下滚动,这种布局还会不断加载数 ...

  7. 瀑布流的三种实现方式(原生js+jquery+css3)

    前言 项目需求要弄个瀑布流的页面,用的是waterfall这个插件,感觉还是可以的,项目赶就没自己的动手写.最近闲来没事,就自己写个.大致思路理清楚,还是挺好实现的... 原生javascript版 ...

  8. 基于原生js的返回顶部组件,兼容主流浏览器

    基于原生js的返回顶部插件,兼容IE8及以上.FF.chrome等主流浏览器. js文件中封装了getScrollTop()和changeScrollTop()函数分别用于获取滚动条滚动的高度和修改滚 ...

  9. 用原生js实现ajax、jsonp

    转载: http://www.cnblogs.com/yangheng/p/6065910.html 一.原生js实现ajax $.ajax({ url: '', type: 'post', data ...

随机推荐

  1. linux 安装mysql两种方式

    yum -y install gcc gcc-c++ ncurses-devel cmake  bison   zlib    zlib-devel libxml  openssl   dtrace ...

  2. Command Pattern 命令模式

    定义: 命令模式将‘请求’封装成对象,以便使用不同的请求,队列或者日志来参数化其他对象,命令模式也支持可撤销的操作. 类图 如上图所示:Command类是用来声明执行操作的接口:ConcreteCom ...

  3. <java基础学习>RE 基础语法

    public class MyFirstJavaProgram{ public static void main(String[] args ){ System.out.println("H ...

  4. nginx 目录文件列表功能配置

    工作中常常有写不能有网页下载东西的需求,在Apache下搭建完成后直接导入文件即可达到下载/显示文件的效果,而Nginx也可以满足这样的需求(nginx 目录列表功能默认是关闭的),这时就需要配置. ...

  5. 用Runtime.getRuntime().exec()需要注意的地方

    有时候我们可能需要调用系统外部的某个程序,此时就可以用Runtime.getRuntime().exec()来调用,他会生成一个新的进程去运行调用的程序. 此方法返回一个java.lang.Proce ...

  6. as3 中文转拼音

    private static const PinYin:Object = {"a":"\u554a\u963f\u9515","ai":&q ...

  7. 读IT小小鸟有感

           第一次阅读<我是一只IT小小鸟>是在老师的推荐下的,我是一名软工大一新生,那天在课堂上听到了这本书,由于是10年前的老书,要找到它非常不易,终于在网上看到一些部分电子档.   ...

  8. Delphi编译的程序如何获取管理员权限

    1.制作manifest文件 <?xml version="1.0" encoding="UTF-8" standalone="yes" ...

  9. Java IO流

    File类 ·java.io.File类:文件和目录路径名的抽象表示形式,与平台无关 ·File能新建.删除.重命名文件和目录,但File不能访问文件内容本身.如果需要访问文件内容本身,则需要使用输入 ...

  10. Java HttpGet

    String urlStr ="https://qyapi.weixin.qq.com/cgi-bin/gettoken?a=a&b=b"; URL url = null; ...