Inteligencia Artificial => Diseño digital => Mensaje iniciado por: BarbaraEberle en Jul 24, 2024 Return to Full Version

Título: Botones Magnéticos con Animaciones y Efecto Parallax
Publicado por: BarbaraEberle en Jul 24, 2024
En este tutorial, aprenderemos a crear botones con efecto magnético que siguen al puntero del ratón y cuentan con animaciones atractivas al pasar el cursor. También implementaremos un efecto parallax para darle más dinamismo a la animación.

(https://sastreriaweb.org/proxy.php?request=http%3A%2F%2Ftympanus.net%2FDevelopment%2FMagneticButtons%2F&hash=0011adca0c49dea4de4c3b832d0665749315414b)

Paso 1: Estructura HTML

Primero, necesitamos crear la estructura básica del HTML para los botones.

html
<!DOCTYPE html>
<html lang="es">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Botones Magnéticos con Efecto Parallax</title>
    <link rel="stylesheet" href="styles.css">
</head>
<body>
    <div class="button-container">
        <button class="magnetic-button">¡Haz clic aquí!</button>
    </div>
    <script src="script.js"></script>
</body>
</html>

Paso 2: Estilos CSS

Vamos a agregar los estilos necesarios para nuestros botones y las animaciones.

css
/* styles.css */
body {
    margin: 0;
    height: 100vh;
    display: flex;
    align-items: center;
    justify-content: center;
    background-color: #f0f0f0;
}

.button-container {
    position: relative;
}

.magnetic-button {
    padding: 15px 30px;
    border: none;
    background-color: #ff6f61;
    color: white;
    font-size: 16px;
    font-weight: bold;
    border-radius: 5px;
    cursor: pointer;
    position: relative;
    overflow: hidden;
    transition: transform 0.3s ease, box-shadow 0.3s ease;
}

.magnetic-button::before {
    content: '';
    position: absolute;
    top: 50%;
    left: 50%;
    width: 150%;
    height: 150%;
    background-color: rgba(0, 0, 0, 0.2);
    border-radius: 50%;
    transform: translate(-50%, -50%);
    transition: transform 0.3s ease;
    z-index: 0;
}

.magnetic-button:hover {
    transform: scale(1.1);
    box-shadow: 0 4px 10px rgba(0, 0, 0, 0.3);
}

.magnetic-button:hover::before {
    transform: translate(-50%, -50%) scale(1.3);
}

Paso 3: Funcionalidad JavaScript

Ahora, agregaremos la funcionalidad para que el botón siga el puntero del ratón.

javascript
// script.js
document.addEventListener('DOMContentLoaded', () => {
    const button = document.querySelector('.magnetic-button');

    document.addEventListener('mousemove', (event) => {
        const { clientX: mouseX, clientY: mouseY } = event;
        const { offsetLeft: buttonX, offsetTop: buttonY, offsetWidth: buttonWidth, offsetHeight: buttonHeight } = button;

        const buttonCenterX = buttonX + buttonWidth / 2;
        const buttonCenterY = buttonY + buttonHeight / 2;

        const deltaX = mouseX - buttonCenterX;
        const deltaY = mouseY - buttonCenterY;

        const maxOffset = 20;
        const offsetX = Math.max(-maxOffset, Math.min(maxOffset, deltaX / 10));
        const offsetY = Math.max(-maxOffset, Math.min(maxOffset, deltaY / 10));

        button.style.transform = `translate(${offsetX}px, ${offsetY}px)`;
    });
});

Explicación del Código

- HTML: Creamos una estructura básica con un botón dentro de un contenedor.
- CSS: Definimos los estilos para el botón, incluyendo el efecto de sombra y las animaciones al pasar el cursor.
- JavaScript: Implementamos la funcionalidad para que el botón siga el puntero del ratón. El cálculo del desplazamiento se realiza en base a la posición del ratón y la posición del botón.

¡Y eso es todo! Ahora tienes botones magnéticos que siguen al puntero del ratón y cuentan con animaciones atractivas y un efecto parallax. Puedes ajustar los estilos y el comportamiento según tus necesidades para crear efectos personalizados. ¡Diviértete experimentando!