如何在CSS中固定卡片尺寸?解决卡片随文本伸缩问题
解决卡片尺寸不一致的问题
要让所有卡片保持固定尺寸,不受内部文本长度影响(文本较少时保留空白区域),可通过以下CSS修改实现:
修改后的完整CSS代码
@import url("https://fonts.googleapis.com/css?family=Poppins&display=swap"); * { margin: 0; padding: 0; } html { box-sizing: border-box; font-size: 62.5%; } body { background-color: #eee; font-family: "Poppins", sans-serif; display: flex; justify-content: center; align-items: center; min-height: 93vh; } .grid { display: grid; width: 104em; grid-gap: 6rem; grid-template-columns: repeat(auto-fit, minmax(30rem, 1fr)); /* 强制所有网格项高度一致 */ align-items: stretch; } .grid-item { background-color: #fff; border-radius: 0.4rem; overflow: hidden; box-shadow: 0 3rem 6rem rgba(0, 0, 0, 0.1); cursor: pointer; transition: 0.2s; /* 让卡片内部垂直布局并撑满高度 */ display: flex; flex-direction: column; } .grid-item:hover { transform: translateY(-0.5%); box-shadow: 0 4rem 8rem rgba(0, 0, 0, 0.5); } .card-img { display: block; object-fit: cover; width: 300px; height: 300px; } .card-content { padding: 2rem; /* 让内容区域占据卡片剩余空间 */ flex: 1; display: flex; flex-direction: column; } .card-header { font-size: 2rem; font-weight: 500; color: #0d0d0d; margin-bottom: 1.5rem; } .card-text { font-size: 1.5rem; letter-spacing: 0.1rem; line-height: 1.25; color: #3d3d3d; /* 文本区域自动填充剩余空间,保证按钮位置统一 */ flex: 1; margin-bottom: 2rem; } .card-btn { display: block; width: 100%; padding: 1.5rem; font-size: 1.5rem; text-align: center; color: #3363ff; background-color: #d8e0fd; border: none; border-radius: 0.4rem; transition: 0.2s; cursor: pointer; letter-spacing: 0.1rem; } .card-btn span { margin-left: 1rem; transition: 0.2s; } .card-btn:hover, .card-btn:active { background-color: #c2cffc; } .card-btn:hover span, .card-btn:active span { margin-left: 1.5rem; } @media only screen and (max-width: 60em) { body { padding: 2rem; } .grid { grid-gap: 2rem; } }
核心修改说明
- 网格容器设置:将
.grid的align-items从start改为stretch,强制所有网格项高度统一 - 卡片布局:给
.grid-item添加display: flex; flex-direction: column;,让卡片内部元素垂直排布并撑满网格项高度 - 内容区域自适应:
- 给
.card-content设置flex: 1;,让内容区域占据卡片剩余空间 - 给
.card-text设置flex: 1;,让文本区域自动填充空白,确保按钮始终固定在卡片底部
- 给
问题效果参考图:
内容的提问来源于stack exchange,提问作者dude
相关产品推荐
相关产品推荐

