js模拟滚动条

HTML

<div id="box">
	<div id="scroll"></div>
</div>
<div id="box1">
	<p>博客园 - 开发者的网上家园官网

博客园是一个面向开发者的知识分享社区。自创建以来,博客园一直致力并专注于为开发者打造一个纯净的技术交流社区,推动并帮助开发者通过互联网分享知识,从而让更多...
https://www.cnblogs.com/  - 百度快照 - 981条评价
博问
程序员问答社区,解决程序员的技术难题
it新闻
> 投递新闻 > 今日新闻 > 昨日新闻 > 新闻主题 > 新闻列表
精华区 - 博客园
在博客园里,我越来越倾向于写更多“硬菜”,和技术紧密相关的文章。 但也如我博客园 ... 子慕大诗人 发布于 2017-10-26 21:32 评论(61)阅读(10809)...
https://www.cnblogs.com/pick/  - 百度快照
很认真的聊一聊程序员的自我修养 - 初码 - 博客园
2016年7月23日 - 就直接对话群主的QQ,群主也不回答,于是小张就搜索,突然搜到博客园有个帖子讲解了相关话题,他看完就给博主留言,我的邮箱是:XXXXX@qq.com,麻烦博主把源...
https://www.cnblogs.com/printh...  - 百度快照
博客园_百度百科
博客园创建于2004年1月,博客园诞生于江苏扬州这样一个IT非常落后的小城市,城市虽小,但是这里却有很多求知创新的人,博客园诞生的理由是如此简单。
网站简介 发展历程 获得荣誉
baike.baidu.com/  - 
IT新闻 - 博客园

> 新闻主题 新闻类别 今日新闻排行 编辑推荐新闻 24小时推荐排行 热门IT新闻 最新评论 关于博客园联系我们广告服务©2004-2017博客园合作伙伴:沪江网 ...
https://news.cnblogs.com/  - 百度快照 - 981条评价
首页- 园子 - 博客园

arg 评论博客:.NET Core 已经实现了PHP JIT,现在PHP是.NET上的一门开发语言 ...园友搜索关于博客园联系我们广告服务© 2004-2017 博客园Powered by ASP.NET ...
https://home.cnblogs.com/  - 百度快照 - 评价
...-一名3年工作经验的程序员应该具备的技能 - 五月的仓颉 - 博客园
2016年3月10日 - 在以前博客园的一篇文章中,讲到了奔三程序员的困惑,大致说的是三十岁之后程序员要转行之类的云云,LZ在博文中留下了如下的评论: 就以这段话自勉、共勉...</p>
</div>

CSS

*{
	margin: 0;
	padding: 0;
}
#box{
	width: 30px;
	height: 300px;
	background: blue;
	position: absolute;
	left: 50px;
	top: 50px;
}
#scroll{
	width: 30px;
	height: 30px;
	background: red;
	position: absolute;
	left: 0;
	top: 0;
}
#box1{
	width: 300px;
	height: 300px;
	border: 1px solid #000;
	position: absolute;
	left: 100px;
	top: 50px;
	overflow: hidden;
}
#box1 p{
	padding: 5px 10px;
	line-height: 20px;
	position: absolute;
	left: 0;
	top: 0;
}

JS

var Box=document.getElementById("box");
var Box1=document.getElementById("box1");
var oP=document.getElementsByTagName('p')[0];
var scrollBtn=document.getElementById("scroll");

scrollBtn.onmousedown=function(ev){
	var ev=ev||event;
	
	var disY=ev.clientY-this.offsetTop;
	var MaxT=Box.offsetHeight-scrollBtn.clientHeight;
	
	//设置全局捕获
	if(scrollBtn.setCapture){
		scrollBtn.setCapture();
	}
	
	document.onmousemove=function(ev){
		var ev=ev||event;
		
		//限制范围
		var T=ev.clientY-disY;
		if(T<0){
			T=0;
		}else if(T>MaxT){
			T=MaxT;
		}
        
        //滚动条
        scrollBtn.style.top=T+'px';
//      Box1.style.height=T/MaxT*300+"px";
		//内容文本
		oP.style.top=-T/MaxT*(oP.clientHeight-Box1.clientHeight)+"px";
	}
	
	document.onmouseup=function(){
        document.onmousemove=null;
        //释放全局捕获
        if(scrollBtn.releaseCapture){
            scrollBtn.releaseCapture();
        }
    }
	
	return false;
}

  

posted @ 2017-12-29 16:56  carol72  阅读(205)  评论(0编辑  收藏  举报