iT邦幫忙

第 12 屆 iThome 鐵人賽

DAY 13
0
Modern Web

不只是寫寫CSS,切版概念30天系列 第 13

DAY13 - Postprocessor - PostCss 基本介紹

  • 分享至 

  • xImage
  •  

除了scss/css 之外,還有一個切版人可以知道的東西! PostCSS~

1-1. Preprocessor vs Postprocessor

  • 除了Preprocessor,其實還有postprocessor

1-1-1. 什麼是 Preprocessor (預處理器)?

  • 在Css之前,
  • 預處理器是讓開發者撰寫一些類似 CSS 語法的指令,再轉為瀏覽器能懂的 CSS;
  • EX. LESS、SASS、SCSS

1-1-2. 什麼是 postprocessor (後處理器)?

  • 在Css之後
  • 後處理器就是讓開發者依然撰寫 CSS,再經過擴充功能(plugin)的後製處理,將特定功能轉成瀏覽器能懂的指令。
  • EX. PostCSS

1-2-3. PostProcessor 的優點?

1. 彈性、擴充性高

如果你選了SCSS,你就必須接受SCSS的一切
(接受他的語法,要用就要用一整套SCSS,你不能只選擇你要的某些功能)

但是如果你用了postcss,你可以選擇你自己想要的功能
可以像 LEGO 般只根據需要加入或刪除功能,像是 precss、prefix、mixin 等。

並且,未來若主流瀏覽器支援了這些功能,要拔除特定 plugin 是很容易的。

2. 你可以寫自己的plugin

可以用javascript寫自己的plugin,解析css語法並且加入一些自己想要的東西


1-2. PostCss

1-2-1. PostCss 入門介紹

  • Initial release November 4, 2013
  • 透過 Javascript plugin轉化css style
  • PostCSS 的核心是 Node.js module,因此你可以用npm安裝
  • 目前有超過200個plugin可以使用
  • 雖然大部分的人會把PostCSS歸類為 Postprocessor,但也有人說他兩者都是,因為有的plugin其實是屬於前處理
  • PostCSS 基本上不太需要像SASS/SCSS學其他語法,安裝上plugin後幾乎可直接使用
運作原理
  • PostCSS 是以css為輸入,提供API來分析、修改它的規則。
  • 由API轉換組成的Plugin可轉換成很多有用的功能 Ex. 自動添加css prefix, 尋錯等等


https://2019.stateofcss.com/technologies/pre-post-processors/

1-2-2. PostCss 環境設定

  1. PostCSS 一般不單獨使用,而是與目前已有的打包工具一起使用。如目前主流的打包工具:Webpack、Grunt、Parcel 和 Gulp 都可以。
  2. 針對不同的打包工具做不同的配置,即可使用 PostCSS 及其相關plugin

You can start using PostCSS in just two steps:

  1. Find and add PostCSS extensions for your build tool.
  2. Select plugins and add them to your PostCSS process.

以下示範以Parcel進行設定:

1-2-2-1 前情提要 - 什麼是Parcel ?


號稱打包零設定的打包工具,適合輕量化的專案

Parcel 安裝
step1 安裝 Parcel

npm install -g parcel-bundler

step2 在你的專案中建立 package.json 檔案

npm init -y

step3 指定進入點

parcel index.html

Parcel 內建了開發專用的伺服器,在你更動檔案的同時會自動重新編譯你的 app,並啟用模組熱替換(hot module replacement )以提高開發效率,你只需要指定進入點:

1-2-2-2 將PostCSS 加入 專案中

新增一個 postcss.config.js 在專案資料夾的root中,將所需的plugin 加入其中 eg. autoprefixer

module.exports = { 
     plugins: [
        require('autoprefixer’)
       
    ]
 }

1-2-3. PostCss Plugin Demo

Plugin 1. Autoprefixer

  • 應該是最有名的 PostCss plugin
  • 很多著名的公司其實都有用這個 plugin Google, Twitter, and Shopify
  • 主要的功能:當需要的時候,將CSS屬性加入各家瀏覽器的前綴詞(prefix),例如:-webkit-、-moz-。
  • Autoprefixer的資料來源是 Can I Use ,因此他可以確保他規則會一直是最新的規則
step1. 安裝 plugin - Autoprefixer

執行 npm install autoprefixer --save-dev

package.json中會新增 autoprefixer

step2. 在 postcss.config.js 加入 plugin

postcss.config.js

module.exports = {
    plugins: [
        require('autoprefixer') 
    ]
}
step3. 可以看到結果囉
  • autoPrefixer 的瀏覽器版本可以自行定義,文件可參考:https://github.com/postcss/autoprefixer

Plugin 2. Lost Grid

  • Grid System
  • 使用 calc() 計算grid
  • 瀏覽器支援度很高(支援calc基本上就支援),支援至 IE9 +
  • 也有 flexbox模式,支援 IE10+
step1. 安裝 plugin - Lost

執行 npm install lost --save-dev

package.json

step2. 在 postcss.config.js 加入 plugin

postcss.config.js

module.exports = {
    plugins: [
        require('lost')
    ]
}
step3. 可以看到結果囉

其他Plugin

參考資料

PostCss 官方文件
https://github.com/postcss/postcss

10 Awesome PostCSS Plugins to Make You a CSS Wizard https://www.hongkiat.com/blog/postcss-plugins/

Some things you may think about PostCSS... and you might be wrong
http://julian.io/some-things-you-may-think-about-postcss-and-you-might-be-wrong/


上一篇
DAY12 - 邏輯性的歸納你的CSS/SCSS - Sass 7-1 Pattern
下一篇
DAY14 -Postprocessor - PostCss 原理解析
系列文
不只是寫寫CSS,切版概念30天30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言