CSS flex 配合 calc 实现 根据实际尺寸 计算 剩余尺寸
.con{ width:100%; } div.con 下面有 两个 div.a 和 div.b 需求: 实现 .b 宽度 120px; .a 宽度为 .con 实际宽度 - .b 宽度
解决方案:
.con { width: 100%; display: flex; /* 使用 flex 布局,方便子元素宽度分配 */ box-sizing: border-box; /* 使元素的宽度包含边框和内边距 */ } .b { width: 120px; } .a { flex-grow: 1; /* 让.a 元素占据剩余空间 */ width: calc(100% - 120px); /* 使用 calc 函数计算宽度,100% 为.con 的宽度减去.b 的宽度 */ }
代码解释:
.con 类: width: 100%; 将 .con 元素的宽度设置为父元素的 100%。 display: flex; 把 .con 元素设置为弹性容器,其子元素(.a 和 .b)将遵循弹性布局规则。 box-sizing: border-box; 确保元素的宽度包含边框和内边距,防止因添加边框或内边距导致元素宽度超出 .con 的宽度。 .b 类: width: 120px; 明确设置 .b 元素的宽度为 120 像素。 .a 类: flex-grow: 1; 让 .a 元素可以占据 .con 容器中除了 .b 元素宽度外的剩余空间。 width: calc(100% - 120px); 利用 calc 函数精确计算 .a 的宽度,即 .con 的 100% 宽度减去 .b 的 120 像素宽度。 这样可以确保 .a 的宽度动态适应 .con 的宽度变化。 需要注意的是,上述代码中使用了 calc 函数,其语法为 calc(expression),expression 是一个数学表达式, 可以使用加(+)、减(-)、乘(*)、除(/)运算符,并且可以混合使用百分比和像素等不同的长度单位。 使用 flex 布局可以更好地实现子元素宽度的动态分配,当 .con 的宽度发生变化时,.a 和 .b 的宽度会根据上述规则自动调整。 同时,box-sizing 的设置可以避免一些布局上的宽度计算问题,确保布局的稳定性。