为PostCSS中的所有直接后代生成规则

马特

我想创建一个PostCSS插件,在这里我可以为所有直接后代生成一个新规则。

例如,我想生成规则:

div > * {
   color: black;
}

对于所有人divs来说display: block

我没有找到一个很好的例子来做到这一点。

module.exports = () => {
  let skipped = Symbol("isSkipped"); // skipped flag
  let counter = Symbol("skippedCounter"); // counter for test "isSkipped" optimization

  function generateRule(decl) {
    let rules = decl.parent;
    rules[counter] = Number.isInteger(rules[counter]) ? rules[counter] : 0;

    if (!rules[skipped]) {
      if (decl.value === "block") {
        
        // generate a new rule here

        rules[skipped] = true;
        rules[counter]++;
      }
    }
  }

  return {
    postcssPlugin: "postcss-example-plugin",
    Declaration: {
      display: (decl) => generateRule(decl),
    },
  };
};
module.exports.postcss = true;
直流凋零

我不确定您要寻找的是哪一部分,因此,如果这不能解决您的问题,请随时进行澄清,我将更新答复。

这是一些我认为可以满足您需求的代码-尽管大多数情况下您已经编写了这些代码而没有进行优化:

module.exports = {
  postcssPlugin: "add-rule-to-descendants",
  Declaration: {
    // https://postcss.org/api/#declarationprocessor
    display(displayDecl, { Rule, Declaration }) {
      if (displayDecl.value === 'block') {
        // Add the new rule after the parent https://postcss.org/api/#rule-after
        displayDecl.parent.after(
          new Rule({
            selector: `${displayDecl.parent.selector} > *`,
            nodes: [
              new Declaration({ prop: 'color', value: 'black' })
            ]
          })
        );
      }
    }
  }
}

我还在Repl.it https://repl.it/@dcwither/postcss-all-decendants-rule#plugin.js上进行了一些快速测试,为该示例做准备

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

Scrapy:为每个start_url动态生成规则

来自分类Dev

根据(动作a)的内容动态生成规则

来自分类Dev

根据(动作a)的内容动态生成规则

来自分类Dev

基于特定时区生成规则

来自分类Dev

直接子文本与所有后代文本的XPath?

来自分类Dev

直接子文本与所有后代文本的XPath?

来自分类Dev

PyParsinig为什么不将生成规则名称存储在AST中?

来自分类Dev

foreach中的条件变量(ifeq)用于显式生成规则

来自分类Dev

针对不同目录中的多个输出文件的单个生成规则

来自分类Dev

如何在julia中生成规则的非整数序列?

来自分类Dev

生成规则30元胞自动机的行

来自分类Dev

使用生成规则调用另一个

来自分类Dev

无法使用 Apriori 算法生成规则列表

来自分类Dev

如何将(函数的)第二个参数的Zsh自动完成规则设置为现有命令的规则?

来自分类Dev

在自引用(父子)层次树中查找所有后代

来自分类Dev

查找所有以xml开头的元素中包含文本的后代

来自分类Dev

jQuery选择ul中的所有后代li?

来自分类Dev

SQL查找所有后代

来自分类Dev

NEWID()为关系中的所有记录生成相同的值

来自分类Dev

为熊猫中的所有列生成列矩阵

来自分类Dev

在python中为2OPT生成所有邻居

来自分类Dev

如何在SQL Server表中为所有直接或间接子代查找根父代?

来自分类Dev

Linq查询与数组中的所有规则

来自分类Dev

nftables删除链中的所有规则

来自分类Dev

zsh:ssh的完成规则

来自分类Dev

跳过给定类的所有后代(不仅仅是直接子代)的 jQuery 选择器

来自分类Dev

自定义生成规则转换为VS2013后失败

来自分类Dev

自定义生成规则未针对Xcode 6.3执行

来自分类Dev

Drools:使用PackageDescr生成规则时如何为变量赋值?

Related 相关文章

  1. 1

    Scrapy:为每个start_url动态生成规则

  2. 2

    根据(动作a)的内容动态生成规则

  3. 3

    根据(动作a)的内容动态生成规则

  4. 4

    基于特定时区生成规则

  5. 5

    直接子文本与所有后代文本的XPath?

  6. 6

    直接子文本与所有后代文本的XPath?

  7. 7

    PyParsinig为什么不将生成规则名称存储在AST中?

  8. 8

    foreach中的条件变量(ifeq)用于显式生成规则

  9. 9

    针对不同目录中的多个输出文件的单个生成规则

  10. 10

    如何在julia中生成规则的非整数序列?

  11. 11

    生成规则30元胞自动机的行

  12. 12

    使用生成规则调用另一个

  13. 13

    无法使用 Apriori 算法生成规则列表

  14. 14

    如何将(函数的)第二个参数的Zsh自动完成规则设置为现有命令的规则?

  15. 15

    在自引用(父子)层次树中查找所有后代

  16. 16

    查找所有以xml开头的元素中包含文本的后代

  17. 17

    jQuery选择ul中的所有后代li?

  18. 18

    SQL查找所有后代

  19. 19

    NEWID()为关系中的所有记录生成相同的值

  20. 20

    为熊猫中的所有列生成列矩阵

  21. 21

    在python中为2OPT生成所有邻居

  22. 22

    如何在SQL Server表中为所有直接或间接子代查找根父代?

  23. 23

    Linq查询与数组中的所有规则

  24. 24

    nftables删除链中的所有规则

  25. 25

    zsh:ssh的完成规则

  26. 26

    跳过给定类的所有后代(不仅仅是直接子代)的 jQuery 选择器

  27. 27

    自定义生成规则转换为VS2013后失败

  28. 28

    自定义生成规则未针对Xcode 6.3执行

  29. 29

    Drools:使用PackageDescr生成规则时如何为变量赋值?

热门标签

归档