box-sizing 在老版 Chrome/Firefox 里为什么没生效
因为
在 CSS3 正式成为标准前,部分浏览器只认带前缀的写法。比如 Chrome 9–22、Firefox 4–15 都不支持无前缀的
,直接写
会被忽略。
实操建议:
必须同时写全三套:无前缀 +
+
可省略——IE8+ 已原生支持无前缀版本,IE7 及更早根本不支持
如果用 Autoprefixer,确保配置未禁用
,否则它可能自动删掉
前缀(Firefox 16+ 确实不需要了,但项目若需兼容 Firefox 15 就得留着)
border-box 在 Flex/Grid 容器里的表现差异
当元素既是
子项,又设了
,它的
计算逻辑会和普通块级元素不同:Flex 会先按 content-box 解析初始尺寸,再根据
调整 padding/border 是否挤占可用空间。
常见错误现象:
立即学习
“
前端免费学习笔记(深入)
”;
给 Flex 子项设
,结果实际占位仍是 200px(含 padding),但父容器剩余空间计算可能出错
Grid 中设
,右侧项用了
+ 大 padding,视觉上溢出,因为 Grid 轨道宽度不自动重算内边距
关键点:Flex/Grid 的尺寸分配发生在盒模型计算之前,
不改变它们的布局算法,只影响最终渲染时内容区大小。
reset.
css
里重置 box-sizing 的坑
很多 reset 库(如 Normalize.css)会在全局写
,看似省事,但容易在 SVG、表单控件或第三方组件里引发意外缩放或错位。
使用HTML,CSS,JavaScript开发Android应用程序 英文文字pdf版附源文件
如果你了解HTML,CSS和JavaScript,您已经拥有所需的工具开发Android应用程序。本动手本书展示了如何使用这些开源web标准设计和建造,可适应任何Android设备的应用程序 - 无需使用Java。您将学习如何创建一个在您选择的平台的Android友好的网络应用程序,然后转换与自由PhoneGap框架到一个原生的Android应用程序。了解为什么设备无关的移动应用是未来的潮流,并开始构建应用程序,提供更
下载
使用场景限制:
SVG 元素设
无效,且可能干扰
缩放逻辑
或
在某些旧版 Safari 中,强制
会导致内部图标被裁切
第三方 UI 组件(如 Ant Design v3)内部已精细控制盒模型,全局重置反而破坏其尺寸一致性
更稳妥的做法是只对明确需要的容器类加作用域:
。
PostCSS Autoprefixer 对 box-sizing 的处理边界
Autoprefixer 默认只补全到「主流浏览器最近两个版本」,这意味着它不会为
加
前缀——因为 Firefox 16+ 已完全支持,而当前主流版本远高于此。但如果你的
配置写了
,它就会补。
性能与兼容性提醒:
加前缀本身几乎零性能损耗,但冗余前缀会增大 CSS 体积(尤其在大量使用时)
Webpack/Vite 构建中若开启 CSS 压缩,
默认会删掉重复声明(比如
和
同时存在时只留后者),导致兼容性回退
验证方式:构建后检查生成 CSS 文件,搜索
,确认三套声明都存在且顺序正确(前缀版在前)
真正容易被忽略的是:Autoprefixer 不处理你手写的
块里的
,那些得自己手动加前缀。
box-sizingbox-sizingbox-sizing: border-box-webkit-box-sizing-moz-box-sizing-ms-box-sizingbox-sizingie >= 8-moz-div {
-webkit-box-sizing: border-box;
-moz-box-sizing: border-box;
box-sizing: border-box;
}display: flexbox-sizing: border-boxwidthbox-sizingwidth: 200px; padding: 10px; box-sizing: border-boxgrid-template-columns: 1fr 200pxborder-boxbox-sizing* { box-sizing: border-box }box-sizing: border-boxviewBoxborder-box.layout, .card, .form-field { box-sizing: border-box; }box-sizing-moz-browserslistfirefox >= 10cssnano-webkit-box-sizingbox-sizingbox-sizing@supportsbox-sizing