Divi incluye un sistema de animaciones integrado que permite animar elementos cuando aparecen en pantalla por primera vez. Sin embargo, estas animaciones tienen una limitación importante: solo se reproducen una vez durante la carga inicial, lo que significa que si el usuario hace scroll hacia arriba y abajo en tu página, los elementos permanecen estáticos después de su primera aparición.
En este tutorial, te enseñaré cómo superar esta limitación implementando ScrollReveal, una librería de animaciones que nos permitirá crear efectos que se repiten cada vez que los elementos entran en el viewport. Esto significa que tus animaciones se activarán una y otra vez mientras el usuario navega por tu sitio, creando una experiencia más dinámica e interactiva.
Implementación Paso a Paso

Paso 1: Agregar el Código (2 Métodos)
Método 1: Para Todo el Sitio Web
Si quieres que las animaciones estén disponibles en todas las páginas de tu sitio:
- Ve a tu panel de WordPress
- Navega a Divi → Opciones del tema → Integración
- En la sección «Añadir código al head de tu blog», pega el siguiente código:
<script src="https://unpkg.com/scrollreveal"></script>
<script>
document.addEventListener('DOMContentLoaded', function() {
// Configuración global scrollReveal
const sr = ScrollReveal({
reset: true,
duration: 800,
viewFactor: 0.2,
easing: 'ease'
});
// ===== BÁSICAS MEJORADAS =====
// Fade Up con diferentes intensidades
sr.reveal('.ov-reveal-up', {
origin: 'bottom',
distance: '30px'
});
sr.reveal('.ov-reveal-up-soft', {
origin: 'bottom',
distance: '15px'
});
sr.reveal('.ov-reveal-up-strong', {
origin: 'bottom',
distance: '50px'
});
// ===== FADE DIRECCIONALES =====
sr.reveal('.ov-reveal-down', {
origin: 'top',
distance: '30px'
});
sr.reveal('.ov-reveal-left', {
origin: 'right',
distance: '30px'
});
sr.reveal('.ov-reveal-right', {
origin: 'left',
distance: '30px'
});
// ===== ZOOM VARIATIONS =====
// Zoom In suave
sr.reveal('.ov-reveal-zoom-in', {
scale: 0.95,
distance: '0px'
});
// Zoom Out suave
sr.reveal('.ov-reveal-zoom-out', {
scale: 1.05,
distance: '0px'
});
// Zoom con fade desde diferentes direcciones
sr.reveal('.ov-reveal-zoom-up', {
scale: 0.95,
origin: 'bottom',
distance: '30px'
});
sr.reveal('.ov-reveal-zoom-down', {
scale: 0.95,
origin: 'top',
distance: '30px'
});
// ===== ROTACIONES SUTILES =====
// Rotación suave desde diferentes ángulos
sr.reveal('.ov-reveal-rotate', {
rotate: { z: 3 },
distance: '0px'
});
sr.reveal('.ov-reveal-rotate-left', {
rotate: { z: -3 },
origin: 'right',
distance: '30px'
});
sr.reveal('.ov-reveal-rotate-right', {
rotate: { z: 3 },
origin: 'left',
distance: '30px'
});
// ===== EFECTOS ESPECIALES =====
// Efecto de desvanecimiento
sr.reveal('.ov-reveal-fade', {
distance: '0px',
opacity: 0
});
// Efecto de surgir
sr.reveal('.ov-reveal-emerge', {
scale: 0.95,
opacity: 0,
distance: '15px',
origin: 'bottom'
});
// Efecto de flotar
sr.reveal('.ov-reveal-float', {
distance: '15px',
origin: 'bottom',
easing: 'cubic-bezier(0.5, 0, 0, 1)',
duration: 1000
});
// ===== COMBINACIONES ELEGANTES =====
// Zoom con rotación sutil
sr.reveal('.ov-reveal-zoom-rotate', {
scale: 0.95,
rotate: { z: 2 },
distance: '0px'
});
// Entrada dramática pero elegante
sr.reveal('.ov-reveal-dramatic', {
distance: '50px',
origin: 'bottom',
scale: 0.95,
duration: 1000,
easing: 'cubic-bezier(0.5, 0, 0, 1)'
});
// ===== GRUPOS Y SECUENCIAS =====
// Cascada básica
sr.reveal('.ov-reveal-cascade', {
interval: 100,
distance: '20px',
origin: 'bottom'
});
// Cascada con zoom
sr.reveal('.ov-reveal-cascade-zoom', {
interval: 100,
scale: 0.95,
distance: '20px',
origin: 'bottom'
});
// ===== EFECTOS ESPECIALES AVANZADOS =====
// Efecto de despliegue
sr.reveal('.ov-reveal-unfold', {
duration: 1000,
scale: 0.95,
distance: '30px',
origin: 'bottom',
easing: 'cubic-bezier(0.4, 0, 0.2, 1)'
});
// Efecto de deslizamiento suave
sr.reveal('.ov-reveal-slide', {
duration: 900,
distance: '40px',
origin: 'left',
easing: 'ease-in-out'
});
// Efecto de aparición natural
sr.reveal('.ov-reveal-natural', {
duration: 1000,
scale: 0.98,
distance: '20px',
origin: 'bottom',
easing: 'cubic-bezier(0.4, 0, 0.2, 1)'
});
// Inicializar animaciones
initAnimations();
window.addEventListener('load', function() {
initAnimations();
sr.sync();
});
});
</script>
Método 2: Solo Para Una Página Específica
Si prefieres implementar las animaciones únicamente en una página en particular:
- Edita la página donde quieres las animaciones
- Agrega un módulo «Código» de Divi
- Coloca el módulo preferiblemente al final de tu página
- Pega el código en el módulo
- Guarda los cambios
Este segundo método es ideal cuando:
- Solo necesitas las animaciones en una página específica
- Estás creando una landing page
- No quieres cargar el script en todo tu sitio
- Quieres probar las animaciones antes de implementarlas globalmente
Paso 2: Usar las Animaciones
Para animar cualquier elemento en Divi:
- Selecciona el módulo que deseas animar
- Ve a la pestaña «Avanzado»
- En el campo «Clases CSS», agrega una de las siguientes clases:
Animaciones Básicas
ov-reveal-up – Aparece desde abajo
ov-reveal-down – Aparece desde arriba
ov-reveal-left – Aparece desde la derecha
ov-reveal-right – Aparece desde la izquierda
Efectos de Zoom
ov-reveal-zoom-in – Zoom suave hacia adentro
ov-reveal-zoom-out – Zoom suave hacia afuera
ov-reveal-zoom-up – Zoom con movimiento hacia arriba
Efectos Especiales
ov-reveal-fade – Simple desvanecimiento
ov-reveal-emerge – Efecto de surgimiento
ov-reveal-float – Efecto flotante
ov-reveal-dramatic – Entrada dramática
ov-reveal-natural – Aparición natural y suave
Para Grupos de Elementos
ov-reveal-cascade – Animación en secuencia
ov-reveal-cascade-zoom – Secuencia con zoom
Crea tu propias animaciones
sr.reveal('.tu-clase', {
distance: '50px', // Distancia que recorre el elemento
origin: 'bottom', // Desde dónde aparece (bottom, top, left, right)
duration: 1000, // Duración de la animación en milisegundos
delay: 0, // Retraso antes de empezar
reset: true, // true = la animación se repite, false = solo una vez
scale: 1, // Escala inicial (0.9 = 90% del tamaño)
opacity: 0, // Opacidad inicial
interval: 0, // Retraso entre elementos consecutivos
rotate: { x: 0, y: 0, z: 0 }, // Rotación en grados
easing: 'ease', // Tipo de aceleración
});
Mejores Prácticas
- No sobrecargues: Usa las animaciones con moderación
- Mantén la consistencia: Utiliza el mismo tipo de animación para elementos similares
- Piensa en móviles: Las animaciones funcionan en todos los dispositivos
- Velocidad de carga: Las animaciones solo se activan cuando son necesarias
Ejemplos de Uso
Títulos principales: ov-reveal-up
Imágenes destacadas: ov-reveal-zoom-in
Listas de características: ov-reveal-cascade
Botones call-to-action: ov-reveal-emerge
Testimonios: ov-reveal-fade
Conclusión
Con ScrollReveal, puedes dar vida a tu sitio web Divi de una manera profesional y elegante. Estas animaciones mejorarán la experiencia del usuario sin comprometer el rendimiento de tu sitio.
¿Tienes preguntas? ¡Déjalas en los comentarios!





Cordial saludo Oscar, como siempre con buenos tutoriales, felicitaciones y bendiciones. Una pregunta, ya salió Divi 5?
Hola Victor Fernando, muchas gracias por los deseos 🙂
Sobre tu pregunta, no, aún se encuentra en fase Alpha, pero va por buen camino 😀
Hola, veo que son similares a las animaciones que se pueden establecer por default en divi. tambien supongo que uno de los beneficios es que al volver a hacer scroll se vuelven a activar a diferencia de las anteriores. mi pregunta es son mas ligeras? veo que en el ejemplo hay muchas animaciones. seria equivalente a usar las nativas de divi? o son mas pesadas estas ultimas.
Hola, Edgar. Justamente lo que mencionas es la diferencia de esta librería: podemos habilitar animaciones tanto al subir como al bajar el scroll.
La librería realmente no es pesada y casi no afecta el rendimiento de tu web. De hecho, si no usas las animaciones por defecto de Divi, estas tampoco se activan en la página y no consumen recursos. Si mezclas ambas, ahí sí puede afectar un poco, pero nada considerable. También depende mucho de cada página web: cuántos elementos tengas, cuántas animaciones uses, etc. Siempre es cuestión de probar y testear.
Un abrazo, Edgar.