--- title: Galería de imágenes slug: Learn/JavaScript/Building_blocks/Image_gallery translation_of: Learn/JavaScript/Building_blocks/Image_gallery original_slug: Learn/JavaScript/Building_blocks/Galeria_de_imagenes ---
Ahora que hemos analizado los bloques de construcción fundamentales de JavaScript, pongamos a prueba tu conocimiento de bucles, funciones, condicionales y eventos, creando un elemento que comumente vemos en muchos sitios web, una Galería de imágenes "motorizada" por JavaScript .
Prerequisitos: | Antes de intentar esta evaluación deberías de haber trabajado con todos los artículos en éste módulo. |
---|---|
Objetivo: | Evaluar la comprensión de los bucles, funciones, condicionales y eventos de JavaScript.. |
Para realizar esta evaluación, debería descárgarse archivoZip para el ejemplo, descomprímalo en algún lugar de su computadora y haga el ejercicio localmente para empezar.
Opcionalmente, puedes usar un sitio como JSBin o Glitch para realizar tu evaluación. Puede pegar el HTML, CSS y JavaScript dentro de uno de estos editores online. Si el editor en línea que está utilizando no tiene paneles JavaScript / CSS separados, siéntase libre de ponerlos en línea <script> / <style> elementos dentro de la página HTML.
Nota: Si se atascascas con algo, entonces pregúntenos para ayudarlo — vea la sección de {{anch("evaluación o ayuda adicional")}} al final de esta página.
Ha sido provisto con algún contenido de HTML, CSS e imágenes, también algunas líneas de código en JavaScript; necesitas escribir las líneas de código en JavaScript necesatio para transformarse en un programa funcional. El HTML body luce así:
<h1>Image gallery example</h1> <div class="full-img"> <img class="displayed-img" src="images/pic1.jpg"> <div class="overlay"></div> <button class="dark">Darken</button> </div> <div class="thumb-bar"> </div>
El ejemplo se ve así:
Las partes más interesantes del archivo example's CSS :
full-img <div>
— the <img>
in which the full-sized image is displayed, an empty <div>
that is sized to be the same size as the <img>
and put right over the top of it (this is used to apply a darkening effect to the image via a semi-transparent background color), and a <button>
that is used to control the darkening effect.thumb-bar <div>
(so-called "thumbnail" images) to 20%, and floats them to the left so they sit next to one another on a line.Your JavaScript needs to:
<img>
element inside the thumb-bar <div>
that embeds that image in the page.onclick
handler to each <img>
inside the thumb-bar <div>
so that when they are clicked, the corresponding image is displayed in the displayed-img <img>
element.onclick
handler to the <button>
so that when it is clicked, a darken effect is applied to the full-size image. When it is clicked again, the darken effect is removed again.To give you more of an idea, have a look at the finished example (no peeking at the source code!)
The following sections describe what you need to do.
We've already provided you with lines that store a reference to the thumb-bar <div>
inside a constant called thumbBar
, create a new <img>
element, set its src
attribute to a placeholder value xxx
, and append this new <img>
element inside thumbBar
.
You need to:
xxx
placeholder value with a string that will equal the path to the image in each case. We are setting the value of the src
attribute to this value in each case. Bear in mind that in each case, the image is inside the images directory and its name is pic1.jpg
, pic2.jpg
, etc.In each loop iteration, you need to add an onclick
handler to the current newImage
— this handler should find the value of the src
attribute of the current image. Set the src
attribute value of the displayed-img <img>
to the src
value passed in as a parameter.
That just leaves our darken/lighten <button>
— we've already provided a line that stores a reference to the <button>
in a constant called btn
. You need to add an onclick
handler that:
<button>
— you can again achieve this by using getAttribute()
."dark"
, changes the <button>
class to "light"
(using setAttribute()
), its text content to "Lighten", and the {{cssxref("background-color")}} of the overlay <div>
to "rgba(0,0,0,0.5)"
."dark"
, changes the <button>
class to "dark"
, its text content back to "Darken", and the {{cssxref("background-color")}} of the overlay <div>
to "rgba(0,0,0,0)"
.The following lines provide a basis for achieving the changes stipulated in points 2 and 3 above.
btn.setAttribute('class', xxx); btn.textContent = xxx; overlay.style.backgroundColor = xxx;
If you would like your work assessed, or are stuck and want to ask for help:
{{PreviousMenu("Learn/JavaScript/Building_blocks/Events", "Learn/JavaScript/Building_blocks")}}