我正在为购物页面设计产品卡片布局。该页面将以多行多列的网格形式显示卡片。我的目标是确保所有产品卡片看起来统一且平衡,无论其内容长度如何。以下是我想要实现的目标:
1-图像容器应该占据父容器高度的65% 。
2-内容容器应该占据父容器高度的35% 。
3-通过在父容器上设置最小高度,所有卡片应该具有相同的高度。
4- 布局应该在移动设备屏幕上具有两列响应。
问题:
我遇到了以下问题:
1-当我对图像容器使用 flex: 0 0 65% 并对内容容器使用 flex: 0 0 35% 时,图像容器的大小不会按预期默认为父容器的 65%。
2-如果我在图像容器中添加内容(例如,lorem * 35),其大小会因为内容而增加,而不是因为图像容器的大小而增加。
3-如果我对图像容器使用 flex:1 0 65%,对内容容器使用 flex:0 0 35%,则图像大小会增加,但内容容器的大小不会保持在 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;
}
我需要帮助:
1-如何确保图像容器和内容容器**在遵守最小高度的同时分别占据父容器高度的 65% 和 35%?
2-为什么对图像容器使用 flex: 1 0 65% 会导致图像尺寸增加,但内容尺寸却无法保持在 35%?
3- 目前开发人员使用哪些最佳实践来创建统一的产品卡网格?
4-是否有任何推荐的资源或免费源代码网站,我可以在其中找到可重复使用的产品卡网格组件?
使用
flex
是您在这里做的最麻烦的事情。您应该使用grid
网格,因为网格确保所有元素的宽度和高度都是固定的,并且不受子(卡片)元素比例的影响。您应该遵循以下几点:
如果您需要任何更改请告诉我。