CSS masks
-webkit-mask
这个属性是相当强大的,详细的介绍请到这里查看,它非常值得深入研究.
-webkit-mask 让为一个元素添加蒙板成为可能,从而你可以创建任意形状的花样。蒙板可以是 CSS3 渐变或者半透明的 PNG 图片。蒙板元素的 alpha 值为0的时候会覆盖下面的元素,为1的时候会完全显示下面的内容。相关的属性有 -webkit-mask-clip 、 -webkit-mask-position 和 -webkit-mask-repeat 等,严重依赖来自于 background 中的语法。
可以如下添加 CSS 代码,让 SVG 作为蒙版图:
1
2
3
4
5
6
|
.icon {
background-color: red;
-webkit-mask-image: url(icon.svg);
mask-image: url(icon.svg);
}
|
改变 SVG 颜色
SVG 可以画出各种形状的图形,使用十分方便,通过以下方法可以只改变CSS的背景颜色就改变 SVG 的背景颜色。
HTML 结构:
1
2
3
4
5
6
7
|
<div class="icon icon-red"></div>
<div class="icon icon-orange"></div>
<div class="icon icon-yellow"></div>
<div class="icon icon-green"></div>
<div class="icon icon-blue"></div>
...
|
CSS:
1
2
3
4
5
6
7
8
9
10
11
|
/*给每个 div 添加样式,并使用 SVG 最为蒙版背景*/
.icon {
width: 48px;
height: 48px;
display: inline-block;
-webkit-mask: url(https://s3-us-west-2.amazonaws.com/s.cdpn.io/18515/heart.svg) no-repeat 50% 50%;
mask: url(https://s3-us-west-2.amazonaws.com/s.cdpn.io/18515/heart.svg) no-repeat 50% 50%;
-webkit-mask-size: cover;
mask-size: cover;
}
|
只要改变 div 背景颜色, SVG 的颜色也会改变
1
2
3
4
5
6
|
.icon-red { background-color: red; }
.icon-orange { background-color: orange; }
.icon-yellow { background-color: yellow; }
.icon-green { background-color: green; }
.icon-blue { background-color: blue; }
|
总结
mask 属性十分强大,但是需要最先进的浏览器支持。