No tienes acceso a esta clase

¡Continúa aprendiendo! Únete y comienza a potenciar tu carrera

Curso Básico de Tailwind 2 y 3

Curso Básico de Tailwind 2 y 3

Ana María Díaz Solorio

Ana María Díaz Solorio

Creando la sección de Recomendados

17/29
Recursos

¿Cómo diseñar secciones recomendadas en aplicaciones web?

Diseñar una sección de "recomendados" en una aplicación web puede parecer una tarea compleja, pero con una planificación adecuada y entendimiento de herramientas como Figma, este proceso puede simplificarse. En este contenido explicaremos cómo estructurar y codificar una sección de recomendaciones utilizando tecnologías modernas, priorizando la adaptabilidad tanto en diseño como en funcionalidad.

¿Por qué empezar con Figma?

Figma es una herramienta esencial para diseñadores y desarrolladores, permitiendo la visualización y prototipado de interfaces antes de codificar en un entorno de desarrollo. Aquí se pueden definir los elementos gráficos de nuestra sección de recomendados, configurando contenedores que alberguen múltiples elementos de diseño, como diferentes tarjetas y textos.

¿Cómo estructurar la sección de recomendados en HTML?

Comenzamos la sección de recomendados definiendo contenedores con ID específicos y configuraciones de padding para un diseño más cohesivo. Sigamos estos pasos para crear el esqueleto básico:

  • Crear divisiones con texto y contenedor de tarjetas:

    • Utiliza una etiqueta <p> para el encabezado “Recomendados”.
    • Define el tamaño del texto con clases como text-3XL y estilo con font-semi-bold.
  • Codificar la sección de tarjetas:

    • Inserta un nuevo <div> para contener las tarjetas.
    • Implementa clases de estilo que determinen el ancho automático para la adaptabilidad y el alto fijo para uniformidad con height-72.
    • Agrega centrado vertical con items-center y un margen superior usando margin-top-6 para espacio visual.

¿Cómo implementar un scroll horizontal?

Para mejorar la experiencia del usuario y aprovechar el espacio, implementa un scroll horizontal con las siguientes configuraciones CSS:

overflow-x: auto;
overscroll-behavior-x: contain;
  • Alineación con Flexbox: Utiliza la propiedad de flex para alinear las tarjetas en fila. Esta técnica coloca los elementos uno al lado del otro, otorgando una disposición limpia y ordenada.
  • Espaciado entre tarjetas: Utiliza space-x-4 o space-x-6 para especificar el espacio horizontal entre las tarjetas.

¿Cómo personalizar tarjetas individualmente?

La versatilidad del diseño web moderno permite que cada tarjeta sea única, agregando diversidad visual y evitando la monotonía. Sigue estos lineamientos para personalizar cada tarjeta:

  • Modifica propiedades internas para evitar sobresaltos de diseño usando flex-none.
  • Cambia una imagen de fondo por el nombre del archivo y referencia el diseño en Figma para las variaciones visuales (por ejemplo, cambiar "Norway" por "Nueva York").
  • Personaliza el texto y estilos según las necesidades, como definir colores de fondo y texto adecuados.

¿Qué más considerar para un diseño adaptable?

Es crucial garantizar que el diseño sea compatible con diferentes dispositivos. Asegúrate de que:

  • En móviles: Se muestren solo dos tarjetas por vez, manteniendo la tercera como parte del scroll.
  • Configuración del build: Ejecuta comandos como npm run build para verificar y consolidar los cambios realizados en el proyecto.

Con estos pasos, serás capaz de crear una sección de recomendaciones eficaz y visualmente atractiva, adecuada para su integración en cualquier proyecto de aplicación web. Sigue explorando y probando variaciones para obtener resultados más personalizados.

Aportes 19

Preguntas 5

Ordenar por:

¿Quieres ver más aportes, preguntas y respuestas de la comunidad?

Al hacer los componentes a mano con HTML nos puede ser pesado o poco practico tener que copiar y pegar los estilos una y otra vez.
Es por eso, que en el caso del ejercicio podriamos manejarlo con la extracción, filtrando por si la Card es impar para aplicarle otros filtros.
El códigó HTML de las Cards quedaría de la siguiente manera:

<div class="Card">
  <div class="Card--cover bg-norway"></div>
  <div class="Card--info">
    <p class="Card--info__title">Norway</p>
    <p class="Card--info__subtitle">Paisajes increaibles</p>
  </div>
</div>
<div class="Card">
  <div class="Card--cover bg-new_york"></div>
  <div class="Card--info">
    <p class="Card--info__title">New York</p>
    <p class="Card--info__subtitle">La gran manzana</p>
  </div>
</div>
<div class="Card">
  <div class="Card--cover bg-yosemite"></div>
  <div class="Card--info">
    <p class="Card--info__title">Yosemite</p>
    <p class="Card--info__subtitle">Una pausa del mundo</p>
  </div>
</div>

Y en nuestro taildwind.css:

.Card {
  @apply w-48 h-64 shadow-md rounded-lg overflow-hidden flex-none;
}
.Card--cover {
  @apply w-full h-3/5 bg-cover;
}
.Card--info {
  @apply w-full h-2/5 bg-secondary;
}
.Card--info__title {
  @apply text-white font-bold text-xl px-4 py-2;
}
.Card--info__subtitle {
  @apply text-white text-base px-4;
}
.Card:nth-child(even) .Card--info {
  @apply bg-white;
}
.Card:nth-child(even) .Card--info__title,
.Card:nth-child(even) .Card--info__subtitle {
  @apply text-tertiary;
}

Yo decidí usar la propiedad shrink-0 para evitar que las tarjetas se encojan cuando hay poco texto, dado que cada card tiene definido un width de 48 pues menos de eso no va a tener gracias a shrink-0

Adicional dejo mi código para hacer que las tarjetas pares e impares tengan background y texto diferente.

.card {
    @apply w-48 h-64 shadow-md rounded-lg shrink-0 snap-center
}
.card-details {
    @apply w-full h-2/5 rounded-b-lg flex flex-col justify-center gap-2 p-4
}

.card:nth-child(even) {
    @apply bg-white text-tertiary
}
.card:nth-child(odd) {
    @apply bg-secondary text-white
}

En mi caso lo único que no incluí en el apply fue el fondo para utilizar uno distinto en cada uno, eso pueden hacerlo también con los colores. class=‘Card bg-green’.

Si les sale la barra de scroll es probable que esten usando la version 3, para solucionarlo pueden agregar el siguiente código css a la hoja de estilo y agregar la clase respectiva en html (class=“scrollbar-hide”)

.scrollbar-hide::-webkit-scrollbar {
    display: none;
}

/* For IE, Edge and Firefox */
.scrollbar-hide {
    -ms-overflow-style: none;  /* IE and Edge */
    scrollbar-width: none;  /* Firefox */
}

les dejo el link con mas detalle de la solucion y otras posibles.

Hola a todos, hice el html con el preprocesador pug para ser más ágil a la hora de escribir y leer el código:

Repositorio del proyecto

Vista del proyecto

Les comparto la forma en la que solucioné no tener que poner todas las clases en cada una de las descripciones

Primero agregue unas clases en el tailwind css con la propiedad nth-last-of-type() para así poder seleccionar cada elemento “Card” que se par o non y aplicarle unos colores en especifico a su descripción dependiendo de eso, por lo que no importa la cantidad de cartitas que agreguemos siempre van a intercambiar los colores automáticamente

@tailwind base;
@tailwind components;
@tailwind utilities;

.Card {
   @apply w-48 h-64 shadow-md rounded-lg flex-none
}

.Card__description {
   @apply w-full h-2/5 rounded-b-lg px-4 pt-2 shadow-md
}

.Card:nth-last-of-type(even) .Card__description {
   @apply bg-secondary  text-white 
}
.Card:nth-last-of-type(odd) .Card__description {
   @apply bg-white  text-terciary 
}

De forma que nuestra seccion de recomendados ahora queda así

<div class="p-4" id="recomendandos">
         <p class="text-3xl mb-6 font-semibold text-primary">Recomendados</p>
         <div class="w-auto h-72 items-center overflow-x-auto overscroll-x-contain flex space-x-4">
            <div class="Card">
               <div class="w-full h-3/5 rounded-t-lg bg-norway bg-cover"></div>
               <div class="Card__description">
                  <p class="text-lg text-bold ">Norway</p>
                  <p class="">Beautiful landscape</p>
               </div>
            </div>
            <div class="Card">
               <div class="w-full h-3/5 rounded-t-lg bg-new_york bg-cover"></div>
               <div class="Card__description">
                  <p class="text-lg text-bold ">New York</p>
                  <p class="">La gran Manzana</p>
               </div>
            </div>
            <div class="Card">
               <div class="w-full h-3/5 rounded-t-lg bg-new_york bg-cover"></div>
               <div class="Card__description">
                  <p class="text-lg text-bold ">New York</p>
                  <p class="">La gran Manzana</p>
               </div>
            </div>
            <div class="Card">
               <div class="w-full h-3/5 rounded-t-lg bg-new_york bg-cover"></div>
               <div class="Card__description">
                  <p class="text-lg text-bold ">New York</p>
                  <p class="">La gran Manzana</p>
               </div>
            </div>
            <div class="Card">
               <div class="w-full h-3/5 rounded-t-lg bg-new_york bg-cover"></div>
               <div class="Card__description">
                  <p class="text-lg text-bold ">New York</p>
                  <p class="">La gran Manzana</p>
               </div>
            </div>
            <div class="Card">
               <div class="w-full h-3/5 rounded-t-lg bg-new_york bg-cover"></div>
               <div class="Card__description">
                  <p class="text-lg text-bold ">New York</p>
                  <p class="">La gran Manzana</p>
               </div>
            </div>
         </div>
      </div>

SECCIÓN DE RECOMENDADOS

Una manera de ahorrarnos el build en cada cambio es agregando el parametrp --watch queda de esta forma.

"tw:build": "tailwind build src/css/tailwind.css -o public/css/tailwind.css --watch" 

Hola ! Para colocar el scroll personalizado se pueden utilizar el siguiente css

/* Scrollbar Styling */
::-webkit-scrollbar {
  width: 5px;
  height: 5px;
}

::-webkit-scrollbar-track {
  background-color: #ebebeb;
  -webkit-border-radius: 10px;
  border-radius: 10px;
}

::-webkit-scrollbar-thumb {
  -webkit-border-radius: 10px;
  border-radius: 10px;
  background: #ccc;
}
No sé si solo me pasó a mí pero hay imagenes que aunque tengas el bg-cover no se centran.Al poner bg-center se soluciona.

Bendito PUG :3

Mis recomendaciones:

El codigo:

<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="UTF-8" />
    <meta http-equiv="X-UA-Compatible" content="IE=edge" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <title>Platzi Travel</title>
    <link rel="stylesheet" href="./css/styles.css" />
    <link rel="preconnect" href="https://fonts.googleapis.com" />
    <link rel="preconnect" href="https://fonts.gstatic.com" crossorigin />
    <link
      href="https://fonts.googleapis.com/css2?family=Montserrat+Alternates&family=Raleway:wght@500&display=swap"
      rel="stylesheet"
    />
  </head>
  <body>
    <nav></nav>
    <div id="“tab_bar”"></div>
    <section class="w-full h-screen">
      <div id="home" class="w-full h-2/4 overflow-hidden relative">
        <div
          class="w-full h-full absolute flex flex-col justify-between items-center py-10"
        >
          <input
            class="w-3/4 text-center p-3 rounded-full shadow-2xl outline-none"
            type="text"
            placeholder="San Francisco"
          />
          <button
            class="w-48 font-semibold bg-white p-2 rounded-full text-primary"
          >
            Explore More
          </button>
        </div>
        <div class="w-full h-full">
          <img
            class="w-full h-full"
            src="./img//sanFrancisco.jpg"
            alt="San Francisco"
          />
        </div>
      </div>
      <div id="recomended" class="p-3">
        <h2 class="text-primary font-semibold text-2xl">Our Recomendations</h2>
        <div
          class="w-auto h-auto flex space-x-5 overflow-x-auto overscroll-x-contain mt-5 pb-4"
        >
          <div class="Card">
            <div class="Card-image bg-norway"></div>
            <div class="Card-content">
              <p class="Card-title">Norway</p>
              <p class="Card-text">Beautiful landscape</p>
            </div>
          </div>
          <div class="Card">
            <div class="Card-image bg-new_york"></div>
            <div class="Card-content">
              <p class="Card-title">Norway</p>
              <p class="Card-text">Beautiful landscape</p>
            </div>
          </div>
          <div class="Card">
            <div class="Card-image bg-norway"></div>
            <div class="Card-content">
              <p class="Card-title">Norway</p>
              <p class="Card-text">Beautiful landscape</p>
            </div>
          </div>
        </div>
      </div>
      <div id="“rentas_destacadas”"></div>
    </section>
    <footer></footer>
  </body>
</html>

Me di cuenta al llegar a esta clase que estaba algo adelantada con los recomendados, jajajaja. Sólo cambié con la directiva @apply los estilos generales de la card, y también el color de fondo de las mismas (gracias a una idea que vi en otro comentario de un estudiante) Les dejo como se ve hasta ahora: ![](https://static.platzi.com/media/user_upload/image-1b9066d7-0556-40d9-a16e-3330703f062b.jpg) ![](https://static.platzi.com/media/user_upload/image-e64146e4-1ce5-41cc-a6de-86b08533653b.jpg) ![](https://static.platzi.com/media/user_upload/image-f84963c0-5464-45a6-a9bf-e31d6dfbf09e.jpg) Aquí el repo por si necesitan el código para guiarse, o para seguirnos en github <3 <https://github.com/iamanyyeei/HelloTravel-Tailwind-CSS>
Ahora tiene un nombre más feliz: Reusing Styles [Reusing Styles - Tailwind CSS](https://tailwindcss.com/docs/reusing-styles)
My recommendation: ![](https://static.platzi.com/media/user_upload/imagen-13857e6e-01f5-40d9-99c0-64e282da97b1.jpg)

Muchas veces hay que hacer el build para q aparezcan los cambios 😛

Nótese mi falta de creatividad Jajajajaja!