Avatar

Semana 4

Página web con JavaScript

Temas Aprendidos

Esta semana aprendí sobre los motores de JavaScript y cómo usar variables, operadores y distintos tipos de datos como números, strings, objetos y booleanos. También vimos estructuras de control, bucles y varios tipos de funciones, como las flecha y las auto invocadas. Me pareció interesante cómo se puede modificar elementos, estilos y crear animaciones con canvas usando solo JavaScript.

Ejercicios y Resultados

Variables, Operadores y Funciones JavaScript

Código del ejercicio:
// Variables y tipos de datos
let nombre = "JavaScript";
const edad = 28;
let esActivo = true;
let usuario = {
    nombre: "Juan",
    email: "juan@email.com",
    saludar: () => `Hola, soy ${usuario.nombre}`
};

// Función tradicional
function calcular(a, b, operacion) {
    switch(operacion) {
        case '+': return a + b;
        case '-': return a - b;
        case '*': return a * b;
        case '/': return b !== 0 ? a / b : 'Error: División por cero';
        default: return 'Operación no válida';
    }
}

// Función flecha y closure
const crearContador = () => {
    let count = 0;
    return {
        incrementar: () => ++count,
        decrementar: () => --count,
        obtener: () => count
    };
};

// Función auto-invocada (IIFE)
(function() {
    console.log("Función ejecutada inmediatamente");
})();
Resultado:
Resultado: 15
0

Manipulación del DOM y Gráficos Canvas

Código del ejercicio:
// Manipulación de elementos y estilos
function cambiarEstilos() {
    const elemento = document.getElementById('elementoDinamico');
    elemento.style.backgroundColor = `hsl(${Math.random() * 360}, 70%, 60%)`;
    elemento.style.transform = `rotate(${Math.random() * 360}deg) scale(${0.8 + Math.random() * 0.4})`;
    elemento.textContent = `Transformado ${Math.floor(Math.random() * 100)}`;
}

// Canvas y animaciones
function dibujarEnCanvas() {
    const canvas = document.getElementById('animationCanvas');
    const ctx = canvas.getContext('2d');
    
    // Limpiar canvas
    ctx.clearRect(0, 0, canvas.width, canvas.height);
    
    // Dibujar círculos animados
    const tiempo = Date.now() * 0.002;
    for(let i = 0; i < 5; i++) {
        const x = 150 + Math.sin(tiempo + i) * 80;
        const y = 75 + Math.cos(tiempo + i * 0.5) * 30;
        const radio = 10 + Math.sin(tiempo * 2 + i) * 5;
        
        ctx.fillStyle = `hsl(${(tiempo * 50 + i * 60) % 360}, 70%, 60%)`;
        ctx.beginPath();
        ctx.arc(x, y, radio, 0, Math.PI * 2);
        ctx.fill();
    }
    
    requestAnimationFrame(dibujarEnCanvas);
}
Resultado Interactivo:
Elemento Dinámico

Animaciones Avanzadas y Efectos Interactivos

Código del ejercicio:
// Sistema de partículas
function crearParticula(x, y) {
    const particula = document.createElement('div');
    particula.className = 'particle';
    particula.style.left = x + 'px';
    particula.style.top = y + 'px';
    particula.style.width = Math.random() * 8 + 4 + 'px';
    particula.style.height = particula.style.width;
    
    document.getElementById('areaParticulas').appendChild(particula);
    
    setTimeout(() => {
        if (particula.parentNode) {
            particula.parentNode.removeChild(particula);
        }
    }, 3000);
}

// Animación de texto dinámico
function animarTexto() {
    const texto = "¡JavaScript es increíble!";
    const contenedor = document.getElementById('textoAnimado');
    contenedor.innerHTML = '';
    
    [...texto].forEach((letra, i) => {
        const span = document.createElement('span');
        span.textContent = letra === ' ' ? '\u00A0' : letra;
        span.style.animationDelay = i * 100 + 'ms';
        span.classList.add('letra-animada');
        contenedor.appendChild(span);
    });
}

// Efecto de ondas
function crearOnda(evento) {
    const boton = evento.target;
    const rect = boton.getBoundingClientRect();
    const x = evento.clientX - rect.left;
    const y = evento.clientY - rect.top;
    
    const onda = document.createElement('span');
    onda.style.cssText = `
        position: absolute; left: ${x}px; top: ${y}px;
        width: 0; height: 0; border-radius: 50%;
        background: rgba(255,255,255,0.5);
        transform: translate(-50%, -50%);
        animation: onda 0.6s ease-out;
    `;
    
    boton.style.position = 'relative';
    boton.appendChild(onda);
    
    setTimeout(() => onda.remove(), 600);
}
Resultado Interactivo:
Haz clic para crear partículas
¡JavaScript es increíble!

Reflexión Final

Durante esta semana, me di cuenta de lo importante que es comprender la lógica detrás del código para poder aplicarlo de forma creativa. Al practicar con funciones y estructuras de control, entendí mejor cómo resolver problemas paso a paso. Esto me motivó a seguir explorando JavaScript y a fortalecer mi pensamiento lógico.

¿Qué aprendí?

Aprendí sobre variables, operadores, funciones y estructuras de control en JavaScript.

¿Cómo aprendí?

Aprendí practicando con ejercicios y revisando documentación de JS.