• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com专业计算机教程网站
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • html/xhtml
  • html5
  • CSS
  • XML/XSLT
  • Dreamweaver教程
  • Frontpage教程
  • 心得技巧
  • bootstrap
  • vue
  • AngularJS
  • HBuilder教程
  • css3
  • 浏览器兼容
  • div/css
  • 网页编辑器
  • axure
您的位置:首页 > 网页设计 >CSS > 详细解读CSS的预编译器PostCSS

详细解读CSS的预编译器PostCSS

作者:佚名 字体:[增加 减小] 来源:互联网 时间:2017-08-06

本文主要包含CSS,PostCSS等相关知识,佚名 希望在学习及工作中可以帮助到您

提到css预编译器(css preprocessor),你可能想到Sass、Less以及Stylus。而本文要介绍的PostCSS,正是一个这样的工具:css预编译器可以做到的事,它同样可以做到。

“你说的我都懂,那为什么要用它?”


套装与单件

如果Sass等预编译器是新定义了一种模板语言,然后将其转化为css的话,PostCSS则是更纯粹地对css本身做转换。

回想一下你是如何学习使用css预编译器的:了解到有这样一种可以转化为css的语言,它有很多特性,变量、嵌套、继承等等,每一种特性都通过一定语法实现。大概就像是递给你一个已经封装好的工具箱(量产型?),你可以在里面找有用的东西。

那PostCSS是怎样呢?PostCSS就像只递给你一个盒子,但告诉你你可以从旁边的陈列柜取走自己想要的工具放进盒子打包带走。如果你觉得陈列柜里的不够好,PostCSS还可以帮你打造你自己的工具。所以,使用PostCSS,你可以仅取所需。
2015720165145557.png (100×100)

这就是PostCSS的模块化(modular)风格。它作为一个css转换工具,自身很小,其所有的转换功能都是插件,因此可以个性化配置。


PostCSS的简要原理

PostCSS自身只包括css分析器,css节点树API,source map生成器以及css节点树拼接器。

css的组成单元是一条一条的样式规则(rule),每一条样式规则又包含一个或多个属性&值的定义。所以,PostCSS的执行过程是,先css分析器读取css字符内容,得到一个完整的节点树,接下来,对该节点树进行一系列转换操作(基于节点树API的插件),最后,由css节点树拼接器将转换后的节点树重新组成css字符。期间可生成source map表明转换前后的字符对应关系:
2015720165213722.png (324×412)

比较有意思的是,PostCSS的插件其实都是JavaScript函数,它们使用PostCSS的节点树API,对css节点树进行不同的转换。

插件预览

所有插件都可以在PostCSS的主页中查询到,这里只选取一小部分示意一下。
Autoprefixer

PostCSS最有名的插件是Autoprefixer。如名所示,可以自动为你添加浏览器私有前缀。它的添加值会参考Can I Use及你设定的浏览器支持范围,因此相当可靠。下面是一个示例(以我设定的浏览器支持范围):

  1. .container{   
  2.     display: flex;   
  3. }  

编译后:

  1. .container{   
  2.     display: -webkit-box;   
  3.     display: -webkit-flex;   
  4.     display: -ms-flexbox;   
  5.     display: flex;   
  6. }  

postcss-nested&postcss-mixins

在刚开始使用PostCSS时,我就想到要用PostCSS实现我在Sass中最常用的特性。所以,我找到了postcss-nested和postcss-mixins。将它们结合起来后,就可以做到这样:

  1. @define-mixin clearfix{   
  2.     &:after{   
  3.         display: table;   
  4.         clear: both;   
  5.         content: " ";   
  6.     }   
  7. }   
  8.   
  9. .column-container{   
  10.     color: #333;   
  11.     @mixin clearfix;   
  12. }  

编译后:

  1. .column-container{   
  2.     color: #333;   
  3. }   
  4.   
  5. .column-container:after{   
  6.     display: table;   
  7.     clear: both;   
  8.     content: " ";   
  9. }  

到这里,你是否已经有了“预编译器可以做到的它也可以做到”的感觉呢?
如何使用PostCSS

我个人推荐结合Gulp使用,本文在此只介绍gulp-postcss的用法。

gulp-postcss及插件都是npm,首先,使用npm install将它们分别安装到项目目录中(会位于node_modules)。然后,编辑glupfile.js,将PostCSS注册为Gulp的一个任务。以下是一个结合使用了Autoprefixer、postcss-simple-vars、postcss-mixins、postcss-nested4个插件,且生成source map文件的例子:

  1. var gulp = require("gulp");   

您可能想查找下面的文章:

  • css小技巧
  • 各大网站CSS初始化代码
  • css权重问题
  • CSS实现鼠标上移图标旋转效果
  • 使用CSS3制作一个简单的进度条(demo)
  • 用纯CSS实现饼状Loading等待图效果
  • 利用CSS3伪元素实现逐渐发光的方格边框
  • CSS3实现内凹圆角的实例代码
  • 利用HTML5+CSS3实现3D转换效果实例详解
  • css3+伪元素实现鼠标移入时下划线向两边展开的效果

相关文章

  • 2017-08-06table自动拉伸在chrome与IE中的兼容性问题解决
  • 2017-08-06Css 模块化编码技巧
  • 2017-08-06前端工程师新手必读:掌握网页设计的基本技能和弄清设计的概念
  • 2017-08-06基于css3 animate制作绚丽的动画效果
  • 2017-08-06DIV遮罩层如何实现
  • 2017-08-06CSS固定宽度的三列布局运用实例解析
  • 2017-08-06css中!important的作用(IE6 IE7 FF)及其原理
  • 2017-08-06关于css 行元素和块元素 相互转换 居中
  • 2017-08-06使用icon fonts来辅助CSS处理图片
  • 2017-08-06IE6 innerHTML写入的iframe src不显示BUG的解决方法

文章分类

  • html/xhtml
  • html5
  • CSS
  • XML/XSLT
  • Dreamweaver教程
  • Frontpage教程
  • 心得技巧
  • bootstrap
  • vue
  • AngularJS
  • HBuilder教程
  • css3
  • 浏览器兼容
  • div/css
  • 网页编辑器
  • axure

最近更新的内容

    • 谈谈对css属性box-sizing的了解
    • CSS3 text shadow字体阴影效果
    • gif可以当成css的背景图片与普通图片是一样的
    • 纯css实现的tab切换效果(使用锚点作为标记)
    • CSS3提交意见输入框样式代码
    • 纯css 实现footer 一直在页面底部,不随页面滚动
    • input css常用属性
    • CSS 避免使用滤镜
    • 用纯CSS实现禁止鼠标点击事件示例代码
    • CSS中使用大于号[>]的含义及使用示例

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有