137 lines
		
	
	
		
			2.8 KiB
		
	
	
	
		
			Markdown
		
	
	
	
	
	
			
		
		
	
	
			137 lines
		
	
	
		
			2.8 KiB
		
	
	
	
		
			Markdown
		
	
	
	
	
	
| ---
 | |
| id: 587d78a7367417b2b2512ae1
 | |
| title: Crear movimiento usando animación CSS
 | |
| challengeType: 0
 | |
| videoUrl: 'https://scrimba.com/c/c7amZfW'
 | |
| forumTopicId: 301051
 | |
| dashedName: create-movement-using-css-animation
 | |
| ---
 | |
| 
 | |
| # --description--
 | |
| 
 | |
| Cuando los elementos tienen una `position`, como `fixed` o `relative`, las propiedades de desplazamiento CSS `right`, `left`, `top` y `bottom` se pueden usar en las reglas de animación para crear movimiento.
 | |
| 
 | |
| Como se muestra en el siguiente ejemplo, puedes empujar el elemento hacia abajo y luego hacia arriba estableciendo la propiedad `top` fotograma clave (keyframe) a `50%` en 50px, pero estableciéndolo en 0px para el primer fotograma clave (`0%`) y el último a (`100%`).
 | |
| 
 | |
| ```css
 | |
| @keyframes rainbow {
 | |
|   0% {
 | |
|     background-color: blue;
 | |
|     top: 0px;
 | |
|   }
 | |
|   50% {
 | |
|     background-color: green;
 | |
|     top: 50px;
 | |
|   }
 | |
|   100% {
 | |
|     background-color: yellow;
 | |
|     top: 0px;
 | |
|   }
 | |
| }
 | |
| ```
 | |
| 
 | |
| # --instructions--
 | |
| 
 | |
| Agrega un movimiento horizontal a la animación `div`. Usando la propiedad desplazamiento `left`, agrega a la regla `@keyframes` para que el arcoíris (rainbow) comience en 0 píxeles en `0%`, se mueva a 25 píxeles en `50%`, y termine en -25 píxeles en `100%`. No reemplaces la propiedad `top` en el editor; la animación debe tener movimiento vertical y horizontal.
 | |
| 
 | |
| # --hints--
 | |
| 
 | |
| La regla `@keyframes` para `0%` debe usar el desplazamiento `left` de 0px.
 | |
| 
 | |
| ```js
 | |
| assert(code.match(/[^50]0%\s*?{[\s\S]*?left:\s*?0px(;[\s\S]*?|\s*?)}/gi));
 | |
| ```
 | |
| 
 | |
| La regla `@keyframes` para `50%` debe usar el desplazamiento `left` de 25px.
 | |
| 
 | |
| ```js
 | |
| assert(code.match(/50%\s*?{[\s\S]*?left:\s*?25px(;[\s\S]*?|\s*?)}/gi));
 | |
| ```
 | |
| 
 | |
| La regla `@keyframes` para `100%` debe usar el desplazamiento `left` de -25px.
 | |
| 
 | |
| ```js
 | |
| assert(code.match(/100%\s*?{[\s\S]*?left:\s*?-25px(;[\s\S]*?|\s*?)}/gi));
 | |
| ```
 | |
| 
 | |
| # --seed--
 | |
| 
 | |
| ## --seed-contents--
 | |
| 
 | |
| ```html
 | |
| <style>
 | |
|   div {
 | |
|     height: 40px;
 | |
|     width: 70%;
 | |
|     background: black;
 | |
|     margin: 50px auto;
 | |
|     border-radius: 5px;
 | |
|     position: relative;
 | |
|   }
 | |
| 
 | |
|   #rect {
 | |
|     animation-name: rainbow;
 | |
|     animation-duration: 4s;
 | |
|   }
 | |
| 
 | |
|   @keyframes rainbow {
 | |
|     0% {
 | |
|       background-color: blue;
 | |
|       top: 0px;
 | |
| 
 | |
|     }
 | |
|     50% {
 | |
|       background-color: green;
 | |
|       top: 50px;
 | |
| 
 | |
|     }
 | |
|     100% {
 | |
|       background-color: yellow;
 | |
|       top: 0px;
 | |
| 
 | |
|     }
 | |
|   }
 | |
| </style>
 | |
| 
 | |
| <div id="rect"></div>
 | |
| ```
 | |
| 
 | |
| # --solutions--
 | |
| 
 | |
| ```html
 | |
| <style>
 | |
|   div {
 | |
|     height: 40px;
 | |
|     width: 70%;
 | |
|     background: black;
 | |
|     margin: 50px auto;
 | |
|     border-radius: 5px;
 | |
|     position: relative;
 | |
|   }
 | |
| 
 | |
|   #rect {
 | |
|     animation-name: rainbow;
 | |
|     animation-duration: 4s;
 | |
|   }
 | |
| 
 | |
|   @keyframes rainbow {
 | |
|     0% {
 | |
|       background-color: blue;
 | |
|       top: 0px;
 | |
|       left: 0px;
 | |
|     }
 | |
|     50% {
 | |
|       background-color: green;
 | |
|       top: 50px;
 | |
|       left: 25px;
 | |
|     }
 | |
|     100% {
 | |
|       background-color: yellow;
 | |
|       top: 0px;
 | |
|       left: -25px;
 | |
|     }
 | |
|   }
 | |
| </style>
 | |
| <div id="rect"></div>
 | |
| ```
 |