Dá se to udělat tak, že se ovládané bloky page a page2 vloží do obalových bloků, kterým se nastaví šířky.
Javascriptem se vnitřním blokům nastavuje šířka v procentech od 0% do 100% (a při skrývání od 100% do 0%)
Fungující ukázka (testováno pouze v IE a FF)
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="cs">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>Over/Out javascript scroller</title>
<script type="text/javascript">
var pocet_kroku=20; /* dvacet kroků */
var trvani=500; /* 2x500 = 1000ms = 1s */
function nuluj(el) {
clearInterval(el.timer);
el.delta=null;
el.timer=null;
el.style.width = "";
}
function krok(id) {
var el = document.getElementById(id);
var act_w = parseInt("0"+el.style.width,10);
if ((el.delta>0)&&(act_w > 99)) {nuluj(el);return}
if ((el.delta<0)&&(act_w < 1)) {nuluj(el); el.style.display="none";return}
el.style.width = (act_w + el.delta * 100/pocet_kroku) +"%";
}
function skryj(theDiv) {
var elem = document.getElementById(theDiv);
if (elem.style.display=="none") return; /* Uz je skryty !!! */
elem.style.display = "block";
if (elem.style.width=="") { elem.style.width = "100%"; }
elem.delta = -1;
if (!elem.timer) elem.timer=setInterval("krok('"+theDiv+"')",trvani/pocet_kroku);
}
function zobraz(theDiv) {
var elem = document.getElementById(theDiv);
if (elem.style.display=="block") if (!elem.timer) return; /* Uz je zobrazeny !!! */
elem.style.display = "block";
if (elem.style.width=="") { elem.style.width = "0%" }
elem.delta = +1;
if (!elem.timer) elem.timer=setInterval("krok('"+theDiv+"')",trvani/pocet_kroku);
}
</script>
<style type="text/css">
* {margin:0;padding:0}
ul
{
letter-spacing: 5px;
font: 25px/1 "Lucida Console","Courier New",monospace;
list-style: none;
margin-top:1em;
}
li
{
position:relative; /****** nutné pokud použiješ position:absolute *******/
width:16ex; /****** nutné nastavit šířku *************************/
margin-left:1em;
height: 3ex;
}
#page,#page2
{
position:absolute;
left: 0px;
top: 0px;
color:red;
background: yellow;
border: 1px solid red;
padding-left: 2px;
overflow:hidden; /***** nutné (zkus to bez něj) *************/
}
#rizeni /*********** OVLÁDACÍ PRVEK *************/
{
width: 8em;
color: yellow;
background: black;
border: 1px double black;
margin:2em;
text-align: center;
cursor:pointer;
}
</style>
</head>
<body>
<ul>
<li><div id="page" style="display:block">0123456789</div></li>
<li><div id="page2" style="display:none">ABCDEFGHIJ</div></li>
</ul>
<div id="rizeni" onmouseover="skryj('page');zobraz('page2');" onmouseout="zobraz('page');skryj('page2');">
Zkus over/out
</div>
</body>
</html>
Totéž v připojeném souboru: