<!DOCTYPE HTML>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>无标题文档</title>
<style>
#div1 {width: 30px; height: 500px; background: black; position: absolute; left: 10px; top: 10px;}
#div2 {width: 30px; height: 30px; background: red; position: absolute; left: 0; top: 0; }
#div3 {width: 498px; height: 498px; border: 1px solid green; position: absolute; left: 50px; top: 10px;overflow: hidden;}
#div4 { position: absolute; left: 0; top: 0;}
</style>
<script>
window.onload = function() {
var oDiv1 = document.getElementById('div1');
var oDiv2 = document.getElementById('div2');
var oDiv3 = document.getElementById('div3');
var oDiv4 = document.getElementById('div4');
var iMaxTop = oDiv1.offsetHeight - oDiv2.offsetHeight; //滚动条可以滚动的最大高度=滚动条范围的高度-滚动条的高度
oDiv2.onmousedown = function(ev) { //鼠标点击滚动条执行的函数
var ev = ev || event; //事件的浏览器兼容性
var disY = ev.clientY - this.offsetTop; //鼠标到滚动条顶部的距离=鼠标的top-滚动条的top
document.onmousemove = function(ev) { //鼠标移动的时候执行的函数
var ev = ev || event; //事件的浏览器兼容性
var T = ev.clientY - disY; //滚动条到顶部的距离=鼠标的top-鼠标到滚动条顶部的距离
if ( T < 0 ) { //如果超出顶部,距离等于0
T = 0;
} else if ( T > iMaxTop ) { //如果距离大于最大值就等于最大值
T = iMaxTop;
}
oDiv2.style.top = T + 'px'; //滚动条的高度
var iScale = T / iMaxTop; //滚动条滚动距离的百分比
oDiv4.style.top = (oDiv3.clientHeight - oDiv4.offsetHeight) * iScale + 'px';
//文字距离顶部的距离=(文字范围去掉边框的高度-文字的高度)*滚动条比例
}
document.onmouseup = function() {
document.onmousemove = document.onmouseup = null; //鼠标放开的时候清除鼠标移动的函数
}
return false; //清除鼠拖拽的默认事件
}
}
</script>
</head>
<body>
<div id="div1"><!--滚动条区域-->
<div id="div2"></div><!--滚动条-->
</div>
<div id="div3">
<div id="div4">文字内容</div>
</div>
</body>
</html>