flex 布局引起的元素宽度失效问题

flex 布局引起的元素宽度失效问题

有些 bug,一不注意可能排查半天都排查不出来,而它恰恰又是你自己造成的...

如下 bug 效果图,卡片样式写的好好的,图片下面的详细信息字段样式代码都是同一个(最后一行土地坐落设置的宽度是 100%,其他几个字段都是 50%),突然最后一行土地坐落抽筋了

bug 效果

在这里插入图片描述

预期效果

在这里插入图片描述

原因

愣了一下,调了几个 CSS 属性发现还是这样...到底是哪个样式写错了,起冲突了?

  • 好在没过多久就觉得似曾相识,刚开始接触 flex 布局的时候好像看到过这个"效果"
  • 之前内容比较多,通过 display: flex; 给元素设置 flex 布局的时候就会这样,然后我调整样式就调好了,这不就是还没调样式的样子吗?

让我们来回顾一下阮一峰老师 Flex 文章的基本知识 Flex 布局教程:语法篇(非常感谢阮一峰老师的分享!)

  • flex-shrink 属性定义了项目的缩小比例,默认为1,即如果空间不足,该项目将缩小。
  • 如果所有项目的flex-shrink属性都为1,当空间不足时,都将等比例缩小。如果一个项目的flex-shrink属性为0,其他项目都为1,则空间不足时,前者不缩小

(所以就算我给 图标和土地坐落这个字段设置了宽度,也没生效)

解决方案

既然知道了是 flex-shrink 属性在作祟,那我们就做了它!

给左侧两个元素设置上 flex-shrink: 0; 来避免被拉伸,右侧的文本就让它接着用默认值 1,自由拉伸,占据剩余的空间

.cardInfoItem text:nth-last-child(2) {
  flex-shrink: 0;
}
.cardInfoItem image {
  width: 28rpx;
  margin-right: 14rpx;
  flex-shrink: 0;
}

加上 flex-shrink: 0; 后,就达到了预期效果~

如果你觉得写的不错或者帮到你了,记得给我点个赞哟~

posted @   suwanbin  阅读(1191)  评论(0编辑  收藏  举报
编辑推荐:
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
点击右上角即可分享
微信分享提示