box-sizing: border-box 必须显式设在浮动元素自身上,仅设父容器无效;需配合 font-size: 0 或 calc() 消除空白与精度问题;高度塌陷须靠 BFC 解决,box-sizing 无法修复。
只给父容器设 box-sizing: border-box 没用,浮动子元素仍按默认的 content-box 算尺寸。比如两个 width: 50% 的浮动块,若各自有 padding: 10px 和 border: 1px,实际总宽就是 50% + 50% + 22px —— 必然换行或横向溢出。
必须把 box-sizing: border-box 显式加到每个浮动元素上,例如:
.col-50 {float: left;width: 50%;padding: 12px;border: 1px solid #ddd;box-sizing: border-box; /* 关键:写在这里 */}
input、textarea)可能被漏掉box-sizing 重置,得手动补 * { box-sizing: border-box } 并确保放在所有样式之前-ms-box-sizing: border-box,但现代项目通常可忽略即使 box-sizing 正确,width: 50% + width: 50% 还是换行,大概率是 HTML 源码里的换行/空格被渲染成约 4px 间隙,或者浏览器对小数百分比四舍五入导致总和略超 100%。
font-size: 0 消除空白字符间隙,子元素再单独设字号calc(50% - 1px) 替代纯百分比,留出容错空间width: calc(66.666% - 2px) + width: 33.333% 容易因计算精度错位display: flex,让 flex: 1 自动均分,彻底绕过浮动宽度陷阱box-sizing: border-box 只影响单个元素的尺寸计算,对父容器是否包含浮动子元素毫无作用。父容器高度塌陷,是因为浮动元素脱离文档流,父容器“看不见”它们。
overflow: hidden 或 overflow: auto(注意不是 visible)display: flow-root 更语义化,但 IE 完全不支持::after { content: ""; display: table; clear: both; } 兼容性最好box-sizing 能修复高度问题——它连边框都管不了,更别说布局流了写了 box-sizing: border-box 却没生效,往往不是语法错,而是被覆盖或没落到目标元素上。
box-sizing 值是不是 border-box,别只信源码写了div.card input)覆盖了你的规则::before、::after)也被重置了——它们默认仍是 content-box,悄悄撑开布局却不显眼真正麻烦的不是写错代码,而是以为写对了,结果盒子还在悄悄膨胀。
virtualbox下怎么实现ubuntu20.04开机自动挂载共享文件夹?
ubuntu20.04怎么开启护眼模式? ubuntu夜间模式的设置方法
如何在Ubuntu 20.04上安装Microsoft Edge浏览器
Ubuntu20.10优麒麟触摸手势有哪些? 优麒麟系统新增手势汇总
优麒麟20.04.1发布 更新内容汇总(附下载)
Mermaid Visual Editor 如何同步可视化操作与 Mermaid 源码?