
Galería Web
- AGR
- Web , Programación
- 19 Jan, 2025
Introducción
Este proyecto está diseñado para comprender las bases del desarrollo web, comenzando con HTML y CSS básicos y progresando a JavaScript interactivo. Se divide en cuatro etapas evolutivas, cada una añadiendo nuevas herramientas y funcionalidades.
Etapa 1: Galería Estática Básica
Proyecto: Creando una Galería de Imágenes
Objetivo
Aprender a crear una página web sencilla con una galería de imágenes.
Lo que vamos a usar
- Notepad (Bloc de notas en Windows).
- Archivos HTML y CSS (para crear y decorar la página).
- Carpeta de imágenes (con 10 fotos de su elección).
Paso a paso para hacer la página web
📌 Paso 1: Crear una carpeta para el proyecto
Tip
Accede al siguiente enlace y descarga la carpeta con el nombre web
📌 Paso 2: Elegir y guardar las imágenes
- Busca 10 imágenes de tus animales favoritos en Google.
- Haz clic derecho en cada imagen y selecciona “Guardar imagen como…”.
- Guarda todas las imágenes en la carpeta “img” dentro de la carpeta “Web”.
- Renombra las imágenes para que tengan nombres cortos y fáciles, por ejemplo:
panda.jpg
,leon.jpg
,tigre.jpg
, etc.
📌 Paso 3: Abre el archivo principal (index.html)
- Abre Notepad (Bloc de Notas).
- Copia el siguiente código en Notepad:
<!DOCTYPE html>
<html lang="es">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Mi Galería de Animales</title>
<link rel="stylesheet" href="styles.css">
</head>
<body>
<h1>Galería de Animales</h1>
<div class="gallery">
<figure>
<img src="img/panda.jpg" alt="Panda">
<figcaption>Panda</figcaption>
</figure>
<figure>
<img src="https://static.nationalgeographicla.com/files/styles/image_3200/public/nationalgeographic_2788792_0.webp?w=1600&h=900" alt="León">
<figcaption>León</figcaption>
</figure>
<figure>
<img src="img/tigre.jpg" alt="Tigre">
<figcaption>Tigre</figcaption>
</figure>
<figure>
<img src="img/gato.jpg" alt="Gato">
<figcaption>Gato</figcaption>
</figure>
<figure>
<img src="img/perro.jpg" alt="Perro">
<figcaption>Perro</figcaption>
</figure>
</div>
</body>
</html>
Tip
Para agregar imagenes de la web busca tu imagen favorita selecciona click derecho y elige copiar direccion de la imagen, a continuacion coloca el URL copiado en la parte de scr
tal como en el ejemplo del león:
<figure>
<img src="https://static.nationalgeographicla.com/files/styles/image_3200/public/nationalgeographic_2788792_0.webp?w=1600&h=900" alt="León">
<figcaption>León</figcaption>
</figure>
Paso 4: Crear los estilos de la página (styles.css)
- Abre un nuevo Notepad.
- Copia el siguiente código:
body {
font-family: Arial, sans-serif;
text-align: center;
background-color: #f5f5f5;
margin: 20px;
}
h1 {
color: #333;
}
.gallery {
display: grid;
grid-template-columns: repeat(auto-fit, minmax(150px, 1fr));
gap: 15px;
max-width: 800px;
margin: 20px auto;
}
figure {
background: white;
padding: 10px;
border-radius: 10px;
box-shadow: 2px 2px 5px rgba(0,0,0,0.2);
}
img {
width: 100%;
border-radius: 10px;
}
figcaption {
margin-top: 8px;
font-size: 16px;
font-weight: bold;
}
- Guarda el archivo:
- Ve a Archivo > Guardar.
Tip
Recuerda guardar en cada modificación y recargar la pagina del navegador para ver los cambios
Paso 5: Ver la página web en el navegador
- Abre la carpeta “GaleriaWeb”.
- Haz doble clic en
index.html
. - ¡Listo! Ahora verás tu galería de imágenes en el navegador. 🎉
Entregables
Para completar el proyecto, deben agregar:
✅ 5 imágenes guardadas en la carpeta img
.
✅ 5 imágenes con url de la web.
✅ Archivo index.html
con la estructura de la página.
✅ Archivo styles.css
con los estilos de la página.
✅ La galería debe mostrar al menos 10 imágenes en pantalla.
✅ Finalmente subir una captura de pantalla en el apartado de Files
También debes investigar las siguientes preguntas:
Instrucciones:
- Copia las preguntas en un editor de textos como Word
- Exporta el archivo en formato pdf
- Sube tu archivo pdf con tu nombre al apartado Files
1️⃣ - ¿Qué es HTML y para qué se utiliza? (Investiga qué es el lenguaje de marcado HTML y cómo se usa para estructurar páginas web.)
2️⃣ - ¿Cuál es el propósito de la declaración <!DOCTYPE html>
al inicio del documento?
(Explica por qué es importante incluir esta línea en cada página web.)
3️⃣ - ¿Qué información nos proporciona el atributo lang=“es” en la etiqueta <html>
?
(Reflexiona sobre la importancia de indicar el idioma principal de la página para la accesibilidad y SEO.)
4️⃣ - ¿Por qué se utiliza <meta charset="UTF-8">
y qué problemas podría evitar en la visualización del contenido?
(Investiga cómo la codificación de caracteres afecta la correcta visualización de textos y símbolos.)
5️⃣ - ¿Qué función cumple la etiqueta <meta name="viewport" content="width=device-width, initial-scale=1.0">
y en qué dispositivos es especialmente útil?
(Analiza cómo esta etiqueta ayuda a que la página se adapte correctamente a diferentes tamaños de pantalla, especialmente en móviles.)
6️⃣ - ¿Cuál es el rol del elemento <title>
dentro del <head>
y dónde se muestra su contenido?
(Explora cómo el título influye en la identificación de la página en el navegador y en los resultados de búsqueda.)
7️⃣ - ¿Cómo se relaciona el archivo styles.css con el documento HTML? (Investiga qué es CSS y cómo se utiliza para darle estilo y formato a una página web enlazándolo desde el HTML.)
8️⃣ - Observa las etiquetas <figure>
y <figcaption>
. ¿Cuál es su propósito en el código?
9️⃣ - En el código se usan tanto rutas locales (por ejemplo, img/panda.jpg) como una URL externa para cargar imágenes. ¿Cuál es la diferencia y qué consideraciones hay al usar cada una? (Analiza las implicaciones de utilizar recursos locales versus recursos alojados en la web.)
🔟 - Investiga: ¿Qué es la programación y cuáles son algunos de sus lenguajes más populares?
Etapa 2: Galería con Hover Interactivo
Objetivo: Agregar interactividad visual cuando el cursor pase sobre las imágenes.
Herramientas Nuevas:
- CSS avanzado:
- Se utiliza el pseudoelemento
:hover
para animar las imágenes al pasar el cursor. - Se añade una transición para suavizar los efectos.
- Se utiliza el pseudoelemento
Explicación del Código
- CSS:
- Se agrega un efecto de escala (
transform: scale()
) al pasar el cursor sobre las imágenes. - La transición hace que el efecto sea suave.
- Se agrega un efecto de escala (
Código
styles.css
.gallery img {
width: 100%;
border-radius: 10px;
transition: transform 0.3s ease;
}
.gallery img:hover {
transform: scale(1.1);
box-shadow: 0 4px 8px rgba(0, 0, 0, 0.2);
}
Etapa 3: Galería Dinámica con JavaScript
Objetivo: Permitir que los usuarios agreguen imágenes a la galería mediante un formulario.
Herramientas Nuevas:
- JavaScript:
- Para manejar eventos de formulario.
- Para actualizar dinámicamente el contenido de la galería.
Explicación del Código
- HTML:
- Se añade un formulario con un campo de entrada para URL de imágenes y una descripción.
- JavaScript:
- Se captura el evento
submit
del formulario. - Se crea un nuevo elemento
<figure>
y se añade a la galería.
- Se captura el evento
Código
index.html
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Galería Dinámica</title>
<link rel="stylesheet" href="styles.css">
</head>
<body>
<h1>Galería Dinámica de Animales</h1>
<form id="addImageForm">
<input type="url" id="imageUrl" placeholder="URL de la imagen" required>
<input type="text" id="imageCaption" placeholder="Descripción" required>
<button type="submit">Añadir Imagen</button>
</form>
<div class="gallery" id="gallery"></div>
<script src="script.js"></script>
</body>
</html>
styles.css
form {
margin: 20px auto;
max-width: 400px;
display: flex;
gap: 10px;
}
form input, form button {
padding: 10px;
font-size: 16px;
}
form button {
background-color: #007BFF;
color: #fff;
border: none;
border-radius: 5px;
cursor: pointer;
transition: background-color 0.3s ease;
}
form button:hover {
background-color: #0056b3;
}
script.js
document.getElementById('addImageForm').addEventListener('submit', function (event) {
event.preventDefault();
const imageUrl = document.getElementById('imageUrl').value;
const imageCaption = document.getElementById('imageCaption').value;
const gallery = document.getElementById('gallery');
const figure = document.createElement('figure');
const img = document.createElement('img');
const figcaption = document.createElement('figcaption');
img.src = imageUrl;
img.alt = imageCaption;
figcaption.textContent = imageCaption;
figure.appendChild(img);
figure.appendChild(figcaption);
gallery.appendChild(figure);
// Limpiar formulario
document.getElementById('addImageForm').reset();
});
Etapa 4: Galería Carrusel Estilo Tarjetas con Fondo Dinámico
Objetivo: Mejorar el diseño del carrusel para que las imágenes se muestren como tarjetas con sombra, desplazándose de forma fluida al mover el mouse. Además, se añade un fondo dinámico para una experiencia más inmersiva.
Herramientas Nuevas:
- CSS Avanzado:
- Efecto de tarjetas con sombra y espaciado.
- Fondo con un diseño futurista usando gradientes y animaciones.
- JavaScript:
- Seguimiento del movimiento del mouse para controlar el desplazamiento del carrusel.
Explicación del Código
- HTML:
- Se utiliza una estructura de contenedor principal y tarjetas dentro del carrusel.
- CSS:
- Las tarjetas tienen un diseño con sombras y un tamaño uniforme.
- El fondo utiliza un degradado animado con movimiento dinámico.
- JavaScript:
- Se añade un listener para capturar la posición del mouse y mover el carrusel de acuerdo a ella.
Código
index.html
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Galería Futurista de Tarjetas</title>
<link rel="stylesheet" href="styles.css">
</head>
<body>
<h1>Galería Futurista</h1>
<form id="addImageForm">
<input type="url" id="imageUrl" placeholder="URL de la imagen" required>
<input type="text" id="imageCaption" placeholder="Descripción" required>
<button type="submit">Añadir Imagen</button>
</form>
<div class="carousel">
<div class="carousel-inner" id="carouselInner"></div>
</div>
<script src="script.js"></script>
</body>
</html>
styles.css
/* Fondo futurista animado */
body {
margin: 0;
padding: 0;
font-family: 'Arial', sans-serif;
background: linear-gradient(135deg, #020024, #090979, #00d4ff);
background-size: 300% 300%;
animation: gradientShift 6s ease infinite;
color: white;
display: flex;
flex-direction: column;
align-items: center;
justify-content: center;
height: 100vh;
overflow: hidden;
}
@keyframes gradientShift {
0% { background-position: 0% 50%; }
50% { background-position: 100% 50%; }
100% { background-position: 0% 50%; }
}
h1 {
margin-bottom: 20px;
font-size: 2.5rem;
text-shadow: 2px 2px 8px rgba(0, 0, 0, 0.7);
}
/* Formulario */
form {
display: flex;
gap: 10px;
margin-bottom: 20px;
}
form input, form button {
padding: 10px;
font-size: 1rem;
border: none;
border-radius: 5px;
}
form button {
background-color: #007BFF;
color: white;
cursor: pointer;
transition: background-color 0.3s;
}
form button:hover {
background-color: #0056b3;
}
/* Carrusel */
.carousel {
width: 90%;
max-width: 1200px;
overflow: hidden;
position: relative;
}
.carousel-inner {
display: flex;
gap: 20px;
transition: transform 0.1s ease-out;
}
.carousel-item {
min-width: 100px;
height: 400px;
background: white;
border-radius: 15px;
box-shadow: 0 8px 20px rgba(0, 0, 0, 0.5);
overflow: hidden;
text-align: center;
}
.carousel-item img {
width: 100%;
height: 100%;
object-fit: cover;
border-radius: 15px;
}
script.js
const addImageForm = document.getElementById('addImageForm');
const carouselInner = document.getElementById('carouselInner');
// Agregar imágenes dinámicamente
addImageForm.addEventListener('submit', function (event) {
event.preventDefault();
const imageUrl = document.getElementById('imageUrl').value;
const imageCaption = document.getElementById('imageCaption').value;
const newCard = document.createElement('div');
newCard.classList.add('carousel-item');
const img = document.createElement('img');
img.src = imageUrl;
img.alt = imageCaption;
newCard.appendChild(img);
carouselInner.appendChild(newCard);
addImageForm.reset();
});
// Desplazamiento con el mouse
const carousel = document.querySelector('.carousel');
carousel.addEventListener('mousemove', (event) => {
const rect = carousel.getBoundingClientRect();
const x = event.clientX - rect.left; // Posición relativa del mouse
const scrollPercent = x / rect.width; // Porcentaje del ancho
const maxScroll = carouselInner.scrollWidth - carousel.offsetWidth; // Desplazamiento máximo
carouselInner.style.transform = `translateX(${-maxScroll * scrollPercent}px)`;
});
Recursos Utilizados y Sitios de Imágenes Gratuitas
Recursos del Proyecto
Aquí tienes los recursos y herramientas utilizados para desarrollar el proyecto:
- HTML
- Documentación oficial: MDN Web Docs - HTML
- CSS
- Documentación oficial: MDN Web Docs - CSS
- Generador de gradientes: CSS Gradient
- JavaScript
- Documentación oficial: MDN Web Docs - JavaScript
- Manipulación del DOM: MDN Web Docs - DOM
- Fuentes Tipográficas
- Recurso: Google Fonts
- Fuente utilizada: Arial (nativa del sistema).
- Íconos
- Recurso para íconos de navegación: Font Awesome
- Efectos Visuales
- Generador de sombras: CSS Box Shadow Generator
Sitios Confiables para Descargar Imágenes Gratuitas
Con esta lista de recursos y herramientas, puedes no solo replicar el proyecto, sino también explorar nuevas ideas y enriquecer tus proyectos futuros.
Conclusión
Este proyecto permite evolucionar desde una galería estática hasta una dinámica e interactiva, ayudándote a comprender conceptos fundamentales de HTML, CSS y JavaScript mientras desarrollas un producto funcional y atractivo.