目录
摘要
正文
1.项目设置
2.安装插件
3.安装多个插件
4.插件的执行顺序
总结
作者信息:
首页 web前端 html教程 如何结合Gulp使用PostCss_html/css_WEB-ITnose

如何结合Gulp使用PostCss_html/css_WEB-ITnose

Jun 24, 2016 am 11:16 AM

摘要

PostCSS 是使用 JS 插件来转换 CSS 的工具,支持变量,混入,未来 CSS 语法,内联图像等等。PostCSS的目标是通过自定义插件和工具这样的生态系统来改造CSS。与Sass和Less这些预编译器相同的原则,PostCSS把扩展的语法和特性转换成现代的浏览器友好的CSS。使用Gulp工具,我们可以通过构建过程转换样式,就像Sass和Less的编译。

正文

PostCSS 现在已经普及了一段时间,如果您还没有使用过它或不知道PostCSS是什么,那么我建议您看看这篇 PostCSS简介 ,该文章介绍了PostCSS的基础知识,包括如何安装和使用一些PostCSS插件。

在本教程中,我将向您展示如何结合Gulp使用PostCSS,一个流行的自动化工具。由于这篇文章不是一个关于Gulp的入门教程,所以我不会涵盖 Gulp 的基础知识。但为了快速入门,您可以看看这篇 Gulp.js简介 。

1.项目设置

在开始本教程之前,你应该创建一个项目文件夹用来工作。该文件夹内应该已经安装了Gulp以及两个内部文件夹,名称分别为“initial”和“final”(或您选择的其它名称)。所谓的“initial”的文件夹将存放你的原材料和未加工的CSS代码。 “initial”文件夹将存放处理过的文件,随时可以使用。

在继续之前,在您的项目文件夹中打开使用终端,运行以下命令:

npm install gulp-postcss --save-dev

PS:--save-dev补充:表示将正在安装的插件作为依赖添加到project.json文件里。这将对多人合作模式有很大的帮助。当其他开发人员运行 npm install 在软件包安装命令,所有的插件将被自动安装。

此时你的文件夹结构应该是:

  • initial —您的原始CSS文件的文件夹。

    • style.css —未处理的css样式,我们将在稍后进行编辑。

  • final — 处理过的css文件的文件夹

  • node_modules — 所有NPM模块的文件夹

    • gulp — 当你安装Gulp时创建的文件夹

    • gulp-postcss —运行上面的命令后创建的文件夹。

  • guplfile.js —你的 Gulp文件

  • package.json —你的 package.json 文件

2.安装插件

开始之前,我们先安装一些基本的插件。我们将要使用的插件是 short-color (一个颜色插件).这个插件基本上扩展了现有的颜色属性,并且可以设置第二个颜色值(将会被作为背景颜色)。运行以下命令来安装 short-color。

npm install postcss-short-color --save-dev

你还可以同时安装使用gulp-postcss和postcss-short-color :

npm install gulp-postcss postcss-short-color --save-dev

这两个插件安装完毕后,你需要打开并编辑gulpfile.js文件,这样就可以开始使用该插件工作。我们首先通过以下代码来启用这两个插件:

var gulp = require('gulp');    var postcss = require('gulp-postcss');    var shortColor = require('postcss-short-color');
登录后复制

现在,让我们建立一个gulp任务来处理我们的原始的CSS文件,并创建一个准备就绪的样式表。下面是代码这样做:

gulp.task('css', function () {      return gulp.src('initial/*.css')      .pipe(postcss([shortColor]))      .pipe(gulp.dest('final'));    });    
登录后复制

我首先创建一个名为CSS的任务。当你要运行相应的功能时可以用到这个名字。您可以在gulp.src()内部指定要处理的文件。使用*的CSS将处理“intial”文件夹内所有的CSS文件。

接下来,我们使用pipe()函数来调用我们的所有插件。要做到这一点,我们需要将所有的插件作为参数传递给postcss()函数。在我们的基本的例子中,我们实际上只有一个插件需要传递。 在下一节,我会告诉你如何传递多个插件。插件通过管道后,gulp.dest()将被用于设置处理的文件的目的地。

为了测试,如果一切已正确设置,在“initial”文件夹内创建一个style.css文件。 style.css文件将有以下的CSS:

section {    color: white black;}
登录后复制

接下来,你需要在你的终端里运行 gulp css 命令。此刻,在您的“final”文件夹内,你应该会看到一个style.css文件,像下面的CSS 一样:

section {    color: white;    background-color: black;}
登录后复制

如果您CSS的样式和上面所展示的CSS样式一样的话,我们就可以认为一切工作正常。

3.安装多个插件

只使用一个基本的插件并不能从根本上减轻你的工作量。PostCSS有很多令人印象深刻的且令人难以置信的有用的插件,所以在大多数情况下,你需要使用到的插件不止一个。在本节中,我将告诉你如何在工作中同时使用多个插件。

您可能会发现有三个PostCSS插件(包)是非常有用的:即 short , cssnext 和 autoprefixer

  • short将使你少写并且速记大量的CSS属性。 例如:

.heading {    font-size: 1.25em 2;}
登录后复制

将会被解析成:

.heading {    font-size: 1.25em;    line-height: 2;}
登录后复制
  • cssnext能够在你的css样式表中,使用最新的CSS语法。例如,下面的CSS:

.link {      color: color(green alpha(-10%));    }
登录后复制

将被转换为:

.link {      background: rgba(0, 255, 0, 0.9);    }
登录后复制
  • 最后,autoprefixer将会在您的CSS和转换后的样式文件中添加供应商前缀:

img {      filter: grayscale(0.9);    }    
登录后复制

转换为:

img {      -webkit-filter: grayscale(0.9);      filter: grayscale(0.9);    }    
登录后复制

现在让我们看看如何安装这些插件,然后用它们来改造我们的样式表。在项目目录下运行下面的命令:

npm install autoprefixer postcss-short postcss-cssnext --save-dev

我们需要修改我们的gulp task来包含所有这些插件,代替用管道将所有这些插件一个一个的传递,我们将它们存储在易于维护和简洁的阵列。下面是我们的gulpfile.js的代码:

var gulp = require('gulp');    var postcss = require('gulp-postcss');    var autoprefixer = require('autoprefixer');    var cssnext = require('postcss-cssnext');    var shortcss = require('postcss-short');    gulp.task('css', function() {      var plugins = [        shortcss,        cssnext,        autoprefixer({browsers: ['> 1%'], cascade: false})      ];      return gulp.src('initial/*.css')      .pipe(postcss(plugins))      .pipe(gulp.dest('final'));    });    
登录后复制

您可能已经注意到了,我已经指定了Autoprefixer插件的一些选项。Autoprefixer输出这些选项确定的CSS,在这种情况下,我说的是插件支持所有全球使用量超过1%的浏览器。我也被禁用级联,让所有的前缀和不带前缀属性左对齐。类似的选项也可用于大多数其他插件。

为了测试,如果一切正常,将出在样式表下面的CSS:

.prefix-filter {      display: flex;    }          .cssshort-section {      text: #333 bold justify uppercase 1.25em 1.7 .05em;    }    .cssnext-link {      color: color(blue alpha(-10%));    }    .cssnext-link:hover {      color: color(orange blackness(80%));    }
登录后复制

如果现在在终端中运行gulp css,你应该在“final”文件夹中可以得到style.css,如下:

.prefix-filter {      display: -webkit-box;      display: flex;    }          .cssshort-section {      color: #333;      font-weight: 700;      text-align: justify;      text-transform: uppercase;      font-size: 1.25em;      line-height: 1.7;      letter-spacing: .05em;    }          .cssnext-link {      color: #0000ff;      color: rgba(0, 0, 255, 0.9);    }          .cssnext-link:hover {      color: rgb(51, 33, 0);    }
登录后复制

4.插件的执行顺序

在最后一节的例子很清楚说明了PostCSS的实用性。所有PostCSS的力量在于它的插件。

我们具体来研究两个插件 rgba-fallback 和 color-function , rgba-fallback 插件会转换一个RGBA颜色为16进制格式,color-function将改变CSS的color()函数来兼容更多菜单CSS,比方说,你有一下的CSS:

body {      background: color(orange a(90%));    }
登录后复制

如果你运行的颜色功能插件之前的RGBA-后备插件,就像这样:

var plugins = [      rgbafallback,      colorfunction    ];
登录后复制

你将得到下面的CSS:

body {      background: rgba(255, 165, 0, 0.9);    }
登录后复制

正如你所看到的,在处理CSS时没有RGBA回退。这样的异常原因是回退插件运行时,它发现背景是color(orange a(90%)),并且不知道该怎么办。后来,color函数插件执行,并从原来的color函数创建RGBA颜色值。

如果你扭转插件顺序,按以下顺序运行它们:

var plugins = [      colorfunction,      rgbafallback     ];     
登录后复制

最后的CSS是这样的:

body {      background: #ffa500;      background: rgba(255, 165, 0, 0.9)    }
登录后复制

这一次的颜色插件首先把背景色的RGBA值和后备插件层增加一个十六进制回退。

总结

在本教程中我已经介绍了使用gulp和PostCSS一起使用的基本知识。随着插件和gulp的正确组合,可以节省开发的许多时间和避免不必要的麻烦。如果您有任何技术问题或建议,请尽管在本教程的下面进行评论,以便于我们能更好的学习交流。

作者信息:

原文作者:Nitish Kumar

原文链接: https://http://www.sitepoint.com/how-to-use-postcss-with-gulp/

中文首发博文链接: https://blog.maxleap.cn/archives/789

翻译自: MaxLeap 团队_前端研发人员:Ammie Bai

欢迎关注微信订阅号,单纯分享技术干货:从移动到云端欢迎加入我们的MaxLeap活动qq群:555973817,我们将不定期做技术分享活动。

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

热AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover

AI Clothes Remover

用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool

Undress AI Tool

免费脱衣服图片

Clothoff.io

Clothoff.io

AI脱衣机

Video Face Swap

Video Face Swap

使用我们完全免费的人工智能换脸工具轻松在任何视频中换脸!

热工具

记事本++7.3.1

记事本++7.3.1

好用且免费的代码编辑器

SublimeText3汉化版

SublimeText3汉化版

中文版,非常好用

禅工作室 13.0.1

禅工作室 13.0.1

功能强大的PHP集成开发环境

Dreamweaver CS6

Dreamweaver CS6

视觉化网页开发工具

SublimeText3 Mac版

SublimeText3 Mac版

神级代码编辑软件(SublimeText3)

HTML容易为初学者学习吗? HTML容易为初学者学习吗? Apr 07, 2025 am 12:11 AM

HTML适合初学者学习,因为它简单易学且能快速看到成果。1)HTML的学习曲线平缓,易于上手。2)只需掌握基本标签即可开始创建网页。3)灵活性高,可与CSS和JavaScript结合使用。4)丰富的学习资源和现代工具支持学习过程。

HTML,CSS和JavaScript的角色:核心职责 HTML,CSS和JavaScript的角色:核心职责 Apr 08, 2025 pm 07:05 PM

HTML定义网页结构,CSS负责样式和布局,JavaScript赋予动态交互。三者在网页开发中各司其职,共同构建丰富多彩的网站。

HTML中起始标签的示例是什么? HTML中起始标签的示例是什么? Apr 06, 2025 am 12:04 AM

AnexampleOfAstartingTaginHtmlis,beginSaparagraph.startingTagSareEssentialInhtmlastheyInitiateEllements,defiteTheeTheErtypes,andarecrucialforsstructuringwebpages wepages webpages andConstructingthedom。

了解HTML,CSS和JavaScript:初学者指南 了解HTML,CSS和JavaScript:初学者指南 Apr 12, 2025 am 12:02 AM

WebDevelovermentReliesonHtml,CSS和JavaScript:1)HTMLStructuresContent,2)CSSStyleSIT和3)JavaScriptAddSstractivity,形成thebasisofmodernWebemodernWebExexperiences。

Gitee Pages静态网站部署失败:单个文件404错误如何排查和解决? Gitee Pages静态网站部署失败:单个文件404错误如何排查和解决? Apr 04, 2025 pm 11:54 PM

GiteePages静态网站部署失败:404错误排查与解决在使用Gitee...

网页批注如何实现Y轴位置的自适应布局? 网页批注如何实现Y轴位置的自适应布局? Apr 04, 2025 pm 11:30 PM

网页批注功能的Y轴位置自适应算法本文将探讨如何实现类似Word文档的批注功能,特别是如何处理批注之间的间�...

如何用CSS3和JavaScript实现图片点击后周围图片散开并放大效果? 如何用CSS3和JavaScript实现图片点击后周围图片散开并放大效果? Apr 05, 2025 am 06:15 AM

实现图片点击后周围图片散开并放大效果许多网页设计中,需要实现一种交互效果:点击某张图片,使其周围的...

HTML,CSS和JavaScript:Web开发人员的基本工具 HTML,CSS和JavaScript:Web开发人员的基本工具 Apr 09, 2025 am 12:12 AM

HTML、CSS和JavaScript是Web开发的三大支柱。1.HTML定义网页结构,使用标签如、等。2.CSS控制网页样式,使用选择器和属性如color、font-size等。3.JavaScript实现动态效果和交互,通过事件监听和DOM操作。

See all articles