✅Cómo Crear un Grid Tipo Masonry de Testimonios con HTML, CSS y JavaScript en Gutenberg

Hoy te traigo otro snippet directo para Gutenberg sin plugins que te va a encantar. Ya hemos visto cómo crear sliders, tablas de precios y carruseles, pero ahora vamos a crear algo que queda genial en cualquier web profesional: un grid tipo masonry de testimonios con animación al hacer scroll.

Es perfecto para mostrar las opiniones de tus clientes o usuarios de manera visual y dinámica, sin depender de complementos externos ni maquetadores visuales. Todo se hace desde un bloque HTML de Gutenberg y en cuestión de minutos.

gutenberg testimonios sin plugins

¿Qué vamos a crear?

  • Un masonry grid responsive que se adapta automáticamente a cualquier tamaño de pantalla.
  • 12 tarjetas de testimonios listas para personalizar.
  • Imagen circular de cada cliente.
  • Nombre, cargo y breve reseña.
  • Una animación suave tipo fade-in cuando las tarjetas entran en pantalla.
  • Sin librerías externas ni plugins.

¿Cómo es el resultado final?

  • En escritorio tendrás un grid fluido tipo masonry con varias columnas.
  • En tablet y móvil las tarjetas se reorganizan automáticamente.
  • Además, cada tarjeta aparecerá con una animación elegante al hacer scroll.

Código completo del snippet

Aquí tienes el código completo para pegar directamente en un bloque HTML de Gutenberg:

<style>
  .masonry-container {
    display: grid;
    grid-template-columns: repeat(auto-fill, minmax(280px, 1fr));
    gap: 20px;
    max-width: 1200px;
    margin: 0 auto;
  }
  .testimonial-card {
    background: #f9f9f9;
    border-radius: 8px;
    padding: 20px;
    display: flex;
    flex-direction: column;
    gap: 15px;
    box-shadow: 0 2px 6px rgba(0, 0, 0, 0.1);
    opacity: 0;
    transform: translateY(30px);
    transition: all 0.6s ease;
  }
  .testimonial-card.in-view {
    opacity: 1;
    transform: translateY(0);
  }
  .testimonial-card img {
    width: 60px;
    height: 60px;
    object-fit: cover;
    border-radius: 50%;
  }
  .testimonial-content {
    display: flex;
    flex-direction: column;
    gap: 10px;
  }
  .testimonial-content p {
    font-size: 0.95rem;
    line-height: 1.4;
    color: #444;
  }
  .testimonial-author {
    font-weight: bold;
    font-size: 1rem;
    color: #111;
  }
  .testimonial-role {
    font-size: 0.85rem;
    color: #13b0a0;
  }
</style>

<div class="masonry-container">
  <!-- Testimonio 1 -->
  <div class="testimonial-card">
    <img src="https://codigos.fransalas-proyectos.com/wp-content/uploads/2025/01/6c4a9ecc-4a02-3e89-acf2-c228485ccab2.jpg" alt="Testimonio 1">
    <div class="testimonial-content">
      <p>“Excelente servicio y atención al cliente, superaron mis expectativas desde el primer día.”</p>
      <div class="testimonial-author">Laura Jiménez</div>
      <div class="testimonial-role">Marketing Manager</div>
    </div>
  </div>

  <!-- Testimonio 2 -->
  <div class="testimonial-card">
    <img src="https://codigos.fransalas-proyectos.com/wp-content/uploads/2022/05/about-us-team-scaled-1.webp" alt="Testimonio 2">
    <div class="testimonial-content">
      <p>“El equipo fue muy profesional y la comunicación fue fluida en todo momento.”</p>
      <div class="testimonial-author">Mario Sánchez</div>
      <div class="testimonial-role">Product Owner</div>
    </div>
  </div>

  <!-- Testimonio 3 -->
  <div class="testimonial-card">
    <img src="https://codigos.fransalas-proyectos.com/wp-content/uploads/2022/05/testimonial-user-1.webp" alt="Testimonio 3">
    <div class="testimonial-content">
      <p>“Nos ayudaron a lanzar nuestro proyecto con éxito y en menos tiempo del esperado.”</p>
      <div class="testimonial-author">Isabel Torres</div>
      <div class="testimonial-role">CEO</div>
    </div>
  </div>

  <!-- Testimonio 4 -->
  <div class="testimonial-card">
    <img src="https://codigos.fransalas-proyectos.com/wp-content/uploads/2022/05/testimonial-user-4.webp" alt="Testimonio 4">
    <div class="testimonial-content">
      <p>“Gran experiencia de usuario y resultados visibles desde el primer mes.”</p>
      <div class="testimonial-author">Carlos Ruiz</div>
      <div class="testimonial-role">UX Specialist</div>
    </div>
  </div>

  <!-- Testimonio 5 -->
  <div class="testimonial-card">
    <img src="https://codigos.fransalas-proyectos.com/wp-content/uploads/2022/05/article-image-1.webp" alt="Testimonio 5">
    <div class="testimonial-content">
      <p>“Muy contento con la calidad del trabajo y la rapidez de entrega.”</p>
      <div class="testimonial-author">Ana López</div>
      <div class="testimonial-role">Project Manager</div>
    </div>
  </div>

  <!-- Testimonio 6 -->
  <div class="testimonial-card">
    <img src="https://codigos.fransalas-proyectos.com/wp-content/uploads/2022/05/testimonial-user-2.webp" alt="Testimonio 6">
    <div class="testimonial-content">
      <p>“Su enfoque profesional y compromiso fueron claves para el éxito de nuestra campaña.”</p>
      <div class="testimonial-author">Diego Fernández</div>
      <div class="testimonial-role">CMO</div>
    </div>
  </div>

  <!-- Testimonio 7 -->
  <div class="testimonial-card">
    <img src="https://codigos.fransalas-proyectos.com/wp-content/uploads/2022/05/article-image-5.webp" alt="Testimonio 7">
    <div class="testimonial-content">
      <p>“Siempre atentos a nuestras necesidades y ofreciendo soluciones prácticas.”</p>
      <div class="testimonial-author">Paula Gómez</div>
      <div class="testimonial-role">Analista de Datos</div>
    </div>
  </div>

  <!-- Testimonio 8 -->
  <div class="testimonial-card">
    <img src="https://codigos.fransalas-proyectos.com/wp-content/uploads/2022/05/article-image-6.webp" alt="Testimonio 8">
    <div class="testimonial-content">
      <p>“El mejor partner que hemos tenido, nos acompañaron en todo el proceso.”</p>
      <div class="testimonial-author">Víctor Salas</div>
      <div class="testimonial-role">Director Técnico</div>
    </div>
  </div>

  <!-- Testimonio 9 -->
  <div class="testimonial-card">
    <img src="https://codigos.fransalas-proyectos.com/wp-content/uploads/2022/05/testimonial-user-3.webp" alt="Testimonio 9">
    <div class="testimonial-content">
      <p>“Rápidos, eficientes y siempre dispuestos a resolver cualquier imprevisto.”</p>
      <div class="testimonial-author">Elena Morales</div>
      <div class="testimonial-role">Consultora Senior</div>
    </div>
  </div>

  <!-- Testimonio 10 -->
  <div class="testimonial-card">
    <img src="https://codigos.fransalas-proyectos.com/wp-content/uploads/2022/04/article-image-1.webp" alt="Testimonio 10">
    <div class="testimonial-content">
      <p>“Muy profesionales, nos ayudaron a optimizar la estrategia y mejorar resultados.”</p>
      <div class="testimonial-author">Roberto Sánchez</div>
      <div class="testimonial-role">Growth Hacker</div>
    </div>
  </div>

  <!-- Testimonio 11 -->
  <div class="testimonial-card">
    <img src="https://codigos.fransalas-proyectos.com/wp-content/uploads/2022/05/about-us-team-scaled-1.webp" alt="Testimonio 11">
    <div class="testimonial-content">
      <p>“Siempre atentos a los detalles y con propuestas innovadoras en cada etapa.”</p>
      <div class="testimonial-author">Lucía Ortega</div>
      <div class="testimonial-role">Account Manager</div>
    </div>
  </div>

  <!-- Testimonio 12 -->
  <div class="testimonial-card">
    <img src="https://codigos.fransalas-proyectos.com/wp-content/uploads/2025/01/6c4a9ecc-4a02-3e89-acf2-c228485ccab2.jpg" alt="Testimonio 12">
    <div class="testimonial-content">
      <p>“Confianza total. Estamos muy satisfechos con el trabajo final.”</p>
      <div class="testimonial-author">Sofía Martín</div>
      <div class="testimonial-role">Directora de Operaciones</div>
    </div>
  </div>
</div>

<script>
  const cards = document.querySelectorAll('.testimonial-card');

  const observer = new IntersectionObserver(entries => {
    entries.forEach(entry => {
      if (entry.isIntersecting) {
        entry.target.classList.add('in-view');
      }
    });
  }, {
    threshold: 0.2
  });

  cards.forEach(card => observer.observe(card));
</script>

Lenguaje del código: HTML, XML (xml)
Foto genérica

“Excelente servicio y atención al cliente, superaron mis expectativas desde el primer día.”

Laura Jiménez
Marketing Manager
Foto genérica

“El equipo fue muy profesional y la comunicación fue fluida en todo momento.”

Mario Sánchez
Product Owner

¿Cómo personalizarlo?

1. Cambiar imágenes, nombres y reseñas

Cada tarjeta tiene la siguiente estructura:

<div class="testimonial-card">
<img src="URL-DE-TU-IMAGEN" alt="Testimonio">
<div class="testimonial-content">
<p>“Texto del testimonio aquí...”</p>
<div class="testimonial-author">Nombre Apellido</div>
<div class="testimonial-role">Cargo</div>
</div>
</div>
  • URL-DE-TU-IMAGEN: sustituye por la URL de la imagen desde tu biblioteca.
  • Edita el texto de la cita, el nombre y el cargo.

2. Agregar o eliminar tarjetas

Cada bloque <div class="testimonial-card"> es independiente, así que puedes copiarlo y duplicarlo para añadir más testimonios, o eliminar los que no necesites.

3. Personalizar colores y estilos

Dentro del CSS puedes modificar fácilmente:

  • El color de fondo de las tarjetas: background: #f9f9f9;
  • La sombra: box-shadow: 0 2px 6px rgba(0, 0, 0, 0.1);
  • Los colores de texto y del cargo con .testimonial-role { color: #13b0a0; }
testimonios gutenberg sin plugins

4. Cambiar tamaño de imágenes

.testimonial-card img {
width: 60px;
height: 60px;
}

Si quieres avatares más grandes o pequeños, solo cambia estos valores.

5. Ajustar la animación

El efecto que hemos aplicado es un fade-in con deslizamiento hacia arriba. Puedes modificar la velocidad desde la línea:

transition: all 0.6s ease;
  • Cambia 0.6s por el valor que prefieras (por ejemplo, 1s para que sea más lenta).

El trigger de la animación se realiza con Intersection Observer (puro JS), que detecta cuándo cada tarjeta entra en pantalla.

Ventajas de usar esta animación en tu grid

  • Hace que tu sección de testimonios sea mucho más dinámica y atractiva.
  • Mejora la experiencia de usuario al ofrecer un contenido progresivo y fluido.
  • Aumenta la atención y la permanencia en la sección (especialmente en landing pages).
  • No dependes de plugins externos ni de librerías pesadas como jQuery.
  • Funciona en cualquier web hecha con Gutenberg.

Conclusión

Como ves, con Gutenberg y un simple bloque de HTML puedes conseguir resultados totalmente personalizados y profesionales sin necesidad de usar constructores visuales pesados o depender de decenas de plugins.

Este tipo de soluciones te permiten mantener tu web ligera, optimizada y 100% adaptada a tus necesidades, mientras aprovechas al máximo las capacidades nativas de WordPress.

Y si en algún momento necesitas llevar estos diseños un paso más allá y crear componentes a medida o integraciones personalizadas, puedes contactarme directamente y te ayudaré a desarrollar una solución que encaje a la perfección con tu proyecto.

Nos vemos en el siguiente tutorial. Un saludo.

5/5 - (3 votos)
Compartir Artículo

Un comentario

  1. Fran Salas Master WP 1 año atrás

    ¿Te ha parecido útil este artículo? Deja tus dudas y opiniones en los comentarios.

¿Tienes una duda o sugerencia sobre este artículo?

Puedes dejar un comentario de forma anónima, sin necesidad de registrarte ni proporcionar ningún dato personal. Tu mensaje se publicará como “Usuario Anónimo No Premium”, un perfil que agrupa a todos los visitantes no registrados.

Importante: para evitar el spam automático, todos los comentarios anónimos deben comenzar con el símbolo #. Ejemplo: # Tengo una duda sobre los shortcodes personalizados...

Este espacio está destinado exclusivamente a preguntas concretas, dudas o sugerencias relacionadas con el contenido del artículo. Por respeto a los demás lectores, no se publicarán temas sin relación.

Privacidad y normas:
  • No tienes que agregar tu nombre, correo ni ningún otro dato identificativo.
  • No se permiten enlaces en comentarios anónimos.
  • No se permiten símbolos especiales como < o > (menor y mayor que), ya que se consideran intentos de insertar código y serán bloqueados.
  • Todos los comentarios anónimos pasan por revisión antes de ser publicados y solo se aprobarán si aportan valor al contenido del artículo.
¿Quieres comentar con tu nombre y que tu mensaje se publique al instante? Inicia sesión o regístrate.

Deja un comentario

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

0%