CSS遮罩mask

前面的话

  CSS 遮罩是2008 年 4 月由苹果公司添加到 webkit 引擎中的。遮罩提供一种基于像素级别的,可以控制元素透明度的能力,类似于 png24 位或 png32 位中的 alpha 透明通道的效果。本文将详细介绍 CSS 遮罩 mask

概述

  遮罩 mask 的功能就是使用透明的图片或渐变遮罩元素的背景。于是,遮罩 mask 与背景 background 非常类似,除了没有 color 子属性,背景 background 剩下的 6 个子属性,mask 都有

  遮罩 mask 是一个复合属性,包括 mask-image、mask-mode、mask-repeat、mask-position、mask-clip、mask-origin、mask-size、mask-composite 这 8 个属性

  [注意]IE 浏览器不支持,webkit 内核的浏览器 (包括 chrome、safari、IOS、android) 需要添加 -webkit- 前缀。要特别注意的是,firefox 浏览器也支持 webkit-mask 属性

【mask-image】

  默认值为 none,值为透明图片,或透明渐变

【mask-repeat】

  默认值为 repeat,可选值与 background-repeat 相同,详细情况移步至此

【mask-position】

  默认值为 0 0,可选值与 background-position 相同,详细情况移步至此

【mask-clip】

  默认值为 border-box,可选值与 background-clip 相同,详细情况移步至此

【mask-origin】

  默认值为 border-box,可选值与 background-origin 相同,详细情况移步至此

【mask-size】

  默认值为 auto,可选值与 background-size 相同,详细情况移步至此

【mask-mode】

  默认值为 match-source,可选值为 alpha、luminance、match-source,或者它们的组合

【mask-composite】

  默认值为 add,可选值为 add、subtract、intersect、exclude

  [注意] 只有 firefox 支持 mask-mode 和 mask-composite

 

实例

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Document</title>
<style>
.wrap{
    position:absolute;
    width: 400px;
    border:1px solid black;
}
#mask{
    height: 300px;
    background:url(http://sandbox.runjs.cn/uploads/rs/142/wat3wtnz/dongzhi.jpg) lightblue;
    -webkit-mask:  url(http://sandbox.runjs.cn/uploads/rs/142/wat3wtnz/mask.png) no-repeat;
    animation: 2s maskPosition infinite alternate ;
}
#mask:hover{
    animation: none;
}
@keyframes maskPosition{
    0%{-webkit-mask-position:0 0;}
    100%{-webkit-mask-position:100% 100%;}
}
</style>
</head>
<body>
<div class="wrap">
    <div id="mask"></div>    
</div>
<script>
var oBox = document.getElementById('mask');
oBox.onmousemove = function(e){
    e = e || event;
    oBox.style.WebkitMaskPosition=(e.clientX-50)+"px "+ (e.clientY-50)+"px";
}    
</script>
</body>
</html>