postcss那些事儿
一、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那些事儿的更多相关文章
- 说说Makefile那些事儿
说说Makefile那些事儿 |扬说|透过现象看本质 工作至今,一直对Makefile半知半解.突然某天幡然醒悟,觉得此举极为不妥,只得洗心革面从头学来,以前许多不明觉厉之处顿时茅塞顿开,想想好记性不 ...
- 展望未来:使用 PostCSS 和 cssnext 书写 CSS
原文链接:A look into writing future CSS with PostCSS and cssnext 译者:nzbin 像twitter,google,bbc使用的一样,我打算看一 ...
- 总结iOS开发中的断点续传那些事儿
前言 断点续传概述 断点续传就是从文件赏赐中断的地方重新开始下载或者上传数据,而不是从头文件开始.当下载大文件的时候,如果没有实现断点续传功能,那么每次出现异常或者用户主动的暂停,都会从头下载,这样很 ...
- PostCSS深入学习: PostCSS和Sass、Stylus或LESS一起使用
如果你喜欢使用PostCSS,但又不想抛弃你最喜欢的预处理器.不用担心,你不需要作出二选一的选择,你可以把PostCSS和预处理器(Sass.Stylus或LESS)结合起来使用. 有几个PostCS ...
- 在 CSS 预编译器之后:PostCSS
提到css预编译器(css preprocessor),你可能想到Sass.Less以及Stylus.而本文要介绍的PostCSS,正是一个这样的工具:css预编译器可以做到的事,它同样可以做到. “ ...
- setTimeout那些事儿
一.setTimeout那些事儿之单线程 一直以来,大家都在说Javascript是单线程,浏览器无论在什么时候,都且只有一个线程在运行JavaScript程序. 但是,不知道大家有疑问没——就是我们 ...
- Javascript中关于cookie的那些事儿
Javascript-cookie 什么是cookie? 指某些网站为了辨别用户身份.进行session跟踪而储存在用户本地终端上的数据(通常经过加密).简单点来说就是:浏览器缓存. cookie由什 ...
- PostCSS一种更优雅、更简单的书写CSS方式
Sass团队创建了Compass大大提升CSSer的工作效率,你无需考虑各种浏览器前缀兼,只需要按官方文档的书写方式去写,会得到加上浏览器前缀的代码,如下: .row { @include displ ...
- webpack那些事儿
webpack那些事儿01-webpack到底是什么 webpack那些事儿02-从零开始 webpack那些事儿03-热插拔 hot webpack那些事儿04-spa项目实战分析 webpack那 ...
随机推荐
- C++ 字符串的编码
转载链接:https://www.cnblogs.com/akb48/p/5439154.html windows平台 char 表示单字符,占用一个字节 wchar_t 表示宽字符,占用两个字节 L ...
- 【转】使用SevenZipSharp压缩、解压文件
引用 下载之后引用“SevenZipSharp.dll”至项目中,然后将“7z.dll”放到bin目录下,或者这样引用:SevenZipCompressor.SetLibraryPath(" ...
- Android APP—— 开发入门教程
一.SDK下载 下载:adt-bundle-windows-x86_64-20140702.zip(20140702 已经是最后版本了) 解压出来如下: 点击Eclipse安装 创建一个新的工作空间安 ...
- http响应头设置
protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletExcep ...
- 用jquery添加新元素很容易,面对jquery append 动态添加的元素事件on 不起作用我们该如何解决呢?
用jquery添加新元素很容易,面对jquery append 动态添加的元素事件on 不起作用我们该如何解决呢?on方法中要先找到原选择器(如例.info),再找到动态添加的选择器(如列.delet ...
- jquery实现右键菜单
<!DOCTYPE html> <head> <meta http-equiv="Content-Type" content="text/h ...
- 手机端的1px边框如何实现
(1).把边框设置为absolute,使用after,定义宽度为1px(mixin.styl) (2).通过@media,判断不同的dpi,来改变相应的Y轴宽度(base.styl),定义公共clas ...
- 并发之线程封闭与ThreadLocal解析
并发之线程封闭与ThreadLocal解析 什么是线程封闭 实现一个好的并发并非易事,最好的并发代码就是尽量避免并发.而避免并发的最好办法就是线程封闭,那什么是线程封闭呢? 线程封闭(thread c ...
- 性能测试五:jmeter进阶之后置处理器(正则、json提取器)
如,从get返回的json中提取stock的值 作为post的请求参数 1.JSON提取器 专门对json数据进行提取的后置处理器 Debug Sampler:记录之前的请求的所有参数及数据 2.正则 ...
- intellij idea svn 修改文件后,父文件夹也标注修改
svn文件修改后,默认只有当前文件更改而父文件没有标注,很不直观:查了一顿后,发现,可以设置: File—->settings—->version control—–>勾选show ...