postCss基本介绍

本文介绍了postCss的概念,将其比作CSS领域的Babel,提供了处理CSS的转换过程,包括AST操作和插件使用。通过实例演示了autoprefixer如何实现浏览器前缀自动添加。后续会探讨结合Vue3和Vite实现移动端适配的插件应用。
摘要由CSDN通过智能技术生成

🌟什么是postCss?

        我个人的理解postCss就是css界的babel,它提供一个过程,而在这个过程中,去干什么就是你自己的事情,所以很多人写插件,去做代码转换,或者兼容等等。

babel 提供过程 @babel/preset-env  es6-es5
`JavaScript`
AST -> transform -> generate(生成)
postCss提供过程 
`css`
AST -> transform -> generate(生成)

两者都是提供一个过程,只是一个是处理javaScript,一个是处理css。

过程介绍

这个过程中AST指的是AST抽象语法树,这是一种概念(思想),举个例子:es6箭头函数的AST如下:

可以访问这个网站来将代码转换为抽象语法树https://astexplorer.net/

根据这其中的节点(标记),去执行转换等操作,这一步就是transform,比如将上图const 转换为 var。

转换完成后就是generate(生成),输出:

var a = function () {
    return 123
}

 以上就是一个完整过程的粗略说明。

🌟使用

安装

 npm i postcss

不知道大家有没有见过这个插件:autoprefixer,这个东西是帮助实现兼容各个浏览器加前缀的,并且是基于postCss实现的。没见过也不奇怪,因为我们平时使用的脚手架中其实都已经配好了。

下面我们也来用一用(我们这里是单独使用,postCss可以结合vite和webpack使用,vite中自带了postCss,webpack需要postcss-loader,下篇文章会结合vite写一个实现页面适配的插件):

npm i autoprefixer

 index.css:

.flex{
    display: flex;
}

index.ts: 

import postcss from "postcss";
import autoprefixer from "autoprefixer";
import fs from 'node:fs'
const css = fs.readFileSync('./index.css', 'utf-8')
postcss([autoprefixer()]).process(css).then(result => {
  console.log(result.css)
})

postcss是一个函数,参数是一个插件数组,并且多个插件执行顺序就是按数组顺序依次执行,process()接收的就是css文件,终端输入ts-node .\index.ts启动:

可以看到这里就是把我们的css文件内容输出,并无变化,这是因为autoprefixer()需要传入需兼容浏览器规则,然后动态去兼容各个浏览器版本:

import postcss from "postcss";
import autoprefixer from "autoprefixer";
import fs from 'node:fs'
const css = fs.readFileSync('./index.css', 'utf-8')
//browserList
const browserList: string[] = [
  'ie >=8',
  'chrome >= 31',
  'firefox >= 31',
  'safari >= 7',
  'opera >= 23',
];
postcss([autoprefixer(browserList)]).process(css).then(result => {
  console.log(result.css)
})

此时输出结果如下:

🌟总结

如前文所说,postCss就是为我们提供了一个过程,在这个过程中我们可以去进行需要的操作,这里就简单介绍一下,下篇结合vue3 + vite 实现移动端适配插件,原理就是将项目中所有的px单位转换成vw单位。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

琢鸣

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值