如下代码:
foo {
-webkit-filter: grayscale(100%);
}
使用sass 3.2.10的结果如下:
foo {
-webkit-filter: grayscale(100%); }
但是libsass master的以下内容(当前为4dd61de67aa0284cd8da1e8f13e2f6b63b990041):
/private/tmp/test/grayscale.scss:2: error: argument `$color` of `grayscale($color)` must be a color
Backtrace:
/private/tmp/test/grayscale.scss:2, in function `grayscale`
/private/tmp/test/grayscale.scss:2
这似乎与内置的灰度功能冲突。
是的,我也刚打过。
也击中这个。
:+1:
关于这个有什么消息吗?
我目前正在研究@extend
,但是我会尽量在假期之前解决这个问题!
也有这个问题。
:+1:
确认darken()
和saturate()
也受到影响。 有解决方法吗?
找到解决方法后,您可以同时使用此功能。 它应该是一个嵌入式解决方案:
<strong i="6">@function</strong> grayscale($value) {
<strong i="7">@return</strong> #{ "grayscale(" + $value + ")" };
}
如果您愿意,您也可以为其添加前缀:
<strong i="11">@mixin</strong> filter($properties) {
// Your vendor prefixing stuff here, I am using Bourbon:
<strong i="12">@include</strong> prefixer(filter, $properties, webkit moz spec);
}
然后,您可以编写:
<strong i="16">@include</strong> filter(grayscale(100%));
只需将其放在此处以供参考:
https://developer.mozilla.org/zh-CN/docs/Web/CSS/filter
@kennethormandy您是否发现了带有两个参数的SASS函数的变通方法?
<strong i="7">@function</strong> darken($color, $amount) {
<strong i="8">@return</strong> #{ "darken(" + $color + "," + $amount ")" };
}
.selector {
border: 1px solid darken(#f0f1f4, 3);
}
输出:
border: 1px solid darken(#f0f1f4,3"");
…但是实际上它甚至不应该输出darken
它应该完全是一个新的颜色值。
哇,我不知道 @restlessdesign ,如果您摆脱了自定义功能,则darken()
不起作用。darken()
已经可以使用。 所以只要写:
.selector {
border: 1px solid darken(#f0f1f4, 3);
}
你会得到
.selector {
border:1px solid #e7e9ee;
}
我认为您可能(可以理解)将Sass的功能与CSS过滤器混为一谈。 我给出的示例仅能工作,因为它是CSS Filter 。 如果您想使用Sass的变暗或饱和度,则应该按照Sass docs进行操作。 如果要使用饱和的CSS过滤器,则可以基于我的greyscale()
函数在正确的轨道上。 有CSS darken()
过滤器,因此您实际上现在只是重写libsass的内置深色函数。
我的错。 我是嵌套方法,并称为adjust_hue
而不是adjust-hue
,后者层叠为darken()
。 残酷,但我喜欢LibSass实际上会报告错误或提供无效的输出,而不是默默地忽略呼叫! 对不起,误报警。
+1
尽管该解决方法可以正常工作(谢谢@kennethormandy),但如果已修复,将很好。
这有什么消息吗? 尽管可以使用上面提供的解决方法对代码进行混淆,这将是非常不错的选择。
寻找解决方案=)
+1
+1
+1
感谢@kennethormandy解决方法
+1。 顺便说一句:感谢@kennethormandy解决方案。
刚刚打开(并关闭)与此有关的一个问题。 清理一下会很不错,因为CSS发生了根本性的转变,开始使用越来越多的函数(例如重叠语法)。
是的@kennethormandy ,感谢您的解决方法,但是当您这样做时,您将杀死实际的grayscale()
函数,这很糟糕! 我希望对此的真正解决方案能尽快到来。
另一个解决方法:代替filter: invert()
使用filter: #{"invert()"}
。 您可以将任何您想要的内容放在引号中,并将其逐字输出。
好吧,让我看看是否可以在3.0中获得它。
谢谢@tamlyn! 我一直在使用Scout.app,它显然仍旧在Sass的旧版本中,因此您的解决方法是一种实际可行的快速,简单的解决方案。
@function过滤器($ filter,$ value){
@return #{$ filter}#{“(” + $ value +“)”}
}
$前缀:
“ -webkit-”,
“ -moz-”,
“-多发性硬化症-”,
“ -o-”,
空值;
@mixin前缀($ property,$ value){
$ prefixes中的@each $ prefix {
#{$ prefix}#{$ property}:$ value;
}
}
@restlessdesign大家好,我知道得很晚,但是,我只是遇到了这个问题,我的解决方法是引用过滤器函数,然后在其上使用unquote()。
所以我写道:
* {
filter: unquote("filter-function(values)")
}
和输出工作。
最有用的评论
另一个解决方法:代替
filter: invert()
使用filter: #{"invert()"}
。 您可以将任何您想要的内容放在引号中,并将其逐字输出。