node sass 不处理 flexbox 兼容性,需经 autoprefixer 补全前缀;ie10/11 和 android 4.4 需手动双写 -ms-flexbox 与 -webkit-box 语法,且声明顺序和属性名不可错。

Node Sass 本身不处理 Flexbox 兼容性
Node Sass 只负责把 .scss 编译成标准 CSS 字符串,它完全不识别浏览器能力,也不会加任何前缀。写 @include flex-center 或 display: flex,输出就是原样那行,-ms-flexbox、-webkit-box 这些一个都不会冒出来。
Autoprefixer 必须在 Node Sass 之后运行
兼容性补全是构建链路的事,不是 Sass 的事。真实流程必须是:node-sass → 输出纯 CSS → postcss-loader + autoprefixer → 输出带前缀的终版 CSS。
根据 package.json 中的 engines 字段自动检测 Node.js 版本需求,未安装 nvm 时自动安装并切换至对应版本。支持 Windows、macOS、Linux。适用于 Node.js 项目开发、版本切换和环境配置。
- Webpack 用户要确认
postcss-loader在sass-loader之后、css-loader之前 -
postcss-loader的plugins必须显式写成[require('autoprefixer')],不能只传字符串['autoprefixer'] -
browserslist配置必须包含目标旧版本,例如"IE >= 10", "iOS >= 9.3", "Android >= 4.4";写"last 2 versions"会漏掉-ms-flexbox - 直接打开编译后的
.css文件搜索-ms-flexbox或-webkit-box,而不是看.scss源码里有没有@mixin
IE10/11 和 Android 4.4 必须手动写 -ms-flexbox 和 -webkit-box
Autoprefixer 不生成 -ms- 专属语法,也不回溯 -webkit-box(它属于已废弃但微信/旧安卓还在用的 Box 模型)。这两套必须手写,且顺序不能错:
- 容器声明顺序必须是:
display: -webkit-box→display: -ms-flexbox→display: flex -
-webkit-box下的对齐要用-webkit-box-pack和-webkit-box-align,不是justify-content - 子项伸缩要双写:
-webkit-box-flex: 1和flex: 1缺一不可;仅写后者,Android 4.3 下子项不会占满剩余空间 - 微信 6.0 以下机型只认
-webkit-box,写了-webkit-flex它们直接忽略整条规则
别用参数化 @mixin 封装 Flex 布局
传参式 @mixin flex($dir, $jc) 看似灵活,实际掩盖了 IE 和 WebKit 旧引擎下属性名不一致的事实。比如 justify-content: center 对应的是 -ms-flex-pack: center,不是 -ms-flex-justify。
- 推荐按高频场景封装固定组合,例如:
@mixin flex-row-center内部硬编码-webkit-box-pack: center、-ms-flex-pack: center、justify-content: center - 所有声明必须显式写出,不能依赖 Autoprefixer 推导
- 不要在 mixin 里拼
calc()——Sass 编译期不执行运行时计算,会报Operation error
-webkit-box 和 -ms-flexbox 是语法断裂,不是简单前缀差异。漏掉其中一层,就等于放弃对应设备上的布局控制权。前端入门到VUE实战笔记:立即使用
在学习笔记中,你将探索 前端 的入门与实战技巧!










