0

0

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

巴扎黑

巴扎黑

发布时间:2017-05-01 09:46:23

|

2348人浏览过

|

来源于php中文网

原创

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

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

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

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

  所以你应该把 PostCSS当作一个构建工具。它能让你用各类JavaScript插件来维护你的CSS。 这些插件可以在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

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

  PreCSS

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

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

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

  CssNext

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

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

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

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

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

  CssNano

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

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

  你可以检阅这份可优化列表:cssnano.co/optimisations/ 你也可以在Gitter上和CssNano的创造者聊聊: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+上有份完整且详细的指南,我强烈推荐你读读:webdesign.tutsplus.com/series/postcss-deep-pe–cms-889

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

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

相关文章

本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

相关专题

更多
Java 桌面应用开发(JavaFX 实战)
Java 桌面应用开发(JavaFX 实战)

本专题系统讲解 Java 在桌面应用开发领域的实战应用,重点围绕 JavaFX 框架,涵盖界面布局、控件使用、事件处理、FXML、样式美化(CSS)、多线程与UI响应优化,以及桌面应用的打包与发布。通过完整示例项目,帮助学习者掌握 使用 Java 构建现代化、跨平台桌面应用程序的核心能力。

37

2026.01.14

php与html混编教程大全
php与html混编教程大全

本专题整合了php和html混编相关教程,阅读专题下面的文章了解更多详细内容。

19

2026.01.13

PHP 高性能
PHP 高性能

本专题整合了PHP高性能相关教程大全,阅读专题下面的文章了解更多详细内容。

37

2026.01.13

MySQL数据库报错常见问题及解决方法大全
MySQL数据库报错常见问题及解决方法大全

本专题整合了MySQL数据库报错常见问题及解决方法,阅读专题下面的文章了解更多详细内容。

19

2026.01.13

PHP 文件上传
PHP 文件上传

本专题整合了PHP实现文件上传相关教程,阅读专题下面的文章了解更多详细内容。

16

2026.01.13

PHP缓存策略教程大全
PHP缓存策略教程大全

本专题整合了PHP缓存相关教程,阅读专题下面的文章了解更多详细内容。

6

2026.01.13

jQuery 正则表达式相关教程
jQuery 正则表达式相关教程

本专题整合了jQuery正则表达式相关教程大全,阅读专题下面的文章了解更多详细内容。

3

2026.01.13

交互式图表和动态图表教程汇总
交互式图表和动态图表教程汇总

本专题整合了交互式图表和动态图表的相关内容,阅读专题下面的文章了解更多详细内容。

45

2026.01.13

nginx配置文件详细教程
nginx配置文件详细教程

本专题整合了nginx配置文件相关教程详细汇总,阅读专题下面的文章了解更多详细内容。

9

2026.01.13

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
WEB前端教程【HTML5+CSS3+JS】
WEB前端教程【HTML5+CSS3+JS】

共101课时 | 8.3万人学习

Bootstrap 4 中文开发手册
Bootstrap 4 中文开发手册

共0课时 | 0人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号