Te dejo el script que suelo usar:
Contenido de "scrollbars.js":
Código :
function P7_VScroller(el,dr,ty,oy,spd) { //v1.7 by PVII
var g,gg,fr,sp,pa='',slw=true,m=false,h,ly;ty=parseInt(ty);
if((g=MM_findObj(el))!=null){gg=(document.layers)?g:g.style;}else{return;}
if(dr=="Stop"){if(g.toMove){clearTimeout(g.p7Magic);}g.toMove=false;}
if((parseInt(navigator.appVersion)>4 || navigator.userAgent.indexOf("MSIE")>-1)&& !window.opera){pa="px";}
if(navigator.userAgent.indexOf("NT")>-1 || navigator.userAgent.indexOf("Windows 2000")>-1){slw=false;}
if(spd=="Slow"){sp=(slw)?2:1;fr=(slw)?40:30;}else if(spd=="Medium"){sp=(slw)?4:1;fr=(slw)?40:10;
}else{sp=(slw)?8:4;fr=(slw)?40:10;}if(spd=="Warp"){sp=5000;}var yy=parseInt(gg.top);if(isNaN(yy)){
if(g.currentStyle){yy=parseInt(g.currentStyle.top);}else if(document.defaultView&&document.defaultView.getComputedStyle){
yy=parseInt(document.defaultView.getComputedStyle(g,"").getPropertyValue("top"));}else{yy=0;}}
if(document.all || document.getElementById){h=parseInt(g.offsetHeight);
if(!h){h=parseInt(g.style.pixelHeight);}
}else if(document.layers){h=parseInt(g.clip.height);}ly=ty+parseInt(oy)-h;
if(dr=="Down"){if(yy>ly){m=true;yy-=sp;if(yy<ly){yy=ly;}}}
if(dr=="Up"){if(yy<ty){m=true;yy+=sp;if(yy>ty){yy=ty;}}}
if(dr=="Reset"){gg.top=ty+pa;if(g.toMove){clearTimeout(g.p7Magic);}g.toMove=false;}
if(m){gg.top=yy+pa;if(g.toMove){clearTimeout(g.p7Magic);}g.toMove=true;
eval("g.p7Magic=setTimeout(\"P7_VScroller('"+el+"','"+dr+"',"+ty+","+oy+",'"+spd+"')\","+fr+")");
}else{g.toMove=false;}
(No es de mi propiedad)
En el Html...
En HEAD:
Código :
<script language="javascript" src="scrollbars.js"></script>
En BODY:
Código :
<div id="content_texto">
<div id="flecha1">
<a href="#" onMouseDown="P7_VScroller('texto','Up',0,0,'Fast');" onMouseUp="P7_VScroller('texto','Stop',0,0,'Fast');">
<img src="Images/up.gif" alt="desplazar texto hacia arriba" width="15" height="15" border="0" class="borde0"></a>
</div>
<div id="flecha2">
<a href="#" onMouseDown="P7_VScroller('texto','Down',0,330,'Fast')" onMouseUp="P7_VScroller('texto','Stop',0,0,'Fast');">
<img src="Images/dn.gif" alt="desplazar texto hacia abajo" width="15" height="15" border="0" class="borde0"></a>
</div>
<div id="texto">
<p>Texto con scroll</p>
</div>
</div>
CSS:
Código :
#content_texto {
position:relative;
width:253px;
height:330px;
z-index:9;
left: -2px;
top: 4px;
overflow: hidden; /* Detalle muy importante */
text-align:justify;
}
#flecha1 {
position:absolute;
width:15px;
height:15px;
z-index:1;
left: 234px;
top: 21px;
}
#flecha2 {
position:absolute;
width:15px;
height:15px;
z-index:1;
left: 234px;
top: 308px;
}
#texto {
position:absolute;
width:230px;
z-index:8;
left: 0px;
top: 0px;
}
Si te das cuenta encierro en una relativa todo para posicionarlo de forma absoluta y el texto si se excede lo escondo con su propiedad overflow.
A mi me funciona, echale un vistazo