2016-11-07 57 views
0

我在SASS中有一个自定义mixin来生成表格,它只需要一些参数来生成颜色和细节。这是开始:SASS颜色参数始终为空

@mixin generate-table($background, $foreground, $border: 3px, $background-hover: null, $foreground-hover: null) { 
    @debug "Background: #{$background}"; 
    @debug "Foreground: #{$foreground}"; 
    $background-hover: hover($background) !default; 
    $foreground-hover: hover($foreground) !default; 

的问题是,我总是用我的悬停色功能的错误颜色是NULL,即使我通过正常的值给它(用于调试,看看是否含有东西或不)。这是函数:

@function hover($color, $ratio: 15%) { 
    @if (lightness($color) > 50%) { 
    @return darken($color, $ratio); 
    } @else { 
    @return lighten($color, $ratio); 
    } 
} 

它给我这个错误:错误:$颜色:null不是'轻这没有任何意义可言的颜色。

现在,正如我在尝试的东西,我认为,当我直接将值传递给函数(在mixin中)它的工作。那么,发生了什么事情?我能做些什么来解决这个问题?

编辑:我如何调用混入:

table { 
    @include generate-table($background: #FFF, $foreground: #000); 

我也用颜色像这样的字符串尝试:

table { 
    @include generate-table($background: '#FFF', $foreground: '#000'); 

当然没有直接assiciation像全髋关节置换,以及:

table { 
    @include generate-table(#FFF, #000); 

哪一个都有相同的结果。

+0

可以添加亮度的代码,变暗混入过多和地方是U调用此生成表 – Geeky

+0

新增如何我调用generate-table并且函数lightness,darken和light是sass的基本函数,请参阅:http://sass-lang.com/documentation/Sass/Script/Functions.html – PreFiXAUT

回答

2

改变这些语句,它应该工作

@function hover($color, $ratio: 15%) { 

    @if (lightness($color) > 50%) { 
    @return darken($color, $ratio); 
    } @else { 
    @return lighten($color, $ratio); 
    } 
} 

@mixin generate-table($background, $foreground, $border: 3px, $background-hover: null, $foreground-hover: null) { 
    $background-hover:hover($color:$background)!default; 
    $foreground-hover:hover($color:$foreground) !default; 
} 

table{ 
    @include generate-table($background:#FFFFFF, $foreground:#000000); 
} 

希望这有助于

+0

由于某些原因,通过名称设置参数($ color:$ var)解决了它。不知道为什么,但谢谢分配:) – PreFiXAUT