一、sass和postcss
sass、less、stylus,三者是css预处理器,使用预编码来处理css,然后编译成线上需要的css。
postcss是处理你写好的css,让你的css更健康,对浏览器更友好。
所以sass和postcss是两码事儿,彼此都有独一无二的地位,不能互相取代,实际开发过程中,推荐sass+postcss,前者生成css,后者生成更好的css。当然,随着postcss插件的增多,sass能做的事,postcss插件也可以办到,因此独立使用postcss进行开发是今后的趋势,它是css界的babel。

二、postcss的优势
1、可以像使用css一样使用postcss;
postcss和sass不同,它不用建立其他后缀名的文件,postcss从始至终的操作对象都是css文件,所以在学习postcss的时候,你可以暂时失忆,忘了sass。如果你没学过sass,less,只懂原生css,这丝毫不影响你学习postcss,从某种角度来说,反而是好事。
2、postcss速度很快,测试嵌套,变量,计算得出如下数据;

postcss: 36 ms
Rework: 77 ms (2.1 times slower)
libsass: 136 ms (3.8 times slower)
Less: 160 ms (4.4 times slower)
Stylus: 167 ms (4.6 times slower)
Stylecow: 208 ms (5.7 times slower)
Ruby Sass: 1084 ms (30.1 times slower)

3、插件系统提供不同的功能;
比如postcss的招牌插件autoprefixer,给css3属性加前缀;再如cssnano,压缩优化css;或者cssnext,让你提前使用未来css语法;或者小功能插件,比如画圆,画三角形,清除浮动,定位,居中;或者处理跨浏览器兼容性的样式,特别是如何对IE老版本做降级处理,postcss-color-rgba-fallback,postcss-will-change;或者网格系统lost插件。Google在2012年停止了对IE8的支持,而且在2013年对IE9的支持也慢慢在降低。微软公司2016年也不再支持IE8。Bootstrap4最近也不支持IE8。

其实有些地方,sublime中的插件已经实现,而且很好用,我觉得就不需要postcss插件了,或者自己多写两行代码即可,不必引入postcss插件。我个人不太喜欢过多依赖插件和工具,尤其是为了一点代码和功能引入插件,有点小题大做。哈哈,要知道,武林高手不应该被武器所左右,空手道依然可以降服千军万马。

4、可以创建自己的插件;
5、可以定制自己的预处理器;
6、粒子化,模块化。

三、postcss简介6.0.x
postcss起源于2013年9月,它把css解析为抽象语法树,再经过postcss插件的处理,输出代码字符串,生成新的css。
postcss本身很小,其只包含css解析器,操作css节点树的API,资源生成器(source map),以及一个节点树字符串化工具,所有的黑魔法都是通过利用插件实现的,postcss的插件都是使用JavaScript写的,每个postcss插件都是一个NodeJS的模块。
在学习postcss之前,有个疑问,postcss中的autoprefixer插件和sublime中的autoprefixer插件作用一样吧,都是在一些css属性前加浏览器前缀。前者看上去是一个自动化,只要安装后,在代码中引入插件即可。后者是编辑器中的插件,属于手动操作,写css的时候,按下对应快捷键即可。
我还有个疑问,webpack中的插件也可以做代码压缩优化,我们是用postcss的插件,还是用webpack的插件?sublime里面也有插件,babel里面也有很多插件,这么多选择,按照自己的需求和爱好来吧。

四、postcss运行方式

1、命令行postcss-cli
2、在webpack构建中运行

3、在线编译
A、在codepen注册账号;
B、新建一个pen,然后设置css为postcss语法;

C、在css面板添加依赖插件;

D、开始写代码,html,css,js。

E、在预览区查看效果

postcss那些事儿的更多相关文章

  1. 说说Makefile那些事儿

    说说Makefile那些事儿 |扬说|透过现象看本质 工作至今,一直对Makefile半知半解.突然某天幡然醒悟,觉得此举极为不妥,只得洗心革面从头学来,以前许多不明觉厉之处顿时茅塞顿开,想想好记性不 ...

  2. 展望未来:使用 PostCSS 和 cssnext 书写 CSS

    原文链接:A look into writing future CSS with PostCSS and cssnext 译者:nzbin 像twitter,google,bbc使用的一样,我打算看一 ...

  3. 总结iOS开发中的断点续传那些事儿

    前言 断点续传概述 断点续传就是从文件赏赐中断的地方重新开始下载或者上传数据,而不是从头文件开始.当下载大文件的时候,如果没有实现断点续传功能,那么每次出现异常或者用户主动的暂停,都会从头下载,这样很 ...

  4. PostCSS深入学习: PostCSS和Sass、Stylus或LESS一起使用

    如果你喜欢使用PostCSS,但又不想抛弃你最喜欢的预处理器.不用担心,你不需要作出二选一的选择,你可以把PostCSS和预处理器(Sass.Stylus或LESS)结合起来使用. 有几个PostCS ...

  5. 在 CSS 预编译器之后:PostCSS

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

  6. setTimeout那些事儿

    一.setTimeout那些事儿之单线程 一直以来,大家都在说Javascript是单线程,浏览器无论在什么时候,都且只有一个线程在运行JavaScript程序. 但是,不知道大家有疑问没——就是我们 ...

  7. Javascript中关于cookie的那些事儿

    Javascript-cookie 什么是cookie? 指某些网站为了辨别用户身份.进行session跟踪而储存在用户本地终端上的数据(通常经过加密).简单点来说就是:浏览器缓存. cookie由什 ...

  8. PostCSS一种更优雅、更简单的书写CSS方式

    Sass团队创建了Compass大大提升CSSer的工作效率,你无需考虑各种浏览器前缀兼,只需要按官方文档的书写方式去写,会得到加上浏览器前缀的代码,如下: .row { @include displ ...

  9. webpack那些事儿

    webpack那些事儿01-webpack到底是什么 webpack那些事儿02-从零开始 webpack那些事儿03-热插拔 hot webpack那些事儿04-spa项目实战分析 webpack那 ...

随机推荐

  1. Freemarker导出带图片的word

    1.新建一doc文档

  2. move_base

    1>准备导航所需要的包. a.ros-indigo-gampping :我们不需要修改包内的东西,所以直接安装可执行文件就好了. sudo apt-get install ros-indigo- ...

  3. Python中__repr__和__str__区别

    Python中__repr__和__str__区别 看下面的例子就明白了 class Test(object): def __init__(self, value='hello, world!'): ...

  4. Python 优雅获取本机 IP 方法【转】

    转自:https://www.cnblogs.com/lfxiao/p/9672975.html 见过很多获取服务器本地IP的代码,个人觉得都不是很好,例如以下这些 不推荐:靠猜测去获取本地IP方法 ...

  5. DataTables 1.10.x与1.9.x参数名对照表

    Datatables 1.10.x在命名上与1.9.x的有区别,新版的使用的是驼峰的命名规则,而之前的是采用匈牙利命名规则 当然,这些变化都是向下兼容的,你可以继续使用旧版本的api方法的参数和名称. ...

  6. ES系列八、正排索Doc Values和Field Data

    1.Doc Values 聚合使用一个叫Doc Values的数据结构.Doc Values使聚合更快.更高效且内存友好. Doc Values的存在是因为倒排索引只对某些操作是高效的.倒排索引的优势 ...

  7. IDE SATA SCSI iSCSI等存储硬盘对比与分析

    原文地址:http://blog.csdn.net/trochiluses/article/details/21229283 IDE是并口硬盘,(5400-7200转): SATA是串口硬盘,(720 ...

  8. windows系统中搭建Jenkins服务器

    1       须知 100.126.36.232等Jenkins服务器是通过设置代理访问外网,管理Jenkins和插件升级站点的,本地安装受黄区网络限制需要特殊配置,且有些插件无法下载. 前提条件: ...

  9. MFC CStdioFile

    读Text文件 void CNWiReworkDlg::ReadHexFile() { using namespace std; CStdioFile file; file.Open(hexFileP ...

  10. 转载:详解Java 自动装箱与拆箱的实现原理

    原文:http://www.jb51.net/article/111847.htm 什么是自动装箱和拆箱 自动装箱就是Java自动将原始类型值转换成对应的对象,比如将int的变量转换成Integer对 ...