利用PostCSS跳进未来的CSS- JS-Republic's Blog

   2016-07-13 0

  在说明 PostCSS是什么之前,我们先理解PostCSS不是什么。

  实质上,人们第一次听说 PostCSS时,他们倾向于认为这是一款新出的CSS预处理器,类似SASS、LESS和Stylus。

  如果你想把它当作预处理器来用,那么它会如预处理器那样工作。同时它也有后处理器、优化工具、兼容未来语法的插件......你想要的功能应有尽有。

  PostCSS的主要目的是能让你使用各种工具满足你的需要。

  所以你应该把 PostCSS当作一个构建工具。它能让你用各类JavaScript插件来维护你的CSS。 这些插件可以在http://postcss.parts 这里找到

  由于有太多的插件,我们将通过这篇文章检阅一下那些常用和强大的插件。

  同时你也会了解到如何搭配使用Gulp创建一个单任务来处理CSS文件。

  Autoprefixer

  如果你之前曾用过预处理器,你该体验到不必再写前缀是件多么愉悦的事。

  举个例子,不必再这样写

:-webkit-full-screen a {
 display: -webkit-box;
 display: flex
}
:-moz-full-screen a {
 display: flex
}
:-ms-fullscreen a {
 display: -ms-flexbox;
 display: flex
}
:fullscreen a {
 display: -webkit-box;
 display: -ms-flexbox;
 display: flex
}

  只需

:fullscreen a {
 display: flex
}

  如果你想自己动手试试,可以用这个可互动demo http://autoprefixer.github.io

  文档戳这里:https://github.com/postcss/autoprefixer

  PreCSS

  即使PostCSS本不是SASS那样的预处理器,但你依然能通过一些插件来处理Sass类格式的文件。

  首选的插件是PreCSS,它集合了大量的PostCSS插件 ,让你可以编写Sass语法的样式。

  我邀请你阅读 文档来了解更多细节,也可以玩玩这个可互动 demo 来测试各种可能性。

  CssNext

  CSS4,下一代CSS,承诺将改变CSS的书写方式和选择器的使用方式。

  遗憾的是,这个版本的规范依然在制定中,并且尚未公布发行时间。

  幸运的是,如果你想使用下一代CSS的一些功能,这里有款叫CssNext的插件能帮助你。

  CSSNext的官网列出了所有支持的功能: http://cssnext.io/features/

  你也可以在这里玩玩:http://cssnext.io/playground/

  CssNano

  最后但同样重要的,关于优化。CssNano能利用不同的modules压缩和优化你的CSS代码。

  我推荐你禁用the z-index,因为它很可能会扰搞乱你原本正常的z-index。

  你可以检阅这份可优化列表:http://cssnano.co/optimisations/ 你也可以在Gitter上和CssNano的创造者聊聊:https://gitter.im/ben-eb/cssnano

  现在,我们看看如何利用Gulp使用这些插件。

  Gulp x PostCSS

  Gulp

  首先,以dev dependencies 的方式安装Gulp、Gulp Load Plugins 和Gulp PostCSS 。在控制台执行以下命令:

npm i -D gulp gulp-load-plugins gulp-postcss

  在你需要使用Gulp的地方创建一个 gulpfile.js 并加入如下代码。

var gulp = require(gulp),

  添加 Gulp Load PLugins的代码:

$ = require(gulp-load-plugins)();

  Gulp Load Plugins依赖会 通过$调用你需要的插件。

  PostCSS

  接下来,同样以dev dependency的方式需要安装所需要的PostCSS插件

npm i -D autoprefixer cssnano cssnext precss

  安装好后加入到gulpfile.js

// PostCSS Plugins
var autoprefixer = require(autoprefixer),
cssnext = require(cssnext),
precss = require(precss),
cssnano = require(cssnano);

  接下来开始写 Gulp CSS任务

// Gulp task to process CSS with PostCSS plugins 
gulp.task(css, function() {

 });

  在这个任务中,我们首先用一个变量来保存准备用到的PostCSS插件

var processors = [autoprefixer, cssnext, precss, cssnano({zindex: false})];

  设置CssNano的 zindex:false 禁止其重设我们的 z-index。

  为了处理CSS文件,我们需要检索如下文件:

return gulp.src(./source/css/style.css)

  然后通过processors变量内的PostCSS插件来处理CSS文件。

  使用pipe方法串联起处理过程

.pipe($.postcss(processors))

  用如下代码输出处理完成的文件

.pipe(gulp.dest(./public/assets/stylesheets));

  以上全部,就是你使用PostCSS 插件处理CSS时所要做的事。

var gulp = require(gulp),
$ = require(gulp-load-plugins)();

// PostCSS Plugins
var autoprefixer = require(autoprefixer),
cssnext = require(cssnext),
precss = require(precss),
cssnano = require(cssnano);

// Gulp task to process CSS with PostCSS plugins
gulp.task(css, function() {
var processors = [autoprefixer, cssnext, precss, cssnano({zindex: false})];

return gulp.src(./source/css/style.css)
.pipe($.postcss(processors))
.pipe(gulp.dest(./public/assets/stylesheets));
});

  在 Tuts+上有份完整且详细的指南,我强烈推荐你读读:http://webdesign.tutsplus.com/series/postcss-deep-dive–cms-889

  我也利用这些PostCSS插件创造了一份boilerplate样板,可以帮你快速上手: https://github.com/PierrickGT/PCGB

  http://blog.js-republic.com/jump-into-the-future-of-css-with-postcss/

 
标签: PostCSS
反对 0举报 0 评论 0
 

免责声明:本文仅代表作者个人观点,与乐学笔记(本网)无关。其原创性以及文中陈述文字和内容未经本站证实,对本文以及其中全部或者部分内容、文字的真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
    本网站有部分内容均转载自其它媒体,转载目的在于传递更多信息,并不代表本网赞同其观点和对其真实性负责,若因作品内容、知识产权、版权和其他问题,请及时提供相关证明等材料并与我们留言联系,本网站将在规定时间内给予删除等相关处理.

  • react 运行报错 Error: PostCSS plugin postcss-pxtorem requires PostCSS 8.
    react 运行报错 Error: PostCSS plugin postcss
    postcss-pxtorem使用方法:https://www.cnblogs.com/liangziaha/p/13636936.html 这里报错 postcss-pxtorem 需要 8. 我以为要使用postcss-pxtorem 8.以上的版本就去看了一下postcss-pxtorem版本最高才6.0  这里降低  postcss-pxtorem@5.1.1npm i postcs
    03-08
  • Vue PostCSS的使用介绍
    目录PostCSS使用安装依赖运行使用第三方插件autoprefixer使用第三方插件postcss-preset-env使用第三方插件postcss-pxtorem运行的新方式PostCSSpostcss 一种对css编译的工具,类似babel对js的处理,常见的功能如:1 . 使用下一代css语法2 . 自动补全浏览器前缀
    03-08
  • webpack2以后配置postcss webpack的基础配置
    需要有专门的postcss.config.js放置在根目录,内容是1 module.exports = {2 plugins: [3 require('autoprefixer')({4 browsers: ['last 5 versions']5 })6 ]7 } 
    02-08
  • Webpack实战(七):简单搞懂PostCSS的用法及与一些插件的用法
    Webpack实战(七):简单搞懂PostCSS的用法及与
    不知不觉地春节要来临了,今天已经是放假的第二天,想想回老家之后所有的时间就不是自己的了,要陪孩子玩,走亲戚等等,我还是趁着在郑州的这两天,把几天后春节要发布的文章给提前整整。在此,提前祝大家春节快乐!!前面我已写了6篇相关的Webpack方面的技术
    02-08
  • webpack插件url-loader使用规范 webpack postcss-loader
    webpack插件url-loader使用规范 webpack postcs
    其实说到性能优化,他的范围太广了,今天我们就只聊一聊通过webpack配置减少http请求数量这个点吧。简单说下工作中遇到的问题吧,我们做的一个项目中首页用了十多张图片,每张图片都是一个静态资源,所以都会有http请求,为了减少请求,我们可以通过base64编
    02-08
  • webpack4 css添加浏览器前缀 postcss-loader
    自动添加浏览器前缀 ,我们这里使用postcss-loader首先  cnpm install --save-dev postcss-loader autoprefixer 我这里用的cnpm ,npm也可以下载接下来是配置在网上查了相关文档发现需要新建一个 postcss.config.js 文件来对 postcss-loader 配置。  第一
    02-08
  • postcss-loader有什么用?如何配置webpack让浏览
    Postcss 本身是一个功能比较单一的工具。它提供了一种方式用 JavaScript 代码来处理 css。它负责把 CSS 代码解析成抽象语法树结构(Abstract Syntax Tree,AST),再交由插件来进行处理。插件基于CSS 代码的 AST 所能进行的操作是多种多样的,比如可以支
    02-08
  • 详细解读CSS的预编译器PostCSS
    详细解读CSS的预编译器PostCSS
    这篇文章主要介绍了详细解读CSS的预编译器PostCSS,PostCSS与其他CSS预编译器比起来结构更为简洁,需要的朋友可以参考下
    08-19 cssPostCSS
点击排行