2016-08-25 277 views
4

我有以下代码:如何在CSS中混合颜色?

.reviewed { 
 
    background-color: rgba(228, 225, 219, 1); 
 
} 
 
.deleted { 
 
    background-color: red; 
 
}
<table> 
 
    <tr> 
 
    <td>№</td> 
 
    <td>Name</td> 
 
    </tr> 
 
    <tr class="reviewed"> 
 
    <td>1</td> 
 
    <td>Ivan</td> 
 
    </tr> 
 
    <tr> 
 
    <td>2</td> 
 
    <td>Andrey</td> 
 
    </tr> 
 
</table>

我怎样才能让这个当两个班.deleted.reviewed是一个元素上设置的.deletedbackground-color考虑到background-color.reviewed

使用这两个类时,颜色应该比使用类.deleted时颜色更深。

回答

1

如果您使用CSS预处理程序,例如SASS/LESS您可以简单地定义两个颜色变量并使用颜色混合功能来生成第三种颜色。

SASS example

$color1: rgba(228, 225, 219, 1); 
$color2: red; 

.reviewed { 
    background-color: $color1; 
} 
.deleted { 
    background-color: $color2; 
} 
.reviewed.deleted { 
    background-color: mix($color1, $color2); 
} 

LESS Example

1

可以设置的CSS背景的梯度,并产生一个类似的效果在Photoshop

例如梯度

background-image: -webkit-linear-gradient(to bottom right, red, rgba(255,0,0,0)); 
background-image: -ms-linear-gradient(to bottom right, red, rgba(255,0,0,0)); 
background-image: -o-linear-gradient(to bottom right, red, rgba(255,0,0,0)); 
background-image: -moz-linear-gradient(to bottom right, red, rgba(255,0,0,0)); 
2
.reviewed { 
    background-color:rgba(228, 225, 219, 1); 
} 

.deleted { 
    background-color:red; 
} 
.reviewed.deleted { 
    background-color:/*use color code for something dark red*/ 
} 

.reviewed.deleted指具有reviewed类和deleted

+2

做,在这种方式 – Vladimir

2

元件`background-blend-mode`可以让你将两个背景混合在一起

在这种情况下,background-blend-mode: mulitply;可以给你变暗的background-color.deleted所需的效果。

下面的改变是必需的:

  • 变化background-color:rgba(228, 225, 219, 1);background-image: linear-gradient(0deg, rgba(228, 225, 219, 1), rgba(228, 225, 219, 1));.reviewed。这将给.reviewed相同的背景颜色,但将使background-blend-mode.deleted
  • background-color组工作添加background-blend-mode: multiply;.deleted,使背景颜色与“背景图片”上.reviewed

.reviewed { 
 
    background-image: linear-gradient(0deg, rgba(228, 225, 219, 1), rgba(228, 225, 219, 1)); 
 
} 
 
.deleted { 
 
    background-blend-mode: multiply; 
 
    background-color: red; 
 
}
<table> 
 
    <tr> 
 
    <td>Number</td> 
 
    <td>Name</td> 
 
    </tr> 
 
    <tr class="reviewed"> 
 
    <td>1</td> 
 
    <td>Reviewed</td> 
 
    </tr> 
 
    <tr class="reviewed deleted"> 
 
    <td>2</td> 
 
    <td>Reviewed and deleted</td> 
 
    </tr> 
 
    <tr class="deleted"> 
 
    <td>3</td> 
 
    <td>Deleted</td> 
 
    </tr> 
 
</table>
设置为混合

的优势,这是你没有的计算是通过CSS完成指定第三种颜色。缺点是目前在IE或Edge中没有这方面的支持。

background-blend-mode受Firefox,Chrome支持,部分受Safari支持。 http://caniuse.com/#feat=css-backgroundblendmode