PostCss

摘自

http://ju.outofmemory.cn/entry/215105

http://www.w3cplus.com/PostCSS/postcss-deep-dive-preprocessing-with-precss.html

PostCss是啥

官方定义

“PostCSS is a tool for transforming CSS with JS plugins. These plugins can support variables and mixins, transpile future CSS syntax, inline images, and more.

PostCss是一个可以运行在Gulp Grunt Webpack中的插件

同时它又是一套CSS处理插件的一个环境

PostCss怎么用

基本和Sass一样 要和Sass那样使用变量

css

/PostCSS是一个Gulp插件 同时是一套Css插件的运行环境/

/PostCSS和Sass语法最为相似 PostCSS将Sass那样的表达形式直接写在css文件中/

.menu1 {

width: 100%;

a {

text-decoration: none;

}

&::before {

content: '';

}

}

/使用PreCSS插件(PostCSS中的插件)来做变量 条件处理/

/*PreCSS is a tool that allows you to use Sass-like markup in your CSS files.

Enjoy a familiar syntax with variables, mixins, conditionals, and other goodies.

*/

/LESS中使用@符声明变量,比如@color: #ccc;

Stylus中使用$符声明变量,比如$color=#ccc;

Sass中使用$符声明变量,比如$color: #ccc;
/

$text_color: #232323;

$blue: #056ef0;

$column: 200px;

body {

color: $text_color;

}

.menu {

width: calc(4 * $column);

}

.menu_link {

background: $blue;

width: $column;

}

/条件/

/和Sass一样 判断表达式两边要有空格 否则不识别表达式/

$column_layout: 2;

.column {

@if $column_layout == 2 {

width: 50%;

float: left;

}

@else {

width: 100%;

}

}

/循环/

.for-test {

@for $i from 1 to 3 {

p:nth-of-type($i) {

margin-left: calc( 100% / $i);

}

}

}

/*each循环在循环体中不是 $icon 而是 $(icon) */

.each-test {

@each $icon in (foo, bar, baz) {

.icon-$(icon) {

background: url('icons/$(icon).png');

}

}

}

/包含mixin/

/@define-mixin 规则名 变量名/

@define-mixin icon $name {

padding-left: 16px;

&::after {

content: "";

background-url: url(/icons/$(name).png);

}

}

.search {

@mixin icon search;

}

.search2{

@mixin icon search2;

}

/扩展/

@define-extend bg-green {

background: green;

}

.notice--clear {

@extend bg-green;

}

.xx-clear{

@extend bg-green;

}

/扩展会减少冗余 得到的结果如下/

/.notice--clear, .xx-clear {

background: green;

}
/

/值的复制/

/最后得到 margin: 20px;padding: 20px;/

.heading {

margin: 20px;

padding: @margin;

}


###结合Gulp
```javascript``` var gulp = require('gulp');
var postcss = require('gulp-postcss');
var sourcemaps = require('gulp-sourcemaps');
gulp.task('css', function() { return gulp.src('src/*.css')
.pipe(sourcemaps.init())
.pipe(postcss([require('autoprefixer'), require('precss')]))
//.pipe(postcss([ autoprefixer({ browsers: ['last 2 versions'] }) ]))
.pipe(sourcemaps.write('.'))
.pipe(gulp.dest('build/'));
}); gulp.task('watch',function() {
gulp.watch('src/*.css', ['css']);
}); gulp.task('default', ['css','watch']);

结合Webpack

注意,webpack对css的各个资源引用都有检查,比如背景图片不存在的话,会有Error

javascript

var webpack = require('webpack');

var path = require('path');

module.exports = {

entry: path.join(__dirname, 'main.js'),

output: {

path: path.join(__dirname, 'out'),

publicPath: "./out/",

filename: 'bundle.js'

},

module: {

loaders: [{

test: /.css$/,

loader: "style-loader!css-loader!postcss-loader"

}]

},

postcss: function() {

return [require('autoprefixer'), require('precss')];

}

}

PS
main.js和style.css在同一个文件夹中
在main.js中需要引入这个css文件才行```var css = require('./style.css');```

PostCss 从0开始的更多相关文章

  1. PostCSS理解与运用

    1.PostCSS是什么 它可以被理解为一个平台,可以让一些插件在上面跑 它提供了一个解析器,可以将CSS解析成抽象语法树 通过PostCSS这个平台,我们能够开发一些插件,来处理CSS.热门插件如a ...

  2. 从 0 到 1 到完美,写一个 js 库、node 库、前端组件库

    之前讲了很多关于项目工程化.前端架构.前端构建等方面的技术,这次说说怎么写一个完美的第三方库. 1. 选择合适的规范来写代码 js 模块化的发展大致有这样一个过程 iife => commonj ...

  3. json-sever 配置与应用

    先安装 node.js. 全局安装 json-server: npm install json-server -g 检查是否安装成功: json-server -h 安装好后,json-server的 ...

  4. 发布vue插件到npm上

    总体分为2个步骤 一,先写好插件 二,发布到npm上面 一,写vue插件 vue有一个开放的方法install,在vue插件需要写在这个方法里面,在vue官网,里面说的很清楚,这个方法里面可以是全局方 ...

  5. npm包发布过程

    在上一章节中,我封装了一个基于react的树状组件,后来想把它发布到npm上,下面主要介绍一下发布过程中遇到的问题: 1.去注册npm账号,注册地址(https://www.npmjs.com), 再 ...

  6. Angular CLI: 1.6.7 入门

    当你使用npm或者yarn也安装不了angular-cli时,请使用淘宝镜像. Step1 npm i -g cnpm --registry=https://registry.npm.taobao.o ...

  7. 微信小程序~调试

    小程序调试面板 模拟器 模拟器模拟微信小程序在客户端真实的逻辑表现,对于绝大部分的 API 均能够在模拟器上呈现出正确的状态. 自定义编译 点击工具栏中的编译按钮或者使用快捷键 Ctrl(⌘) + B ...

  8. ZAM 3D 制作简单的3D字幕 流程(二)

    原地址:http://www.cnblogs.com/yk250/p/5663907.html 文中表述仅为本人理解,若有偏差和错误请指正! 接着 ZAM 3D 制作简单的3D字幕 流程(一) .本篇 ...

  9. ZAM 3D 制作3D动画字幕 用于Xaml导出

    原地址-> http://www.cnblogs.com/yk250/p/5662788.html 介绍:对经常使用Blend做动画的人来说,ZAM 3D 也很好上手,专业制作3D素材的XAML ...

随机推荐

  1. css selection改变文字反选的背景颜色

    <style type="text/css"><!--.ai::-moz-selection { background:#cc0000; color:#fff; ...

  2. mongodb高可用集群搭建

    集群构架图如下: 集群大致文件结构:(192.168.137.101节点) 先搭建3个副本集 rs1/mongod.conf rs1/start.sh rs2/mongod.conf 后面类似.... ...

  3. typedef用法总结。

    引用贴:http://www.cnblogs.com/csyisong/archive/2009/01/09/1372363.html 首先#define为预处理,与typedef是完全不同的机制.详 ...

  4. 多个DLL合并,DLL合并到EXE

    1:) 下载 http://download.microsoft.com/download/1/3/4/1347C99E-9DFB-4252-8F6D-A3129A069F79/ILMerge.msi ...

  5. java小型科学计算器

    /** * 1.先转换为逆波兰顺序 * 数字直接存入list,符号压入栈中,但是如果栈底元素不大于该运算符的运算顺序,则将栈底pop,直到大于栈底运算符为止,再压入栈中, * 最后将运算符依次全部po ...

  6. ubuntu_安装aptana3

    下面记录下偶怎么安装aptana3(aptana2应该也适用). 安装java运行时,偷看这里 说明:实际上偶并没有执行这步,因为发现在安装aptana3之前 java的运行时已经安装过了. 貌似是安 ...

  7. cdoj 排名表 拓扑排序 排名输出 贪心

    //并不理解为什么需要反向建图,由大到小倒序确定排名.感觉正向由小到大和反向由大到小应该是一样的. 解:拓排+贪心,反向建边,先找排名靠后的(now,不知道为什么) #include<cstdi ...

  8. 2014上半年acm总结(1)(入门+校赛)

    大一下学期才开始了acm,不得不说有一点迟,但是acm确实使我的生活充实了很多,,不至于像以前一样经常没事干=  = 上学期的颓废使我的c语言学的渣的一笔..靠考前突击才基本掌握了语法 寒假突然醒悟, ...

  9. 理解Java多态

    多态又称Polymophism,poly意思为多,polymophism即多种形态的意思.一种类型引用因为指向不同的子类,表现出不同的形态,使用不同的方法. 什么是多态 多态建议我们编码时使用comm ...

  10. 全国计算机等级考试二级教程-C语言程序设计_第8章_地址和指针

    面试: unsigned int *p1 = &num; int *p2 = &num; #define _CRT_SECURE_NO_WARNINGS #include<std ...