You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

搭建两行卡片组件时遇到的Flexbox布局问题

问题解决:Flexbox卡片布局优化

问题说明

  • 评分组件未固定在卡片底部,紧跟副标题显示
  • 第3、5张卡片标题有足够空间却自动换行

解决方案(仅使用Flexbox)

1. 让评分组件固定在卡片底部

通过调整卡片和内容区域的Flex属性,将评分组件推至底部:

  • 给.card-vertical添加display: flex和flex-direction: column,让卡片内部元素垂直排列
  • 设置.card-content为flex: 1,使其占据卡片除图片外的全部剩余空间
  • 给.card-rating添加margin-top: auto,强制它靠卡片底部对齐

2. 解决标题换行问题

标题换行是因为.card-content设置了固定的67%宽度,导致标题可用空间不足:

  • 移除.hebergements-cards .card-content中的width: 67%属性,让内容区域占满卡片宽度
  • 若仍有换行问题,可给.card-title添加white-space: nowrap强制单行显示

修改后的完整代码

HTML(结构无需改动)

<div class="hebergements-cards">
  <article class="card-vertical">
    <img src="images/hebergements/nicate-lee.jpg" alt="Image de la chambre d'hôtel montrant deux lits">
    <div class="card-content">
      <div class="card-txt">
        <h3 class="card-title">Auberge Le Panier</h3>
        <p class="card-subtitle">Nuit à partir de 23<span class="euro">€</span></p>
      </div>
      <div class="card-rating">
        <i class="fa-xs fa-solid fa-star" aria-hidden="true"></i>
        <i class="fa-xs fa-solid fa-star" aria-hidden="true"></i>
        <i class="fa-xs fa-solid fa-star" aria-hidden="true"></i>
        <i class="fa-xs fa-solid fa-star" aria-hidden="true"></i>
        <i class="fa-xs fa-solid fa-star neutral-star" aria-hidden="true"></i>
        <span class="sr-only">Note de 4 sur 5</span>
      </div>
    </div>
  </article>
</div>

CSS

.hebergements-cards {
    display: flex;
    flex-direction: row;
    gap: 30px;
}

.hebergements-cards .card-vertical {
    margin-top: 33px;
}

.hebergements-cards .card-content {
    padding-left: 15px;
    display: flex;
    flex-direction: column;
    box-sizing: border-box;
    flex: 1; /* 占据卡片剩余空间 */
}

.hebergements-cards .card-title {
    margin-top: 10px;
    margin-bottom: 4px;
    /* 可选:强制单行显示 */
    /* white-space: nowrap; */
}

.hebergements-cards .card-subtitle {
    margin: 0;
}

.card-rating {
    margin-bottom: 5px;
    margin-top: auto; /* 推至卡片底部 */
}

.card-vertical {
    background-color: white;
    border-radius: 20px;
    padding: 5px;
    width: 33%;
    filter: drop-shadow(0px 3px 15px rgba(0, 0, 0, 0.1));
    display: flex; /* 卡片内部垂直排列 */
    flex-direction: column;
}

.card-vertical img {
    border-radius: 20px 20px 0 0;
    width: 100%;
    height: 124px;
    object-fit: cover;
}

内容的提问来源于stack exchange,提问作者8bitmd

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.14 15:37:08