如何在mixin

时间:2017-01-30 12:53:40

标签: css sass mixins

所以我有以下问题,我希望能够在表格中选择一行,当我这样做时,该行会获得活动的背景颜色。到目前为止没有问题。但是,如果用户应将背景颜色指定为透明或将rgba() - string中的不透明度设置为0,那么我想显示底层行颜色。

现在,如果我使用混音,我可以用不同的方式设计我的CSS。但是如何从rgba-string中获取不透明度以确定字符串是否应该透明?正则表达式是否在mixin中工作?

即:我会喜欢(我知道,正则表达式部分是js,但对于css / mixin来说类似):



@mixin active-background-color($activeBackgroundColor){ 
	@if ($activeBackgroundColor.replace(/^.*,(.+)\)/,'$1') == 0) { 
		background-color: none;
	} @else {
        background-color: $activeBackgroundColor
    }
}




所以解决方案结果如下(任何人都应该感兴趣):



@mixin active-background-color($color) {
    $alphaVal: alpha($color);
    @if ($alphaVal== 0){
      background-color: inherit;
    } @else {
      background-color: $color;
    }
}




链接到我使用的解决方案:The Sass Way

1 个答案:

答案 0 :(得分:0)

听起来你应该只在tr上定义选择 并将用户选择的颜色添加到td:

tr { background-color: whitesmoke; }     //  default row color                  
tr:hover    { background-color: #ccc;  } //  default row selected color
tr:hover td { background-color: tomato } //  user defined selected color
//  if the user selects a transparent selection color
//  the default row selected color will show



table { width:100%; border-collapse: collapse;}
tr { cursor: pointer; }
td { font:1rem sans-serif; padding:.2rem; }

tr { background-color: whitesmoke; }                       
tr:hover    { background-color: #ccc;  }                   
tr:hover td { background-color: tomato }                   
tr:last-of-type:hover td { background-color: transparent } 

<table>
    <tr><td>One</td><td></td><td></td><td></td></tr>
    <tr><td>Two</td><td></td><td></td><td></td></tr>
    <tr><td>Three</td><td></td><td></td><td></td></tr>    
</table>
&#13;
&#13;
&#13;