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

杂志风格布局中网格单元格按钮垂直对齐问题

博客卡片垂直对齐问题解决办法

我在搭建个人博客时遇到了垂直对齐的问题:需要把"Read more"按钮对齐到网格单元格的底部,同时标题不能被截断,文章预览内容要根据标题的长度自适应显示行数。目前只能通过把标题截断成一行来实现按钮对齐,附上问题截图和相关代码片段寻求解决办法。

问题截图

解决方案:利用Flexbox实现自适应布局

核心思路是把每个文章卡片的容器改成垂直Flex布局,让内容区域自动填充剩余空间,从而将按钮固定在底部。

1. 修改卡片容器的Flex设置

调整.article__link的样式,让它占满网格单元格的全部高度,并设置垂直Flex布局:

.article__link {
  display: flex;
  flex-direction: column;
  height: 100%; /* 确保容器占满网格单元格高度 */
}

/* 保留原有的媒体查询设置,按需调整 */
@include media-query($small) {
  .article__link {
    flex-direction: column;
  }
}

2. 取消标题的截断限制

把.article__titles里的截断属性全部移除,让标题可以正常换行显示:

.article__titles {
  margin-bottom: $section-spacing-small / 2;
  line-height: 1.7rem; /* 保留行高保证排版美观 */
  /* 移除以下截断相关属性 */
  /* overflow:hidden; */
  /* max-height: 8rem; */
  /* -webkit-box-orient: vertical; */
  /* display: -webkit-box; */
  /* text-overflow: ellipsis; */
  /* -webkit-line-clamp: 1; */
}

3. 让预览内容自适应剩余空间

给.article__grid-excerpt添加flex-grow属性,让它填充标题和按钮之间的剩余空间,同时保留内容超出时的截断效果:

.article__grid-excerpt {
  margin-bottom: $section-spacing-small / 2;
  overflow:hidden;
  line-height: 1.7rem;
  -webkit-box-orient: vertical;
  display: -webkit-box;
  text-overflow: ellipsis;
  -webkit-line-clamp: unset; /* 取消固定行数,自适应剩余空间 */
  flex-grow: 1; /* 填充标题与按钮之间的剩余高度 */
  min-height: 0; /* 解决Flex容器中子元素溢出的问题 */
}

4. 固定按钮到单元格底部

给.article__meta-buttons添加margin-top: auto,确保按钮被推到底部:

.article__meta-buttons {
  margin-top: auto; /* 自动填充上方剩余空间,将按钮固定在底部 */
  li {
    &:first-child {
      margin-right: 1.5rem;
    }
  }
}

原理说明

通过将文章卡片容器设置为垂直Flex布局并占满网格高度,标题区域正常显示不截断,预览区域通过flex-grow自动填充标题和按钮之间的剩余空间,当预览内容超出该空间时会自动截断,最终实现按钮始终对齐到单元格底部的效果。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.19 12:55:25