Introducción
En este laboratorio, los estudiantes explorarán los eventos básicos del mouse en el desarrollo web, centrándose en la creación de interfaces web interactivas a través de ejercicios prácticos de codificación. El laboratorio cubre técnicas esenciales de manejo de eventos del mouse, incluyendo los eventos click, mouse over, mouse out, mouse down y mouse up, brindando una comprensión integral de cómo responder a las interacciones del usuario en aplicaciones web.
Los participantes aprenderán a implementar oyentes de eventos, usar la palabra clave 'this' y combinar múltiples eventos del mouse para crear elementos web dinámicos y reactivos. A través de un enfoque paso a paso, los estudiantes desarrollarán habilidades prácticas en el manejo de eventos de JavaScript, obteniendo conocimientos sobre la creación de experiencias web atractivas e interactivas que mejoran el diseño y la funcionalidad de la interfaz de usuario.
Configura un proyecto HTML para el evento de clic del mouse
En este paso, crearemos un proyecto HTML básico para explorar los eventos de clic del mouse en el desarrollo web. Los eventos del mouse son cruciales para crear experiencias web interactivas, permitiendo a los desarrolladores responder a las interacciones del usuario con los elementos de una página web.
Primero, creemos un nuevo directorio de proyecto y configuremos nuestro archivo HTML. Abra el WebIDE y vaya al directorio ~/proyecto.
Cree un nuevo archivo llamado mouse-events.html con el siguiente contenido:
<!doctype html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<title>Ejemplo de evento de clic del mouse</title>
<style>
#clickMe {
padding: 10px;
background-color: #4caf50;
color: white;
border: none;
cursor: pointer;
}
</style>
</head>
<body>
<h1>Demostración del evento de clic del mouse</h1>
<button id="clickMe">Ház clic en mí!</button>
<script>
// Obtener el elemento del botón
const button = document.getElementById("clickMe");
// Agregar un oyente de eventos de clic
button.addEventListener("click", function () {
alert("¡El botón fue clicado!");
});
</script>
</body>
</html>
Analicemos los componentes clave de este archivo HTML:
- Hemos creado un botón simple con el ID
clickMe - Agregamos algunos estilos CSS básicos para dar estilo al botón
- Incluimos una sección de JavaScript para agregar un oyente de eventos para los eventos de clic
- El oyente de eventos utiliza el método
addEventListener()para detectar los clics - Cuando se hace clic, el botón mostrará un mensaje de alerta
Para verificar que el archivo se ha creado correctamente, puede abrir el archivo en el WebIDE y revisar su contenido.
Implementa los eventos de mouse over y mouse out
En este paso, exploraremos los eventos de mouse over y mouse out, que son esenciales para crear interfaces web interactivas y reactivas. Estos eventos te permiten detectar cuando el mouse del usuario entra o sale de un elemento HTML, lo que habilita una retroalimentación visual dinámica.
Abra el archivo mouse-events.html anterior en el WebIDE y modifíquelo para incluir demostraciones de eventos de mouse over y mouse out:
<!doctype html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<title>Eventos de mouse over y out</title>
<style>
.hover-box {
width: 200px;
height: 200px;
background-color: #3498db;
color: white;
display: flex;
justify-content: center;
align-items: center;
transition: background-color 0.3s ease;
}
.hover-box:hover {
background-color: #2980b9;
}
</style>
</head>
<body>
<h1>Demostración de eventos de mouse over y out</h1>
<div id="hoverBox" class="hover-box">Pasa el mouse sobre mí!</div>
<p id="eventLog">El estado del evento aparecerá aquí</p>
<script>
const box = document.getElementById("hoverBox");
const eventLog = document.getElementById("eventLog");
// Evento de mouse over
box.addEventListener("mouseover", function () {
this.textContent = "El mouse está sobre la caja!";
eventLog.textContent = "Evento de mouse over desencadenado";
});
// Evento de mouse out
box.addEventListener("mouseout", function () {
this.textContent = "Pasa el mouse sobre mí!";
eventLog.textContent = "Evento de mouse out desencadenado";
});
</script>
</body>
</html>
Puntos claves sobre los eventos de mouse over y mouse out:
- El evento
mouseoverse activa cuando el mouse entra en un elemento - El evento
mouseoutse activa cuando el mouse sale de un elemento - Hemos agregado un cambio dinámico de texto y un registro de eventos
- Se utiliza CSS para proporcionar retroalimentación visual al pasar el mouse
- El script demuestra cómo adjuntar oyentes de eventos
Salida de ejemplo al pasar el mouse:
- El texto de la caja cambia a "El mouse está sobre la caja!"
- El registro de eventos muestra "Evento de mouse over desencadenado"
Salida de ejemplo al alejar el mouse:
- El texto de la caja vuelve a "Pasa el mouse sobre mí!"
- El registro de eventos muestra "Evento de mouse out desencadenado"
Crea un botón interactivo con los eventos de mouse down y mouse up
En este paso, exploraremos los eventos de mouse down y mouse up, que ofrecen un control más granular sobre las interacciones del usuario con botones y otros elementos clicables. Estos eventos te permiten detectar cuando se presiona y se suelta un botón del mouse.
Abra el archivo mouse-events.html anterior en el WebIDE y modifíquelo para incluir demostraciones de eventos de mouse down y mouse up:
<!doctype html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<title>Eventos de mouse down y up</title>
<style>
#pressButton {
padding: 15px 30px;
font-size: 16px;
background-color: #4caf50;
color: white;
border: none;
cursor: pointer;
transition: background-color 0.2s ease;
}
#pressButton:active {
background-color: #45a049;
}
#eventStatus {
margin-top: 10px;
font-weight: bold;
}
</style>
</head>
<body>
<h1>Demostración de eventos de mouse down y up</h1>
<button id="pressButton">Presiona y suelta me</button>
<div id="eventStatus">El estado del evento aparecerá aquí</div>
<script>
const button = document.getElementById("pressButton");
const eventStatus = document.getElementById("eventStatus");
// Evento de mouse down
button.addEventListener("mousedown", function () {
eventStatus.textContent = "¡Se presionó el botón del mouse!";
this.style.backgroundColor = "#45a049";
});
// Evento de mouse up
button.addEventListener("mouseup", function () {
eventStatus.textContent = "¡Se soltó el botón del mouse!";
this.style.backgroundColor = "#4CAF50";
});
</script>
</body>
</html>
Puntos claves sobre los eventos de mouse down y mouse up:
- El evento
mousedownse activa cuando se presiona un botón del mouse en un elemento - El evento
mouseupse activa cuando se suelta un botón del mouse en un elemento - Hemos agregado retroalimentación visual cambiando el color del botón
- Un div de estado del evento muestra el estado actual de la interacción
- La pseudo-clase CSS
:activeproporciona retroalimentación visual adicional
Interacciones de ejemplo:
- Al presionar el botón: aparece "¡Se presionó el botón del mouse!"
- Al soltar el botón: aparece "¡Se soltó el botón del mouse!"
- El color del botón cambia al presionarlo y soltarlo
Comprende el manejo de eventos con la palabra clave 'this'
En este paso, exploraremos la palabra clave this en el manejo de eventos, que es una característica poderosa en JavaScript que te permite referirte al elemento actual que desencadenó un evento. Comprender this es crucial para crear experiencias web dinámicas e interactivas.
Abra el archivo mouse-events.html anterior en el WebIDE y modifíquelo para demostrar el uso de this:
<!doctype html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<title>Comprendiendo 'this' en el manejo de eventos</title>
<style>
.color-box {
width: 200px;
height: 200px;
margin: 10px;
display: inline-block;
cursor: pointer;
text-align: center;
line-height: 200px;
color: white;
transition: background-color 0.3s ease;
}
#box1 {
background-color: #3498db;
}
#box2 {
background-color: #2ecc71;
}
#box3 {
background-color: #e74c3c;
}
</style>
</head>
<body>
<h1>Comprendiendo 'this' en el manejo de eventos</h1>
<div id="box1" class="color-box">Caja 1</div>
<div id="box2" class="color-box">Caja 2</div>
<div id="box3" class="color-box">Caja 3</div>
<p id="selectedBox">Ninguna caja seleccionada</p>
<script>
// Seleccionar todas las cajas de color
const boxes = document.querySelectorAll(".color-box");
const selectedBoxDisplay = document.getElementById("selectedBox");
// Agregar evento de clic a cada caja usando 'this'
boxes.forEach((box) => {
box.addEventListener("click", function () {
// 'this' se refiere a la caja específica que se hizo clic
selectedBoxDisplay.textContent = `Hiciste clic en: ${this.textContent}`;
// Cambiar el color de fondo de la caja en la que se hizo clic
this.style.backgroundColor = getRandomColor();
});
});
// Función auxiliar para generar un color aleatorio
function getRandomColor() {
const letters = "0123456789ABCDEF";
let color = "#";
for (let i = 0; i < 6; i++) {
color += letters[Math.floor(Math.random() * 16)];
}
return color;
}
</script>
</body>
</html>
Puntos claves sobre this en el manejo de eventos:
thisse refiere al elemento que desencadenó el evento- En las funciones flecha,
thisse comporta de manera diferente, por lo que usamos la sintaxis de función regular - Podemos acceder y modificar las propiedades del elemento específico
- El ejemplo demuestra el uso de
thispara:- Obtener el contenido de texto de la caja en la que se hizo clic
- Cambiar el color de fondo de la caja en la que se hizo clic
Interacciones de ejemplo:
- Hacer clic en la Caja 1 mostrará "Hiciste clic en: Caja 1"
- Cada clic cambia el color de fondo de la caja a un color aleatorio
- La caja seleccionada se actualiza dinámicamente
Practica combinando múltiples eventos de mouse
En este paso, crearemos una aplicación de dibujo interactiva que combine múltiples eventos del mouse para demostrar cómo diferentes eventos pueden trabajar juntos para crear una rica experiencia de usuario. Implementaremos un lienzo de dibujo simple donde los usuarios pueden dibujar haciendo clic y arrastrando el mouse.
Cree un nuevo archivo mouse-drawing.html en el directorio ~/proyecto con el siguiente código:
<!doctype html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<title>Lienzo de dibujo interactivo</title>
<style>
#drawingCanvas {
border: 2px solid #000;
background-color: #f0f0f0;
cursor: crosshair;
}
#colorPicker {
margin-bottom: 10px;
}
</style>
</head>
<body>
<h1>Lienzo de dibujo interactivo</h1>
<div>
<label for="colorPicker">Elija un color:</label>
<input type="color" id="colorPicker" value="#000000" />
<button id="clearCanvas">Limpiar lienzo</button>
</div>
<canvas id="drawingCanvas" width="600" height="400"></canvas>
<p id="drawingStatus">
Comience a dibujar haciendo clic y arrastrando en el lienzo
</p>
<script>
const canvas = document.getElementById("drawingCanvas");
const ctx = canvas.getContext("2d");
const colorPicker = document.getElementById("colorPicker");
const clearButton = document.getElementById("clearCanvas");
const drawingStatus = document.getElementById("drawingStatus");
let isDrawing = false;
let lastX = 0;
let lastY = 0;
// Evento de mouse down - comenzar a dibujar
canvas.addEventListener("mousedown", startDrawing);
// Evento de mouse move - dibujar mientras el mouse está presionado
canvas.addEventListener("mousemove", draw);
// Eventos de mouse up y mouse out - detener el dibujo
canvas.addEventListener("mouseup", stopDrawing);
canvas.addEventListener("mouseout", stopDrawing);
// Botón para limpiar el lienzo
clearButton.addEventListener("click", clearCanvas);
function startDrawing(e) {
isDrawing = true;
[lastX, lastY] = [e.offsetX, e.offsetY];
drawingStatus.textContent = "Dibujando en progreso...";
}
function draw(e) {
if (!isDrawing) return;
ctx.beginPath();
ctx.moveTo(lastX, lastY);
ctx.lineTo(e.offsetX, e.offsetY);
ctx.strokeStyle = colorPicker.value;
ctx.lineWidth = 2;
ctx.lineCap = "round";
ctx.stroke();
[lastX, lastY] = [e.offsetX, e.offsetY];
}
function stopDrawing() {
isDrawing = false;
drawingStatus.textContent = "Dibujo detenido. Comience de nuevo!";
}
function clearCanvas() {
ctx.clearRect(0, 0, canvas.width, canvas.height);
drawingStatus.textContent = "Lienzo limpio. Comience a dibujar!";
}
</script>
</body>
</html>
Características principales de esta aplicación de dibujo interactiva:
- Combina múltiples eventos del mouse:
mousedown: Comienza a dibujarmousemove: Continúa dibujando mientras el mouse está presionadomouseupymouseout: Detiene el dibujo
- El selector de color permite cambiar el color del dibujo
- El botón para limpiar el lienzo restablece el dibujo
- Los mensajes de estado proporcionan retroalimentación al usuario
Interacciones de ejemplo:
- Haga clic y arrastre en el lienzo para dibujar
- Cambie el color usando el selector de color
- Haga clic en "Limpiar lienzo" para restablecer el área de dibujo
Resumen
En este laboratorio, los participantes exploraron los eventos del mouse en el desarrollo web, centrándose en la creación de experiencias web interactivas a través de diversas técnicas de manejo de eventos. El laboratorio comenzó configurando un proyecto HTML básico con un botón clicable, demostrando cómo usar addEventListener() para capturar y responder a eventos de clic del mouse. Los participantes aprendieron a implementar oyentes de eventos que desencadenan acciones específicas, como mostrar mensajes de alerta cuando se interactúa con elementos.
El laboratorio avanzó hacia el manejo más avanzado de eventos del mouse, incluyendo eventos de mouse over, mouse out, mouse down y mouse up. Al practicar estas técnicas, los desarrolladores adquirieron conocimientos sobre la creación de interfaces de usuario dinámicas y reactivas, comprendiendo cómo usar la palabra clave 'this' para el contexto del evento y combinar múltiples eventos del mouse para mejorar la interactividad web. El enfoque práctico permitió a los participantes aplicar directamente los principios de manejo de eventos y desarrollar aplicaciones web más atractivas.



