手写笔中的替换功能

replacing function in stylus

我有包含该代码的 Stylus 文件:

body
  background url('/templates/main/img/sprites/ico-soc.png') 100px 100px no-repeat

我需要函数(mixin)background,它将从图像的引用中删除“/templates/main/”

body
      background url('img/sprites/ico-soc.png') 100px 100px no-repeat

请帮帮我)我想也许我走错了方向,有一个简单的方法可以解决这个问题。请注意,我需要该功能。不要主动为目录创建变量!


我就是这么干的

我做了函数

background()
  background arguments

然后我尝试通过两种方式解决问题 1)我试图找到一个替代功能。但失败了。 然后我尝试使用文档的决定(功能替换)。但它不适合我的情况。 http://learnboost.github.io/stylus/docs/bifs.html#add-propertyname-expr

2) 我通过函数use(path) (http://learnboost.github.io/stylus/docs/bifs.html#usepath)在js上写了我的函数。 但是我遇到了问题,进入 js 函数的值不正确。有多余的空格。

style.styl

use("add.js")

background()
  background arguments

body
  background url('img/sprites/ico-soc.png') 100px 100px no-repeat

add.js

    var plugin = function(){
    return function(style){
        style.define('add', function(a) {
            console.log(typeof a);
            console.log(a);
        });
    };
};
module.exports = plugin;

您可以使用 current-property 重新定义 url 函数并检查它是否是从 background 调用的。例如:

url(str)
  if current-property && current-property[0] == 'background'
    str = replace('/templates/main/', '', str)

  return unquote('url(' + str + ')')

body
  background: url('/templates/main/img/sprites/ico-soc.png') 100px 100px no-repeat

编译为:

body {
  background: url(img/sprites/ico-soc.png) 100px 100px no-repeat;
}