¡Cuidado con tus Diseños! El Truco de CSS y JS que los Expertos Quieren Guardarse para Ellos

Fuente: Unsplash

Si alguna vez has mirado un sitio web y pensado: “¡Wow! ¿Cómo lograron ese efecto tan fluido?”, este artículo es para ti. Hoy te voy a revelar un truco con CSS y JavaScript que te permitirá crear animaciones elegantes y dinámicas que dejarán a todos preguntándose cómo lo hiciste.


El Truco: Animaciones de Entrada Suaves con CSS y JS

La clave para crear animaciones que se vean profesionales está en dominar la combinación de CSS transitions, keyframes y el uso inteligente de JavaScript para controlar cuándo y cómo se disparan estas animaciones.


Configurando la Base con CSS

Para este truco, vamos a usar @keyframes para definir una animación de entrada personalizada y transform para darle ese toque de suavidad.

CSS

/* Definimos la animación */
@keyframes fadeInUp {
  from {
    opacity: 0;
    transform: translateY(30px);
  }
  to {
    opacity: 1;
    transform: translateY(0);
  }
}

/* Aplicamos la animación */
.element {
  opacity: 0;
  animation: fadeInUp 0.8s ease-out forwards;
}

En este código:

Finaliza con el elemento en su posición original y completamente visible (opacity: 1).

La animación comienza con un elemento invisible (opacity: 0) y un desplazamiento hacia abajo (translateY(30px)).


Activando las Animaciones con JavaScript

Aunque CSS puede manejar animaciones básicas por sí solo, el verdadero poder viene cuando las controlamos dinámicamente con JavaScript.

JavaScript

// Seleccionamos todos los elementos que queremos animar
const elements = document.querySelectorAll('.element');

// Función para añadir la clase 'visible' cuando el elemento está en el viewport
const revealOnScroll = () => {
  elements.forEach((el) => {
    const rect = el.getBoundingClientRect();
    if (rect.top < window.innerHeight && rect.bottom > 0) {
      el.classList.add('visible');
    }
  });
};

// Escuchamos el evento de scroll
window.addEventListener('scroll', revealOnScroll);

// Disparamos la función al cargar la página
revealOnScroll();

En este código:

Esto mejora el rendimiento porque evita animar elementos que el usuario no está viendo.

Los elementos con la clase element se animarán únicamente cuando entren en el viewport.


Juntándolo Todo

Ahora ajustamos los estilos para integrar la animación y el JavaScript:

CSS

.element {
  opacity: 0;
  transform: translateY(30px);
  transition: opacity 0.8s ease-out, transform 0.8s ease-out;
}

.element.visible {
  opacity: 1;
  transform: translateY(0);
}

El resultado:

Los elementos aparecen suavemente desde abajo cuando el usuario los ve por primera vez. El efecto es elegante, pero no distrae.


Ejemplo Complejo: Animaciones por Sección

Digamos que quieres aplicar diferentes animaciones a elementos según la sección de la página. Así podrías hacerlo:

JavaScript

const sections = document.querySelectorAll('.section');

const animateSections = () => {
  sections.forEach((section) => {
    const rect = section.getBoundingClientRect();
    if (rect.top < window.innerHeight && rect.bottom > 0) {
      section.classList.add('animate');
    }
  });
};

window.addEventListener('scroll', animateSections);
animateSections();

CSS

.section {
  opacity: 0
  transition: opacity 1s ease-out;
}

.section.animate {
  opacity: 1;
}

De esta forma, puedes tener animaciones personalizadas por cada sección, ideal para landing pages o sitios dinámicos.

¡Deja a Todos Impresionados!

Con este truco, puedes transformar incluso los diseños más simples en experiencias visuales impactantes. Los usuarios no solo recordarán tu sitio web, ¡querrán saber cómo lo lograste!

Recuerda que la clave está en mantener las animaciones sutiles y en no abusar de ellas. Menos es más cuando hablamos de diseño visual.

Fernando Morales

/

CEO, Designed By We


Descubre más desde Designed By We

Suscríbete y recibe las últimas entradas en tu correo electrónico.

Comparte tu aprecio
Fernando Morales
Fernando Morales

Soy Fernando Morales, un desarrollador web senior con más de 6 años de experiencia en la creación de soluciones tecnológicas innovadoras. A lo largo de mi carrera, he trabajado en una amplia variedad de proyectos, especializándome en tecnologías modernas como React, TypeScript, Laravel y la integración de APIs avanzadas. Mi enfoque siempre está en diseñar y construir aplicaciones escalables, eficientes y con interfaces que cautiven a los usuarios.

Me apasiona profundamente la tecnología, en especial el entorno iOS, donde combino creatividad y conocimiento técnico para explorar constantemente nuevas formas de mejorar la experiencia del usuario. Además, tengo una fuerte inclinación emprendedora que me ha llevado a fundar "Designed by We", una marca que refleja mi visión de construir proyectos digitales de calidad y estilo inigualables.

En cada proyecto, busco no solo implementar soluciones, sino también aportar valor a las personas y empresas con las que colaboro, siempre priorizando la sostenibilidad y la responsabilidad en mi trabajo. Si estás interesado en tecnología, desarrollo web o quieres llevar tu idea al siguiente nivel, estoy aquí para colaborar y crear algo extraordinario juntos.

Artículos: 30

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Descubre más desde Designed By We

Suscríbete ahora para seguir leyendo y obtener acceso al archivo completo.

Seguir leyendo