是否可以不故意使用/关闭指南针Url帮助程序



当我试图覆盖我导入的另一个.scs文件中的一些值时,我遇到了这个问题。特别是我想在我的项目中使用光滑的滑块
所以我继续下载源代码并导入代码
为了让光滑的滑块在我的设置中工作,我必须通过变量覆盖给它自己的位置
所以最后我有了这样的东西:

$slick-font-path: "../bower_components/slick-carousel/slick/fonts/";
$slick-loader-path: "../bower_components/slick-carousel/slick/";
@import "../../bower_components/slick-carousel/slick/slick";
@import "../../bower_components/slick-carousel/slick/slick-theme";

到目前为止没有什么特别的
当我发现这不起作用时,有趣的部分就开始了,因为一些聪明的人显然想充分利用指南针的潜力,并在光滑的.scs代码中添加了以下几行:

@function slick-image-url($url) {
    @if function-exists(image-url) {
        @return image-url($url);
    }
    @else {
        @return url($slick-loader-path + $url);
    }
}
.slick-list {
   .slick-loading & {
        background: #fff slick-image-url("ajax-loader.gif") center center no-repeat;
    }
}

你不能责怪他们,因为这是国际海事组织解决这种情况的正确和有效的方法。当compass看到这段代码时,它将检查config.rb中的目录配置,并使用其中指定的路径,因为image-url()是一个url Helper
然而,问题是,当我不想使用它时,我找不到不使用或取消设置该函数的方法。(默认为"/images")
在config.rb中设置图像路径也没有帮助,我想这不会让函数以某种神奇的方式消失。

最后,我的解决方案是这样覆盖这个功能:

@function image-url($url) {
    @return url($slick-loader-path + $url);
}

但这当然会给你带来麻烦,当你必须在之后处理其他代码时,这些代码实际上应该使用config.rb中的位置。必须有更好的解决方案。

image-url()函数是用Ruby编写的,这意味着它被注入到Sass本身中,并且与任何其他标准函数的行为方式相同(请注意,Compass只是Sass的一个花哨的包装器)。这个函数对您来说总是可用的,而无需导入任何内容(与用Sass编写的函数不同)。这也意味着,如果覆盖它,就无法恢复原始版本。

如果第三方库不恰当地引用了此函数,那么如果您不愿意自己进行修补,则应该向他们请求修复。

最新更新