Foros del Web » Programando para Internet » Javascript »

imagenes en movimiento

Estas en el tema de imagenes en movimiento en el foro de Javascript en Foros del Web. hola amigos alguien me podria recomendar algun manual para poder lograr hacer que me salga una imagen de la derecha y otra de la izquierda ...
  #1 (permalink)  
Antiguo 02/11/2012, 22:45
 
Fecha de Ingreso: abril-2011
Ubicación: Peru
Mensajes: 486
Antigüedad: 13 años, 1 mes
Puntos: 9
imagenes en movimiento

hola amigos
alguien me podria recomendar algun manual para poder lograr
hacer que me salga una imagen de la derecha y otra de la izquierda para que terminen en el medio de mi web pero una encima de la mitad de la otra


gracias
  #2 (permalink)  
Antiguo 03/11/2012, 06:41
Avatar de IsaBelM
Colaborador
 
Fecha de Ingreso: junio-2008
Mensajes: 5.032
Antigüedad: 15 años, 10 meses
Puntos: 1012
Respuesta: imagenes en movimiento

aunque posteas en el foro de javascript, permiteme que te de una respuesta css3. propiedades de animación. ten en cuenta que ie no soporta esas propiedades
__________________
if(ViolenciaDeGénero) {alert('MUJER ASESINADA');}
  #3 (permalink)  
Antiguo 03/11/2012, 08:11
 
Fecha de Ingreso: abril-2011
Ubicación: Peru
Mensajes: 486
Antigüedad: 13 años, 1 mes
Puntos: 9
Respuesta: imagenes en movimiento

Hola IsaBelM

gracia por el dato css3
pero dime ie no soporta animacion en css3 o en js

porque lo que trato de conseguir es algo como esto
http://www.toyotaperu.com.pe/advantage/
y que se vea en todos los navegadores desktop y moviles

gracias

Última edición por tunait; 05/11/2012 a las 04:25 Razón: remover link reportado como alerta de virus
  #4 (permalink)  
Antiguo 03/11/2012, 15:48
Avatar de IsaBelM
Colaborador
 
Fecha de Ingreso: junio-2008
Mensajes: 5.032
Antigüedad: 15 años, 10 meses
Puntos: 1012
Respuesta: imagenes en movimiento

lo que muestras es un *swf. con javascript puedes hacer esto. es un ejemplo que tendrás que desarrollar a tus necesidades
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 ancho = parseInt(screen.width)/2, intervalo = '';
(fnc = function() {
intervalo = setTimeout(function() {

//var l = parseInt(document.defaultView.getComputedStyle(doc ument.getElementById('bloqueIzq'), null).getPropertyValue('left'));
//var r = parseInt(document.defaultView.getComputedStyle(doc ument.getElementById('bloqueDer'), null).getPropertyValue('right'));

var l = parseInt(document.styleSheets[0].rules[1].style['left']);
var r = parseInt(document.styleSheets[0].rules[2].style['right']);

document.styleSheets[0].rules[1].style['left'] = l+5+'px';
document.styleSheets[0].rules[2].style['right'] = r+5+'px';

if ((l+30) >= ancho) {
clearTimeout(intervalo);
} else {
fnc();
}

},20);
}
)();
</script>
</body>
</html>
getComputedStyle es compatible con todos los navegadores modernos. para tener compatibilidad con versiones antiguas usa styleSheets

en cuanto a compatibilidad con móviles, ni idea
__________________
if(ViolenciaDeGénero) {alert('MUJER ASESINADA');}
  #5 (permalink)  
Antiguo 03/11/2012, 16:29
Avatar de emprear
Colaborador
 
Fecha de Ingreso: junio-2007
Ubicación: me mudé
Mensajes: 8.388
Antigüedad: 16 años, 10 meses
Puntos: 1567
Respuesta: imagenes en movimiento

Buena Script @IsaBelM, pero creo que para hacerla compatible la propiedad a usar es cssRules y no rules

@rascabuchitos
A esta altura, la palabra móviles, define tantas cosas que habria que ser más preciso.
Saludos
__________________
La voz de las antenas va, sustituyendo a Dios.
Cuando finalice la mutación, nueva edad media habrá
S.R.
  #6 (permalink)  
Antiguo 04/11/2012, 02:12
 
Fecha de Ingreso: abril-2011
Ubicación: Peru
Mensajes: 486
Antigüedad: 13 años, 1 mes
Puntos: 9
Respuesta: imagenes en movimiento

muy buen script IsaBelM
voy a combinarlo con este que tengo

http://fenicia.org/desplazamiento/

emprear
por ahora moviles solo lo voy a tomar como tabletas pero si se puede tambien como smartphones y me pongo a investigar ya sobre cssRules y no rules


Gracias
  #7 (permalink)  
Antiguo 04/11/2012, 09:00
Avatar de IsaBelM
Colaborador
 
Fecha de Ingreso: junio-2008
Mensajes: 5.032
Antigüedad: 15 años, 10 meses
Puntos: 1012
Respuesta: imagenes en movimiento

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
__________________
if(ViolenciaDeGénero) {alert('MUJER ASESINADA');}
  #8 (permalink)  
Antiguo 04/11/2012, 15:11
Avatar de emprear
Colaborador
 
Fecha de Ingreso: junio-2007
Ubicación: me mudé
Mensajes: 8.388
Antigüedad: 16 años, 10 meses
Puntos: 1567
Respuesta: imagenes en movimiento

doc ument.getElementById
Highlight @IsabelM, highlight por favor ...

Dejo una variante, la probé en un par de celulares con navegadores bastante limitados y funciona, aunque el desplazamiento no es muy suave que digamos, va como por etapas.
En IE 7 a 9 y el resto, funciona Ok
Código HTML:
Ver original
  1. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
  2. <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="es" lang="es">
  3. <meta http-equiv="Content-Type" content="application/xhtml; charset=utf-8" />
  4. <title>Desplazar capas</title>
  5. <style type="text/css">
  6. html,body {
  7. margin: 0; padding: 0;
  8. }
  9. #bloqueIzq {
  10.  position:absolute;
  11.  left:0px;
  12.  top:2em;
  13.  width:50px;
  14.  background:#68A460;
  15.  border:1px solid #003366;
  16.  padding:5px;
  17.  z-index: 999;
  18.  margin: 0;
  19.  text-align: center;
  20.  }
  21. #bloqueDer {
  22.  position:absolute;
  23.  right:0px;
  24.  top:2em;
  25.  width:50px;
  26.  background:#99ccff;
  27.  border:1px solid #003366;
  28.  padding:5px;
  29.  z-index : 1;
  30.  margin: 0;
  31.  text-align: center;
  32.  }
  33.  </style>
  34. <script type="text/javascript">
  35. //<![CDATA[
  36. // Utilizando winH podemos hacer el efecto aún cuando se redimensione la ventana
  37. var winW;
  38. if (document.body && document.body.offsetWidth) {
  39. winW = document.body.offsetWidth;
  40. }
  41. if (document.compatMode=='CSS1Compat' &&
  42.    document.documentElement &&
  43.    document.documentElement.offsetWidth ) {
  44. winW = document.documentElement.offsetWidth;
  45. }
  46. if (window.innerWidth && window.innerHeight) {
  47. winW = window.innerWidth;
  48. }
  49.  
  50. var i = 0;
  51. var t;
  52. function mover(margen,demora){
  53. var pos = (winW/2)-margen; // margen igual a la cuarta parte del ancho del div (tener en cuenta posibles paddings laterales
  54. var capa = document.getElementById('bloqueIzq');
  55. var capa2 = document.getElementById('bloqueDer');
  56. i++;
  57. t= setTimeout(function() {
  58.            capa.style.left = i + 'px';
  59.            capa2.style.right = i + 'px';
  60.            mover(margen,demora);
  61.            if(i > pos){
  62.            clearTimeout(t);
  63.            }
  64.        }, demora);
  65. }
  66. //]]>
  67.  </head>
  68. <body onload="mover(15,1);">
  69. <div id="bloqueIzq">I</div>
  70. <div id="bloqueDer">D</div>
  71. </body>
  72. </html>

Saludos
__________________
La voz de las antenas va, sustituyendo a Dios.
Cuando finalice la mutación, nueva edad media habrá
S.R.
  #9 (permalink)  
Antiguo 04/11/2012, 15:39
 
Fecha de Ingreso: abril-2011
Ubicación: Peru
Mensajes: 486
Antigüedad: 13 años, 1 mes
Puntos: 9
Respuesta: imagenes en movimiento

muy buenos tips chicos
muchas gracias

y si, es definito
no mezclare esto http://fenicia.org/desplazamiento/
con lo que me han pasado sino que hare las dos por separado para tener un mas opciones

ya les comento

ps.
puedo usar la validacion de moviles de este codigo para mi primer ejemplo?
  #10 (permalink)  
Antiguo 04/11/2012, 17:43
Avatar de IsaBelM
Colaborador
 
Fecha de Ingreso: junio-2008
Mensajes: 5.032
Antigüedad: 15 años, 10 meses
Puntos: 1012
Respuesta: imagenes en movimiento

Cita:
Iniciado por emprear Ver Mensaje
doc ument.getElementById
Highlight @IsabelM, highlight por favor ...
continua juntandote con el "mal bicho" y verás como acabas

no se me había ocurrido usar offsetWidth por si se redimensionaba la página

pero en tu código observo un problema. ahora las propiedes left y right tienen un valor de 0. pero, y si en lugar de 0, fuese 200px?? al no leer el css computado, los bloques empezarán su desplazamiento desde la posición (left, right) 0
__________________
if(ViolenciaDeGénero) {alert('MUJER ASESINADA');}
  #11 (permalink)  
Antiguo 04/11/2012, 18:13
Avatar de emprear
Colaborador
 
Fecha de Ingreso: junio-2007
Ubicación: me mudé
Mensajes: 8.388
Antigüedad: 16 años, 10 meses
Puntos: 1567
Respuesta: imagenes en movimiento

Cita:
Iniciado por IsaBelM Ver Mensaje
continua juntandote con el "mal bicho" y verás como acabas


Mal bicho? No tengo idea a que te refieres
Te juro que fué de motus propio, copié y pegué y no funcionaba


no se me había ocurrido usar offsetWidth por si se redimensionaba la página

pero en tu código observo un problema. ahora las propiedes left y right tienen un valor de 0. pero, y si en lugar de 0, fuese 200px?? al no leer el css computado, los bloques empezarán su desplazamiento desde la posición (left, right) 0

Asumí que estaba pegadas a los bordes, voy a ver si se puede perfeccionar
__________________
La voz de las antenas va, sustituyendo a Dios.
Cuando finalice la mutación, nueva edad media habrá
S.R.
  #12 (permalink)  
Antiguo 04/11/2012, 19:18
Avatar de emprear
Colaborador
 
Fecha de Ingreso: junio-2007
Ubicación: me mudé
Mensajes: 8.388
Antigüedad: 16 años, 10 meses
Puntos: 1567
Respuesta: imagenes en movimiento

En tanto left y right sean valores conocidos, podemos solucionarlo pasando el valor inicial de i como tercer parámetro de la función

Código Javascript:
Ver original
  1. mover(margen,demora,i){
....
Código HTML:
Ver original
  1. <body onload="mover(15,1,200);">

Demo
http://foros.emprear.com/javascript/...pa_centro.html

Saludos
__________________
La voz de las antenas va, sustituyendo a Dios.
Cuando finalice la mutación, nueva edad media habrá
S.R.
  #13 (permalink)  
Antiguo 05/11/2012, 08:31
Avatar de IsaBelM
Colaborador
 
Fecha de Ingreso: junio-2008
Mensajes: 5.032
Antigüedad: 15 años, 10 meses
Puntos: 1012
Respuesta: imagenes en movimiento

sabia que ibas a ir por ahí

si queremos que el código sea rígido, tu opción es válida. pero si queremos que sea dinámico, hay que leer el css computado

ahora que me he fijado con mas detenimiento, veo que has cometido el mismo error que yo en mi primer código. se ha de evaluar a cada tick
Cita:
var pos = (winW/2)-margen; // margen igual a la cuarta parte del ancho del div (tener en cuenta posibles paddings laterales
var capa = document.getElementById('bloqueIzq');
var capa2 = document.getElementById('bloqueDer');
habría que pasarlos como parámetros
__________________
if(ViolenciaDeGénero) {alert('MUJER ASESINADA');}
  #14 (permalink)  
Antiguo 05/11/2012, 09:33
Avatar de emprear
Colaborador
 
Fecha de Ingreso: junio-2007
Ubicación: me mudé
Mensajes: 8.388
Antigüedad: 16 años, 10 meses
Puntos: 1567
Respuesta: imagenes en movimiento

y yo estaba seguro que continuabas por acá...

La idea primaria es responder a la pregunta concreta del usuario, basándonos desde luego en la información que se tiene, y si se quiere infiriendo la que no se dispone, en este caso, ancho y posición inicial de los elementos a desplazar. Y a partir de ahi, "engendremos", como dice el inefable @furoya, optimicemos y universalicemos.

Tampoco digo que lo que hemos hecho hasta ahora sea exactamente lo mismo que lo que está en
http://www.toyotaperu.com.pe/advantage/
pero proporciona elementos para que @rascabuchitos continue por su cuenta

De todas formas siempre es atractivo participar en el juego de realizar mejoras y voy a ir viendo como darle más "dinamismo a la cosa".

__________________
La voz de las antenas va, sustituyendo a Dios.
Cuando finalice la mutación, nueva edad media habrá
S.R.
  #15 (permalink)  
Antiguo 05/11/2012, 10:57
(Desactivado)
 
Fecha de Ingreso: noviembre-2002
Ubicación: Ciudad Autónoma de Buenos Aires
Mensajes: 2.367
Antigüedad: 21 años, 6 meses
Puntos: 317
Respuesta: imagenes en movimiento

¿Vos también haciendo espam?



Cita:
Iniciado por emprear
Highlight @IsabelM, highlight por favor ...
Cita:
Iniciado por emprear
Te juro que fué de motus propio, copié y pegué y no funcionaba
Si, por supuesto, hiciste lo que cualquiera con un mínimo de criterio ¿A quién se le puede ocurrir otra cosa?
(Aunque yo prefiero las [code], esas highlight me traen mil problemas.)


Y para que alguien a quien no nombro, pero miro

< @> < @>


no diga después que vengo nada más que a destacar su mal uso de las herramientas del Foro; aprovecho a dejarles esto.

Código:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" 
"http://www.w3c.org/TR/1999/REC-html401-19991224/loose.dtd">
<html>
<head>
<meta http-equiv=Content-Type content="text/html; charset=utf-8">
<title>ACERCA IMÁGENES.</title>
<script type="text/javascript">
var dist = 100;

function mueve() {
if(dist > 40) {
dist = dist - .25; 
document.getElementById("der").style.marginLeft = dist + "%";
document.getElementById("izq").style.marginRight = dist + "%";

setTimeout(mueve, 20);
}
}
onload = mueve;
</script>
<style type="text/css">
div {height: 128px; width: 100%; background-color: yellow; position: relative; }
#izq {display: inline; margin-right: 100%; position: absolute; right: 0px; }
#der {display: inline; margin-top: 24px; margin-left: 100%; position: absolute; left: 0; }
</style>

</head>
<body>
<div>
<img src="http://img197.imageshack.us/img197/2369/puzzleh.gif" id="der" />
<img src="http://img830.imageshack.us/img830/8478/puzzlev.gif" id="izq" />
</div>
</body>
</html>
  #16 (permalink)  
Antiguo 05/11/2012, 11:18
Avatar de emprear
Colaborador
 
Fecha de Ingreso: junio-2007
Ubicación: me mudé
Mensajes: 8.388
Antigüedad: 16 años, 10 meses
Puntos: 1567
Respuesta: imagenes en movimiento

Muy interesante, digo, las piezas del puzzle, las tenemeos que hacer coincidir?

__________________
La voz de las antenas va, sustituyendo a Dios.
Cuando finalice la mutación, nueva edad media habrá
S.R.
  #17 (permalink)  
Antiguo 05/11/2012, 13:42
(Desactivado)
 
Fecha de Ingreso: noviembre-2002
Ubicación: Ciudad Autónoma de Buenos Aires
Mensajes: 2.367
Antigüedad: 21 años, 6 meses
Puntos: 317
Respuesta: imagenes en movimiento

De ninguna manera. La idea es mostrar otra forma de animación. Al usar márgenes del ciento por ciento, nos estamos asegurando de que las imágenes vengan siempre "desde fuera", y al teminar en menos del cincuenta por ciento sabemos que antes de detenerse se van a cruzar. Más, menos, pero se cruzan.

En cambio de esta forma

Código:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" 
"http://www.w3c.org/TR/1999/REC-html401-19991224/loose.dtd">
<html>
<head>
<meta http-equiv=Content-Type content="text/html; charset=utf-8">
<title>CRUZA IMÁGENES.</title>
<script type="text/javascript">
var dist = 0;

function mueve() {
if(dist < 50) {
dist = dist + .25; 
document.getElementById("izq").style.marginLeft = dist + "%";
document.getElementById("der").style.marginRight = dist + "%";

setTimeout(mueve, 20);
}
}
onload = mueve;
</script>
<style type="text/css">
div {height: 128px; width: 100%; background-color: yellow; position: relative; }
#der {display: inline; margin-top: 24px; margin-right: 0%; position: absolute; right: 0px; }
#izq {display: inline; margin-left: 0%; position: absolute; left: 0; }
</style>

</head>
<body>
<div>
<img src="http://img197.imageshack.us/img197/2369/puzzleh.gif" id="der" />
<img src="http://img830.imageshack.us/img830/8478/puzzlev.gif" id="izq" />
</div>
</body>
</html>
arrancan visibles dentro de su caja (uno a cada lado) y se juntan hasta detenerse justo después de cruzarse totalmente.
  #18 (permalink)  
Antiguo 06/11/2012, 05:26
Avatar de IsaBelM
Colaborador
 
Fecha de Ingreso: junio-2008
Mensajes: 5.032
Antigüedad: 15 años, 10 meses
Puntos: 1012
Respuesta: imagenes en movimiento

para mi está claro. esta mano la gana furoya
__________________
if(ViolenciaDeGénero) {alert('MUJER ASESINADA');}
  #19 (permalink)  
Antiguo 06/11/2012, 06:21
(Desactivado)
 
Fecha de Ingreso: noviembre-2002
Ubicación: Ciudad Autónoma de Buenos Aires
Mensajes: 2.367
Antigüedad: 21 años, 6 meses
Puntos: 317
Respuesta: imagenes en movimiento

Qué espíritu competitivo tenés, querida.

Si fuera por "ganar", ni posteo donde estén ustedes porque las apuestas las tengo mil a uno, en contra.

Aunque alguno pueda pensar que mis códigos son mejores que los tuyos, porque no se cortan a causa de estar entre etiquetas de cita.
  #20 (permalink)  
Antiguo 07/11/2012, 03:06
 
Fecha de Ingreso: abril-2011
Ubicación: Peru
Mensajes: 486
Antigüedad: 13 años, 1 mes
Puntos: 9
Respuesta: imagenes en movimiento

maestros...¡¡¡¡
y me sigo esforzando para mantener mi dignidad como aprendiz...

Etiquetas: imagenes, movimiento
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 19:00.