编写自己的第一个postcss插件

本文介绍如何使用PostCSS创建插件以自动为CSS属性添加浏览器特定前缀,以确保跨浏览器兼容性和性能优化。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

本文是官方文档的翻译,原文见:
https://dockyard.com/blog/2018/02/01/writing-your-first-postcss-plugin
 

本文删除了大部分原文不是太有用的相关介绍,只保留原文编写插件部分,并将原本分步讲解的代码合在一起,写上对应注释。

 

什么是 PostCSS?
PostCSS 使我们能够 js 函数操作 CSS . 它做了下面三件事情:
1、PostCSS 将你的 CSS 文件转变成 JS 对象.
2、PostCSS 插件会遍历生成的js对象添加/删除/修改 选择器或属性.
3、PostCSS 将该对象转换成 CSS 文件.
 
 
写一个 PostCSS 插件

 

我们编写移动端h5页面的时候,如果需要用到overflow 属性,我们一般会加上-webkit-overflow-scrolling属性,使滚动更流畅,下面我们编写一个PostCSS插件来帮我们自动完成这个过程。

 
克隆   PostCSS Plugin Boilerplate  项目
$ git clone git@github.com:postcss/postcss-plugin-boilerplate.git
 
运行下面命令:
$ node ./postcss-plugin-boilerplate/start
该命令会问你几个问题. 他会从git 拉取你的 name 和 email, 然后问你 Github 用户名
接下来,起一个插件名。以  postcss-  开头. 描述你的插件是干啥用的.
完成上面设置后, 会生成一个样板模板目录,进入生成的目录:
$ cd postcss-test-plugin
你的逻辑需要放在  index.js 中 :
 
看一下   index.js 中的代码 :
var postcss = require('postcss');

module.exports = postcss.plugin('postcss-test-plugin', function (opts) {
     opts = opts || {}; // 处理 options
     return function (root, result) {
       //遍历所有的选择器
root.walkRules(function(rule) {
//遍历所有的属性
rule.walkDecls(function(decl) {
//dect 是一个包含属性-值对和一些操作方法的样式对象,最重要的两个属性是decl.prop 属性名和decl.value 属性值.
//过滤包含 overflow , overflow-x , overflow-y 的属性
rule.walkDecls(/^overflow-?/, function(decl) {
    if (decl.value === 'scroll') {
//判断是否已经有-webkit-overflow-scrolling,防止重复添加
var hasTouch = rule.some(function(i) {
return i.prop === '-webkit-overflow-scrolling';
});
if (!hasTouch) {
rule.append({
prop: '-webkit-overflow-scrolling',
value: 'touch'
});
}
}
});

});
});
};
});

 

 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值