Estou trabalhando em um layout de cartão de produto para uma página de compras. A página exibirá cartões em uma grade com várias linhas e colunas. Meu objetivo é garantir que todos os cartões de produto pareçam uniformes e equilibrados, independentemente do comprimento do conteúdo. Aqui está o que quero alcançar:
1- O contêiner de imagem deve ocupar 65% da altura do contêiner pai.
2- O contêiner de conteúdo deve ocupar 35% da altura do contêiner pai.
3- Todos os cartões devem ter a mesma altura , definindo uma altura mínima no contêiner pai.
4- O layout deve ser responsivo com duas colunas nas telas dos dispositivos móveis.
O problema:
Estou enfrentando os seguintes problemas:
1- Quando uso flex: 0 0 65% para o contêiner de imagem e flex: 0 0 35% para o contêiner de conteúdo, o tamanho do contêiner de imagem não é definido como 65% do contêiner pai, como esperado.
2- Se eu adicionar conteúdo (por exemplo, lorem * 35) no contêiner de imagem, seu tamanho aumenta por causa do conteúdo, mas não por causa do tamanho do contêiner de imagem.
3- Se eu usar flex: 1 0 65% para o contêiner de imagem e flex: 0 0 35% para o contêiner de conteúdo, o tamanho da imagem aumenta, mas o tamanho do contêiner de conteúdo não fica em 35%.
<div className="feature-item-img-container limited-item-img-container">
<div
className="limited-img-two"
style={{
backgroundImage: `url("${product.images.secondImage}")`,
}}
>
<div className="feature-item-btn-container" >
<p>Add to cart</p>
</div>
</div>
</div>
.feature-item-img-container {
flex: 1 0 65%; /* Child1 takes 65% of the height, effectively flex-grow 3 */
width: 100%;
min-height: 100%;
display: flex;
flex-direction: column;
justify-content: flex-end;
align-items: center;
cursor: pointer;
background-color: #FFDF00;
position: relative;
}
.limited-img-two {
flex: 1;
width: 100%;
height: 100%;
object-fit: cover;
transition: opacity 0.3s ease-in;
background-size: cover; /* Ensure the image covers the entire div */
background-position: center; /* Center the image within the div */
background-repeat: no-repeat; /* Prevent repeating of the image */
/* position: relative; */
display: flex;
flex-direction: column;
justify-content: flex-end;
align-items: center;
}
.limited-item-details-container {
flex: 1 0 35%;
background-color: aliceblue;
}
Com o que preciso de ajuda:
1- Como posso garantir que o contêiner de imagem e o contêiner de conteúdo** ocupem exatamente 65% e 35% da altura do contêiner pai, respeitando a altura mínima?
2- Por que usar flex: 1 0 65% para o contêiner de imagem faz com que o tamanho da imagem aumente, mas o tamanho do conteúdo não fica em 35%?
3- Quais são as melhores práticas que os desenvolvedores usam hoje para criar grades uniformes de cartões de produtos?
4- Há algum recurso recomendado ou site de código-fonte gratuito onde eu possa encontrar componentes reutilizáveis para grades de cartões de produtos?