Foros del Web » Creando para Internet » CSS »

Activar animation cuando el usuario la tiene en frente

Estas en el tema de Activar animation cuando el usuario la tiene en frente en el foro de CSS en Foros del Web. Buenas, tengo un duda muy sencilla que seguro que me podéis solucionar en un "plis plas". En mi web tengo el siguiente bloque: @import url("http://static.forosdelweb.com/clientscript/vbulletin_css/geshi.css"); ...
  #1 (permalink)  
Antiguo 10/08/2014, 19:40
 
Fecha de Ingreso: abril-2009
Ubicación: En foros del web, normalmente en Web general, HTML y CSS.
Mensajes: 258
Antigüedad: 15 años, 8 meses
Puntos: 3
Activar animation cuando el usuario la tiene en frente

Buenas, tengo un duda muy sencilla que seguro que me podéis solucionar en un "plis plas".

En mi web tengo el siguiente bloque:

Código HTML:
Ver original
  1. <article class="two">
  2.     <section class="text">
  3.         <p class="quest">Título</p><br />
  4.         <p class="answer">Texto</p>
  5.     </section>

Y le tengo puesto una animación a la clase "quest" y otra a la clase "answer" con CSS:

Código CSS:
Ver original
  1. section.presentation article.two section.text {
  2.     width: 50%;
  3. }
  4.  
  5. section.presentation article.two section.text p.quest {
  6.     font-size: 0.6em;
  7.     animation: show-quest 1.5s;
  8. }
  9.  
  10. section.presentation article.two section.text p.answer {
  11.     font-size: 0.4em;  
  12.     animation: show-answer 1.6s;
  13.     animation-delay: 1s;
  14.     -webkit-animation-delay: 1s
  15. }

Las animaciones las hago con keyframes y funcionan perfectamente, no pongo el código porque es muy largo pero si es necesario me lo comentáis y lo coloco sin problema.

Ahora, antes de llegar al bloque de la animación hay otros bloques y textos.

Lo que no consigo hacer es que la animación se active únicamente cuando el usuario baja la página hasta tener en frente el article que la contiene. Por tanto, nada mas cargar la página se ejecuta y cuando el usuario llega abajo no la ve ¡dish!.

He intentado hacerlo con las pseudo-clases hover y focus pero nada. Es muy muy muy sencillo pero no lo veo claro y necesito una ayudita.

En definitiva: Necesito que los animation se ejecuten solo cuando el usuario las tenga en frente.

Thanks. Un saludo.
__________________
¿Por qué Anónimo?, porque como está el mundo no podemos considerarnos humanos...
  #2 (permalink)  
Antiguo 10/08/2014, 20:53
Avatar de AitorDB  
Fecha de Ingreso: agosto-2014
Ubicación: Cádiz, España
Mensajes: 52
Antigüedad: 10 años, 4 meses
Puntos: 5
Mira esto, quizá te oriente, he pensado en medir el scroll del usuario, aunque tendrás que tener en cuenta el tamaño de la pantalla/zoom porque el usuario podría verlo sin necesidad de scroll... No se, supongo que es complicado, seguramente alguien sepa más de este tema que yo, pero espero aportar mi granito de arena.

http://voragine.net/weblogs/como-detectar-si-se-esta-haciendo-scroll-en-una-pagina-y-como-cuantificarlo-con-jquery

Suerte!
  #3 (permalink)  
Antiguo 10/08/2014, 23:52
Avatar de Alexis88
Philosopher
 
Fecha de Ingreso: noviembre-2011
Ubicación: Tacna, Perú
Mensajes: 5.552
Antigüedad: 13 años, 1 mes
Puntos: 977
Respuesta: Activar animation cuando el usuario la tiene en frente

Para ejecutar una animación en el momento en el que el usuario visualice un elemento (suponiendo que al inicio no pueda porque este se encuentra más abajo), necesitas calcular la altura desplazada de la barra vertical de desplazamiento y realizar una comparación con la altura del elemento menos la del documento, para lo cual necesariamente tendrás que echar mano de JavaScript. Aquí puedes ver un pequeño ejemplo que hice.

Saludos
__________________
«Juro por mi vida y mi amor por ella, que jamás viviré para el provecho de otro hombre, ni le pediré a otro hombre que viva para el mío».

Ayn Rand
  #4 (permalink)  
Antiguo 11/08/2014, 01:39
 
Fecha de Ingreso: abril-2009
Ubicación: En foros del web, normalmente en Web general, HTML y CSS.
Mensajes: 258
Antigüedad: 15 años, 8 meses
Puntos: 3
Respuesta: Activar animation cuando el usuario la tiene en frente

Buenas:

Gracias por las respuestas, a ver si me podéis echar un cable porque he intentado adaptarlo a mi código y no chuta aunque sea una tontería (me he basado en el ejemplo: http://voragine.net/weblogs/como-det...rlo-con-jquery ). Vamos a suponer que hay una única animación para dejarlo más sencillo aún:

Código HTML:
Ver original
  1. <article class="two">
  2.         <section class="text">
  3.             <p class="quest anim">Título</p><br />
  4.         </section>
  5.     </article>

La clase "quest" es la que tendrá el <p> en cualquier caso y la clase "anim" será la que se le quite o añada según se deba reproducir o no la animación.

Código CSS:
Ver original
  1. section.presentation article.two section.text {
  2.     width: 50%;
  3. }
  4.  
  5. section.presentation article.two section.text p.quest {
  6.     font-size: 0.6em;
  7. }
  8.  
  9. Esta la clase que posee la animación:
  10.  
  11. section.presentation article.two section.text p.anim {
  12.     animation: show-quest 1.5s;
  13. }

La función que hay en el ejemplo la he colocado dentro de etiquetas "<script>" en el "<head>", no sé si es correcto.

Código Javascript:
Ver original
  1. <head>
  2.     <script>
  3.         $(function () {
  4.           var $win = $(window);
  5.           var $pos = 450;
  6.           $win.scroll(function () {
  7.              if ($win.scrollTop() <= $pos)
  8.                $('.quest').removeClass('anim');
  9.              else {
  10.                $('.quest').addClass('anim');
  11.              }
  12.            });
  13.         });
  14.     </script>
  15. </head>
__________________
¿Por qué Anónimo?, porque como está el mundo no podemos considerarnos humanos...
  #5 (permalink)  
Antiguo 11/08/2014, 02:25
Avatar de pzin
Moderata 😈
 
Fecha de Ingreso: julio-2002
Ubicación: Islas Canarias
Mensajes: 10.489
Antigüedad: 22 años, 4 meses
Puntos: 2114
Respuesta: Activar animation cuando el usuario la tiene en frente

Se supone que por defecto tienes que quitar la clase del HTML ¿no?
__________________
(:
  #6 (permalink)  
Antiguo 11/08/2014, 05:23
 
Fecha de Ingreso: abril-2009
Ubicación: En foros del web, normalmente en Web general, HTML y CSS.
Mensajes: 258
Antigüedad: 15 años, 8 meses
Puntos: 3
Respuesta: Activar animation cuando el usuario la tiene en frente

Cita:
Se supone que por defecto tienes que quitar la clase del HTML ¿no?
¡Cierto!, lo he dejado así:
Código HTML:
Ver original
  1. <article class="two">
  2.    <section class="text">
  3.    <p class="quest">Título</p><br />
  4.    </section>

Sin embargo sigue sin activarse en el momento correcto. ¿Podría alguien probar el código siendo tan cortito y decirme dónde está el problema?.

Gracias pzin. Un saludo.
__________________
¿Por qué Anónimo?, porque como está el mundo no podemos considerarnos humanos...
  #7 (permalink)  
Antiguo 11/08/2014, 08:24
Avatar de AitorDB  
Fecha de Ingreso: agosto-2014
Ubicación: Cádiz, España
Mensajes: 52
Antigüedad: 10 años, 4 meses
Puntos: 5
Respuesta: Activar animation cuando el usuario la tiene en frente

Cuando dices el momento correcto ¿te refieres a que el usuario sigue sin verlo?, ¿que solo lo ve a medias?
  #8 (permalink)  
Antiguo 11/08/2014, 12:03
 
Fecha de Ingreso: abril-2009
Ubicación: En foros del web, normalmente en Web general, HTML y CSS.
Mensajes: 258
Antigüedad: 15 años, 8 meses
Puntos: 3
Respuesta: Activar animation cuando el usuario la tiene en frente

Cita:
Se supone que por defecto tienes que quitar la clase del HTML ¿no?
Cuando el usuario ha bajado 450 píxeles.
__________________
¿Por qué Anónimo?, porque como está el mundo no podemos considerarnos humanos...
  #9 (permalink)  
Antiguo 11/08/2014, 13:36
 
Fecha de Ingreso: abril-2009
Ubicación: En foros del web, normalmente en Web general, HTML y CSS.
Mensajes: 258
Antigüedad: 15 años, 8 meses
Puntos: 3
Respuesta: Activar animation cuando el usuario la tiene en frente

Un cable please, seguro que alguien puede ver el problema en un plis plas.

Gracias.
__________________
¿Por qué Anónimo?, porque como está el mundo no podemos considerarnos humanos...

Etiquetas: frente, hover, página, usuario, width
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 01:59.