场景:
解决 IE11 下 使用 flex 布局 box-sizing 失效的问题
采用 flex 布局方式,每行呈现四个元素,超过个数就换行显示。布局大概如下图:
<div class="parent"> <div class="child"></div> <div class="child"></div> <div class="child"></div> <div class="child"></div> <div class="child"></div> <div class="child"></div> </div>
.parent { width: 500px; height: 500px; background-color: #000; display: flex; flex-flow: row wrap; align-content: flex-start; border: 1px solid #000; } .child { flex: 0 0 25%; height: 100px; border: 1px solid #000; background-color: pink; -ms-box-sizing: border-box; box-sizing: border-box; }
问题:
当设置 border 属性后,在谷歌、火狐浏览器都正常显示,切换到 IE11 浏览时,发现一排并未显示四个方格,情况如下:
即使 box-sizing 设置了 IE 浏览器前缀,样式也并未生效,但是去掉 border 后,排列显示正常。
原因分析:
在 flex 布局中,按照 box-sizing: boder-box 属性的原则,会影响宽度的计算。
解决方案:
给每项添加 max-width 属性,限制最大宽度,即可解决。
.child { background-color: pink; flex: 0 0 25%; max-width: calc(100%/4); height: 100px; border: 1px solid #000; -ms-box-sizing: border-box; box-sizing: border-box; }
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通