PostCSS - preCSS
precss 是postcss的预处理插件, 功能类似于less、sass. 其语法也与scss最为接近。
配置插件
webPack
1 . 在package.json下的devDependencies中配置:
"postcss-import": "^7.0.0",
"postcss-simple-vars": "^1.0.0",
"precss": "^1.4.0",
2 . webpack.config.js的postcss项配置:
postcss: function () {
return [
require('postcss-import')({ // Import all the css files...
glob: true,
onImport: function (files) {
files.forEach(this.addDependency); // ...and add dependecies from the main.css files to the other css files...
}.bind(this) // ...so they get hot–reloaded when something changes...
}),
require('precss')
];
}
3 . npm install 添加依赖包
4 . 启动服务
使用说明
变量
使用 $作为声明
$light-grey: #EDEDED;
background-color: $light-grey;
编译后生成:
background-color: #EDEDED;
嵌套
.customer-list{
padding: 20px;
li{
padding: 15px;
}
}
编译后:
.customer-list {
padding: 20px;
}
.customer-list li {
padding: 15px;
}
函数声明
@define-mixin 函数名 参数, 参数, ….{}
@define-mixin icon $network, $color {
.button.$(network) {
background-image: url('img/$(network).png');
background-color: $color;
}}
编译后
.button.twitter {
background-image: url('img/twitter.png');
background-color: blue;
width: 3rem;
}
.button.youtube {
background-image: url('img/youtube.png');
background-color: red;
width: 4rem;
}
继承
定义一个可重复使用的代码块
@define-extend 名称 { }
@define-extend rounded_button {
border-radius: 0.5rem;
padding: 1em;
border-width: 0.0625rem;
border-style: solid;
}
.blue_button {
@extend rounded_button;
border-color: #2F74D1;
background-color: #3B8EFF;
}
.red_button {
@extend rounded_button;
border-color: #C41A1E;
background-color: #FF2025;
}
编译后
.blue_button,
.red_button {
border-radius: 0.5rem;
padding: 1em;
border-width: 0.0625rem;
border-style: solid;
}
.blue_button {
border-color: #2F74D1;
background-color: #3B8EFF;
}
.red_button {
border-color: #C41A1E;
background-color: #FF2025;
}
imports
推荐使用 postcss-import 可以引入整个文件夹,而且可以配置热更新。
@charset "UTF-8";
@import "_variables.css";
@import "_helper.css";
@import "_base.css";
@import "components/*.css";
@import "pages/*.css";
其它
条件判断和遍历在开发中很少使用,为节省时间暂不描述,以后补上。有兴趣的可以参考https://github.com/jonathantneal/precss
webstorm 编写preCss
webstorm中有自带的.less, .sass, .scss文件编辑器,但搜不到专门的precss的插件, 因为precss与scss的语法最为接近,可以将 .css与scss文件类型关联起来。
- Preferences -> Editor -> File Types -> Cascading Style Sheet 在Registered Patterns中删除 .css关联
- Preferences -> Editor -> File Types -> SCSS 下在Registered Patterns中添加 .css关联
- 随便找一个css文件,右键,将文件类型关联改成scss就可以了。