PostCSS理解與運用


 

 

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加了瀏覽器私有前綴。

 

大功告成!!


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM