emprear, gracias por ser tan sutil/suave en tu critica
yo seré algo mas dura conmigo misma
compatibilidades Cita: rules --> ie9-, chrome, safari
cssRules --> ie9+, chrome, safari, firefox, opera
getComputedStyle --> i9+, chrome, safari, firefox y opera
de tal modo que tendremos que usar ambas propiedades (rules y cssRules). se solventa con una condicional terciaria sobre la propiedad
ahora viene la gran critica. si os fijáis a cada tick del temporizador se obtiene el css computado. un gran error. solamente hay que obtenerlo en la primera invocación y después se le suma el desplazamiento y el resultado se le pasa como parámetro y un largo etcétera
Cita: <!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" xml:lang="es" lang="es">
<head>
<meta http-equiv="Content-Type" content="application/xhtml; charset=utf-8" />
<title></title>
<style type="text/css">
body {
font:76% normal verdana,arial,tahoma;
}
#bloqueIzq {
position:absolute;
left:0;
top:8em;
width:10em;
line-height:3em;
background:#99ccff;
border:1px solid #003366;
white-space:nowrap;
padding:0.5em;
}
#bloqueDer {
position:absolute;
right:0;
top:8em;
width:10em;
line-height:3em;
background:#99ccff;
border:1px solid #003366;
white-space:nowrap;
padding:0.5em;
}
</style>
</head>
<body>
<div id="bloqueIzq">
bloque izquierdo
</div>
<div id="bloqueDer">
bloque derecho
</div>
<script type="text/javascript">
var intervalo = '';
var hoja = document.styleSheets[0];
var regla = hoja.cssRules? hoja.cssRules : hoja.rules;
// todos los navegadores incluido ie8-
//var leftProp = regla[1].style['left'];
//var rightProp = regla[2].style['right'];
// todos los navegadores excluido ie8-
var leftProp = parseInt(document.defaultView.getComputedStyle(doc ument.getElementById('bloqueIzq'), null).getPropertyValue('left'));
var rightProp = parseInt(document.defaultView.getComputedStyle(doc ument.getElementById('bloqueDer'), null).getPropertyValue('right'));
(fnc = function(l, r, lRule, rRule, ancho) {
var left = l+5;
var right = r+5;
intervalo = setTimeout(function() {
lRule.style['left'] = left + 'px';
rRule.style['right'] = right + 'px';
if ((left+30) >= ancho) {
clearTimeout(intervalo);
} else {
fnc(left, right, lRule, rRule, ancho);
}
},20);
}
)(parseInt(leftProp), parseInt(rightProp), regla[1], regla[2], parseInt(screen.width)/2);
</script>
</body>
</html>
para que sea compatible con versiones antiguas de ie, se descomenta y comenta las variables leftProp y rightProp