1、PostCSS是什么

它可以被理解为一个平台,可以让一些插件在上面跑

它提供了一个解析器,可以将CSS解析成抽象语法树

通过PostCSS这个平台,我们能够开发一些插件,来处理CSS。热门插件如autoprefixer

安装

npm install -g postcss-cli     //全局安装postcss
npm install -g autoprefixer //全局安装autoprefixer
//找到项目,本地安装
npm install postcss --save-dev
npm install autoprefixer --save-dev

2、能解决什么问题

/* CSS3 box-shadow */
@mixin box-shadow($top, $left, $blur, $size, $color, $inset: false) {
@if $inset {
-webkit-box-shadow: inset $top $left $blur $size $color;
box-shadow: inset $top $left $blur $size $color;
} @else {
-webkit-box-shadow: $top $left $blur $size $color;
box-shadow: $top $left $blur $size $color;
}
}

既然我们已经有SASS了,为什么还要PostCSS呢?

它的存在自有独到之处:

根据上述代码可以看到,我们用SASS来写代码,需要自己做浏览器兼容

而利用PostCSS,我们按照最简洁最惯用的写法就可以了:

box-shadow: 0 0 3px 5px rgba(222, 222, 222, .3);

autoprefixer 插件会帮我们做好兼容处理

再次说明了PostCSS是一个平台,允许强大的插件在它上面跑,简化编程。PostCSS实际上改变了一种编程模式

3、怎么实现与LESS 、SASS、Stylus相同的功能

已经强调过,PostCSS只是一个跑插件的平台,而LESS 、SASS是程序式CSS预处理语言。它们并不是一样的东西,但却可以实现相似的效果,所以常被一起比较

毫无疑问,PostCSS用插件实现和LESS 、SASS、Stylus相同的功能。

PostCSS插件系统

4、PostCSS由哪些东西组成?

从官方介绍来看,只包含以下内容:

  1. CSS Parser

  2. CSS 节点树 API

  3. source map 生成器

  4. 生成节点树串

官方API

5、在gulp中使用PostCSS

首先在你的项目中创建两个文件夹,一个命名为 src ,另一个命名为 dest 。src 文件夹用来放置未处理的CSS文件,而 dest 用来放置PostCSS插件处理后的文件。

顺便回顾一下gulp使用方法:

1、cd 进入项目文件
2、npm init 生成package.json
3、npm install gulp --save-dev 本地安装gulp(为了用插件)
4、npm install gulp-postcss --save-dev 安装插件
5、编写gulpfile.js文件
6、gulp 任务名 //运行任务

第4步之前,需要手动修改一下package.json文件:

{
"name": "testPostCSS",
"version": "0.0.1",
"description": "test PostCSS gulp plugin",
"keywords": [
"gulpplugin",
"PostCSS",
"css"
],
"author": "dll",
"license": "MIT",
"dependencies": {
"postcss": "^5.0.0",
"gulp": "~3.8.10"
},
"devDependencies": {
"gulp-postcss": "^6.0.1"
}
}

在 src 目录中创建一个测试文件 style.css ,并在这个文件中添加一些CSS的测试代码:

编写gulpfile.js文件时把新生成文件路径设置为dest;gulp taskname 执行任务,会得到一个新css文件

gulpfile.js文件这样写:

var gulp = require('gulp');
var postcss = require('gulp-postcss');
gulp.task('css', function () {
var processors = [
];
return gulp.src('./src/*.css')
.pipe(postcss(processors))
.pipe(gulp.dest('./dest'));
});

然鹅,新旧文件并没有什么不同,哈哈哈!!那是因为我们还没用postcss插件。

前面已经说过,postcss的作用相当于一个跑插件的平台,现在当然没效果咯。

接下来我们添加postcss插件,还是以Autoprefixer (处理浏览器私有前缀)为例:

1、

npm install autoprefixer --save-dev
//本地安装,将插件安装到项目

2、在gulpfile.js中添加相应代码:

var autoprefixer = require('autoprefixer');
var processors = [autoprefixer];//在processors中添加插件名,可以添加多个插件

3、给测试文件style.css添加测试代码:

.autoprefixer {
display: flex;
}

4、执行gulp任务,得到编译好的文件,你会发现,新生成的css文件中自动为display加了浏览器私有前缀。

大功告成!!

PostCSS理解与运用的更多相关文章

  1. PostCSS深入学习: PostCSS和Sass、Stylus或LESS一起使用

    如果你喜欢使用PostCSS,但又不想抛弃你最喜欢的预处理器.不用担心,你不需要作出二选一的选择,你可以把PostCSS和预处理器(Sass.Stylus或LESS)结合起来使用. 有几个PostCS ...

  2. 在 CSS 预编译器之后:PostCSS

    提到css预编译器(css preprocessor),你可能想到Sass.Less以及Stylus.而本文要介绍的PostCSS,正是一个这样的工具:css预编译器可以做到的事,它同样可以做到. “ ...

  3. [译]PostCSS介绍

    PostCSS介绍 原文链接:http://www.smashingmagazine.com/2015/12/introduction-to-postcss/ 转自:http://www.zcfy.c ...

  4. vuejs项目---配置理解:

    当我们需要和后台分离部署的时候,必须配置config/index.js: 用vue-cli 自动构建的目录里面  (环境变量及其基本变量的配置) 1 2 3 4 5 6 7 8 9 10 11 12 ...

  5. webpack 报错 No PostCSS Config found 解决方案。

    webpack 报错 No PostCSS Config found  这个问题我在百度上找了好久,也没有找到解决方案,最后没有办法只能自己去啃官方文档,本案例在本人的webpack 学习感悟中已经写 ...

  6. vue中config/index.js:配置的详细理解

    当我们需要和后台分离部署的时候,必须配置config/index.js: 用vue-cli 自动构建的目录里面  (环境变量及其基本变量的配置) var path = require('path') ...

  7. 对vue中 默认的 config/index.js:配置的详细理解 -【以及webpack配置的理解】-config配置的目的都是为了服务webpack的配置,给不同的编译条件提供配置

    当我们需要和后台分离部署的时候,必须配置config/index.js: 用vue-cli 自动构建的目录里面  (环境变量及其基本变量的配置) var path = require('path') ...

  8. [翻译]用PostCSS改善你的CSS代码质量

    “代码质量”这个术语对于程序员来说并不陌生.毕竟,每个开发人员都知道,代码只是能工作是不够的.它还应该具备其他要素:它应该是可读的,良好的格式和一致性.它也应该符合一些标准的量化指标.不过这些在写CS ...

  9. vue中webpack的配置理解

    当我们需要和后台分离部署的时候,必须配置config/index.js: 用vue-cli 自动构建的目录里面  (环境变量及其基本变量的配置) var path = require('path') ...

随机推荐

  1. 设计模式笔记:简单工厂模式(Simple Factory)

    1. 简单工厂模式简介 1.1 定义 简单工厂模式:定义一个Factory类,可以根据参数的不同返回不同类的实例,被创建的实例通常有共同的父类. 简单工厂模式:只需要一个Factory类. 简单工厂模 ...

  2. python设计模式第九天【策略模式】

    1. 定义 对一系列算法进行封装,为所有算法定义一个抽象的算法接口,可以平滑的进行算法切换 2. 策略模式的UML图 3.代码实现 #!/usr/bin/env python #! _*_ codin ...

  3. 深度学习中dropout策略的理解

    现在有空整理一下关于深度学习中怎么加入dropout方法来防止测试过程的过拟合现象. 首先了解一下dropout的实现原理: 这些理论的解释在百度上有很多.... 这里重点记录一下怎么实现这一技术 参 ...

  4. How to enable AHCI on Windows7

    HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\msahci

  5. SVG辅助标签

    前面的话 本文将详细介绍SVG辅助标签 超链接 在SVG中,可以使用超链接<a>.超链接可以添加到任意的图形上,类比于热区<area> SVG中的超链接有如下3个常用属性 xl ...

  6. pip 指定版本

    要用 pip 安装特定版本的 Python 包,只需通过 == 操作符 指定,例如: pip install -v pycrypto==2.3 将安装 pycrypto 2.3 版本.

  7. Deconvolution用法

  8. faster rcnn训练详解

    http://blog.csdn.net/zy1034092330/article/details/62044941 py-faster-rcnn训练自己的数据:流程很详细并附代码 https://h ...

  9. Vue——轻松实现vue底部点击加载更多

    前言 需求总是不断改变的,好吧,今天就把vue如何实现逐步加载更多和分布加载更多说下,默认你知道如何去请求数据的哈 一次请求 页面 使用slice来进行限制展现从0,a的数据 <div v-fo ...

  10. Python里format()方法基本使用

    '''第一种:自然连接''' #format 连接字符串 str = '{}使用的python是{}版本'.format('我','3.6.5') print(str) #打印结果:我使用的pytho ...