<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
<title>带滚动条的Div</title>
<style type="text/css">
body{
font-family: Trebuchet MS, Lucida Sans Unicode, Arial, sans-serif;
}
p{
margin-top:0px;
}
#dhtmlgoodies_scrolldiv{
width:530px;
height:500px;
}
#scrolldiv_parentContainer{
width:500px;
height:100%;
overflow:hidden;
border:1px solid #BC8FBD;
float:left;
position:relative;
}
#scrolldiv_content{
padding: 5px;
position:relative;
font-family: Trebuchet MS, Lucida Sans Unicode, Arial, sans-serif;
font-size: 0.9em;
line-height:130%;
color: #333;
}
#scrolldiv_slider{
width:15px;
margin-left:2px;
height:500px;
float:left;
}
#scrolldiv_scrollbar{
width:15px;
height:460px;
border:1px solid #BC8FBD;
position:relative;
}
#scrolldiv_theScroll{
margin:1px;
width:13px;
height:13px;
background-color:#BC8FBD;
position:absolute;
top:0px;
left:0px;
cursor:pointer;
}
#scrolldiv_scrollUp,#scrolldiv_scrollDown{
width:15px;
height:16px;
border:1px solid #BC8FBD;
color: #BC8FBD;
text-align:center;
font-size:16px;
line-height:16px;
cursor:pointer;
}
#scrolldiv_scrollUp{
margin-bottom:2px;
}
#scrolldiv_scrollDown{
margin-top:2px;
}
#scrolldiv_scrollDown span,#scrolldiv_scrollUp span{
font-family: Symbol;
}
</style>
<script type="text/javascript">
var contentHeight = 0;
var visibleContentHeight = 0;
var scrollActive = false;
var scrollHandleObj = false;
var scrollHandleHeight = false;
var scrollbarTop = false;
var eventYPos = false;
var scrollbuttonActive = false;
var scrollbuttonDirection = false;
var scrollbuttonSpeed = 2;
var scrollTimer = 10;
var scrollMoveToActive = false;
var scrollMoveToYPosition = false;
function scrollDiv_startScroll(e)
{
if(document.all)e = event;
scrollbarTop = document.getElementById('scrolldiv_theScroll').offsetTop;
eventYPos = e.clientY;
scrollActive = true;
}
function scrollDiv_stopScroll()
{
scrollActive = false;
scrollbuttonActive = false;
scrollMoveToActive = false;
}
function scrollDiv_scroll(e)
{
if(!scrollActive)return;
if(document.all)e = event;
if(e.button!=1 && document.all)return;
var topPos = scrollbarTop + e.clientY - eventYPos;
if(topPos<0)topPos=0;
if(topPos/1>visibleContentHeight-(scrollHandleHeight+4)/1)topPos = visibleContentHeight-(scrollHandleHeight+4);
document.getElementById('scrolldiv_theScroll').style.top = topPos + 'px';
document.getElementById('scrolldiv_content').style.top = 0 - Math.floor((contentHeight) * ((topPos)/(visibleContentHeight-scrollHandleHeight)))+'px'
}
function scrolldiv_scrollMoveToInit(e)
{
if(document.all)e = event;
scrollMoveToActive = true;
scrollMoveToYPosition = e.clientY - document.getElementById('scrolldiv_scrollbar').offsetTop;
if(document.getElementById('scrolldiv_theScroll').offsetTop/1 > scrollMoveToYPosition) scrollbuttonDirection = scrollbuttonSpeed*-2; else scrollbuttonDirection = scrollbuttonSpeed*2;
scrolldiv_scrollMoveTo();
}
function scrolldiv_scrollMoveTo()
{
if(!scrollMoveToActive || scrollActive)return;
var topPos = document.getElementById('scrolldiv_theScroll').style.top.replace('px','');
topPos = topPos/1 + scrollbuttonDirection;
if(topPos<0){
topPos=0;
scrollMoveToActive=false;
}
if(topPos/1>visibleContentHeight-(scrollHandleHeight+4)/1){
topPos = visibleContentHeight-(scrollHandleHeight+4);
scrollMoveToActive=false;
}
if(scrollbuttonDirection<0 && topPos<scrollMoveToYPosition-scrollHandleHeight/2)return;
if(scrollbuttonDirection>0 && topPos>scrollMoveToYPosition-scrollHandleHeight/2)return;
document.getElementById('scrolldiv_theScroll').style.top = topPos + 'px';
document.getElementById('scrolldiv_content').style.top = 0 - Math.floor((contentHeight) * ((topPos)/(visibleContentHeight-scrollHandleHeight)))+'px'
setTimeout('scrolldiv_scrollMoveTo()',scrollTimer);
}
function cancelEvent()
{
return false;
}
function scrolldiv_scrollButton()
{
if(this.id=='scrolldiv_scrollDown')scrollbuttonDirection = scrollbuttonSpeed; else scrollbuttonDirection = scrollbuttonSpeed*-1;
scrollbuttonActive=true;
scrolldiv_scrollButtonScroll();
}
function scrolldiv_scrollButtonScroll()
{
if(!scrollbuttonActive)return;
var topPos = document.getElementById('scrolldiv_theScroll').style.top.replace('px','');
topPos = topPos/1 + scrollbuttonDirection;
if(topPos<0){
topPos=0;
scrollbuttonActive=false;
}
if(topPos/1>visibleContentHeight-(scrollHandleHeight+4)/1){
topPos = visibleContentHeight-(scrollHandleHeight+4);
scrollbuttonActive=false;
}
document.getElementById('scrolldiv_theScroll').style.top = topPos + 'px';
document.getElementById('scrolldiv_content').style.top = 0 - Math.floor((contentHeight) * ((topPos)/(visibleContentHeight-scrollHandleHeight)))+'px'
setTimeout('scrolldiv_scrollButtonScroll()',scrollTimer);
}
function scrolldiv_scrollButtonStop()
{
scrollbuttonActive = false;
}
function scrolldiv_initScroll()
{
visibleContentHeight = document.getElementById('scrolldiv_scrollbar').offsetHeight ;
contentHeight = document.getElementById('scrolldiv_content').offsetHeight - visibleContentHeight; scrollHandleObj = document.getElementById('scrolldiv_theScroll');
scrollHandleHeight = scrollHandleObj.offsetHeight;
scrollbarTop = document.getElementById('scrolldiv_scrollbar').offsetTop;
document.getElementById('scrolldiv_theScroll').onmousedown = scrollDiv_startScroll;
document.body.onmousemove = scrollDiv_scroll;
document.getElementById('scrolldiv_scrollbar').onselectstart = cancelEvent;
document.getElementById('scrolldiv_theScroll').onmouseup = scrollDiv_stopScroll;
if(document.all)document.body.onmouseup = scrollDiv_stopScroll; else
document.documentElement.onmouseup = scrollDiv_stopScroll;
document.getElementById('scrolldiv_scrollDown').onmousedown = scrolldiv_scrollButton;
document.getElementById('scrolldiv_scrollUp').onmousedown = scrolldiv_scrollButton;
document.getElementById('scrolldiv_scrollDown').onmouseup = scrolldiv_scrollButtonStop;
document.getElementById('scrolldiv_scrollUp').onmouseup = scrolldiv_scrollButtonStop;
document.getElementById('scrolldiv_scrollUp').onselectstart = cancelEvent;
document.getElementById('scrolldiv_scrollDown').onselectstart = cancelEvent;
document.getElementById('scrolldiv_scrollbar').onmousedown = scrolldiv_scrollMoveToInit;
}
function scrolldiv_setColor(rgbColor)
{
document.getElementById('scrolldiv_scrollbar').style.borderColor = rgbColor;
document.getElementById('scrolldiv_theScroll').style.backgroundColor = rgbColor;
document.getElementById('scrolldiv_scrollUp').style.borderColor = rgbColor;
document.getElementById('scrolldiv_scrollDown').style.borderColor = rgbColor;
document.getElementById('scrolldiv_scrollUp').style.color = rgbColor;
document.getElementById('scrolldiv_scrollDown').style.color = rgbColor;
document.getElementById('scrolldiv_parentContainer').style.borderColor = rgbColor;
}
function scrolldiv_setWidth(newWidth)
{
document.getElementById('dhtmlgoodies_scrolldiv').style.width = newWidth + 'px';
document.getElementById('scrolldiv_parentContainer').style.width = newWidth-30 + 'px';
}
function scrolldiv_setHeight(newHeight)
{
document.getElementById('dhtmlgoodies_scrolldiv').style.height = newHeight + 'px';
document.getElementById('scrolldiv_parentContainer').style.height = newHeight + 'px';
document.getElementById('scrolldiv_slider').style.height = newHeight + 'px';
document.getElementById('scrolldiv_scrollbar').style.height = newHeight-40 + 'px';
}
function setSliderBgColor(rgbColor)
{
document.getElementById('scrolldiv_scrollbar').style.backgroundColor = rgbColor;
document.getElementById('scrolldiv_scrollUp').style.backgroundColor = rgbColor;
document.getElementById('scrolldiv_scrollDown').style.backgroundColor = rgbColor;
}
function setContentBgColor(rgbColor)
{
document.getElementById('scrolldiv_parentContainer').style.backgroundColor = rgbColor;
}
function setScrollButtonSpeed(newScrollButtonSpeed)
{
scrollbuttonSpeed = newScrollButtonSpeed;
}
function setScrollTimer(newInterval)
{
scrollTimer = newInterval;
}
</script>
</head>
<body>
<div id="dhtmlgoodies_scrolldiv">
<div id="scrolldiv_parentContainer">
<div id="scrolldiv_content">这是一个DIV层,加入了一个滚动条功能,当超出范围的时候便会自动出现,你可以拖动滚动条看看效果哦。<br>
</div>
</div>
<div id="scrolldiv_slider">
<div id="scrolldiv_scrollUp"><img src="http://www.codefans.net/jscss/demoimg/200905/arrow_up.gif"></div>
<div id="scrolldiv_scrollbar">
<div id="scrolldiv_theScroll"><span></span></div>
</div>
<div id="scrolldiv_scrollDown"><img src="http://www.codefans.net/jscss/demoimg/200905/arrow_down.gif"></div>
</div>
</div>
<script type="text/javascript">
scrolldiv_setColor('#317082');
setSliderBgColor('#E2EBED');
setContentBgColor('#FFFFFF');
setScrollButtonSpeed(1);
setScrollTimer(5);
scrolldiv_setWidth(450);
scrolldiv_setHeight(400);
scrolldiv_initScroll();
</script>
</body>
</html>