原理
用JS来处理CSS 每个 PostCSS 插件都是一个 NodeJS 的模块
现在有200多个插件,但还不够用
主要功能
- 把 CSS 解析成 JavaScript 可以操作的 AST;
- 调用插件 处理 AST,得到结果
可以支持变量和混入(mixin),增加浏览器相关的声明前缀,
或是把使用将来的 CSS 规范的样式规则转译(transpile)成当前的 CSS 规范支持的格式
常用的PostCSS插件
1. postcss-reporter
在控制台中,记录PostCSS消息 postcss报告器 一个PostCSS插件,用于对它的他PostCSS插件注册的消息( 警告,等等 ) 进行 console.log() 处理。命令行目就 PostCSS 4.1而言,单个PostCSS进程可以从它所使用的
2. Autoprefixer
#content {
display: flex;
}
变为:
#content {
display: -webkit-box;
display: -webkit-flex;
display: -ms-flexbox;
display: flex;
}
3. cssnext
允许开发者在当前项目中使用将来CSS版本的新特性(就像将ES6/7/8 转为 ES5)
- 自定义属性和变量
- 可以写变量
- 样式规则嵌套
.message {
font-weight: normal;
& .header {
font-weight: bold;
}
@nest .body & {
color: black;
}
}
// 用cssnext转换为:
.message {
font-weight: normal
}
.message .header {
font-weight: bold;
}
.body .message {
color: black;
}
// 模块化CSS modules
:global .title {
font-size: 20px;
}
.content {
font-weight: bold;
}
// 变为:
.title {
font-size: 20px;
}
._content_6xmce_5 {
font-weight: bold;
}
不能简单的把 PostCSS 归类成 CSS 预处理或后处理工具。PostCSS 所能执行的任务非常多,同时涵盖了传统意义上的预处理和后处理。
CSS在项目中目前是什么样子
目前大家都是 SASS + PostCSS 这样的开发模式,其实我认为是不错的,取长补短嘛,当然,在 PostCSS 平台上都是可以做到的,只是目前这个过渡期,这样更好,更工程化。 还有一些方法来纯粹是用 PostCSS。