使用CSS实现中间镂空的图片遮罩效果
author:一佰互联 2019-04-21   click:215

中间镂空的图片遮罩指的大概就是这样一个效果:

镂空一个洞的代码
CSS Code复制内容到剪贴板

  1. <div id="container" style="position: relative; margin: 550px 0 0 50px;">   
  2. <svg style="position: absolute;" width="400" height="280">   
  3. <defs>   
  4. <mask id="mask3">   
  5. <rect x="0" y="0" width="100%" height="100%" style="stroke:none; fill: #ccc"></rect>   
  6. <circle id="circle1" cx="100" cy="100" r="50" style="fill: #000" />   
  7. </mask>   
  8. </defs>   
  9. <rect x="0" y="0" width="100%" height="100%" style="stroke: none; fill: #ccc; mask: url(#mask3)"></rect>   
  10. </svg>   
  11. <img src="http://img6.cache.netease.com/cnews/2014/11/3/20141103100737855b7.jpg" />   
  12. </div>  

镂空多个洞的代码

CSS Code复制内容到剪贴板
  1. <div id="container" style="position: relative;">   
  2. <svg style="position: absolute;" width="400" height="280">   
  3. <defs>   
  4. <mask id="mask3">   
  5. <rect x="0" y="0" width="100%" height="100%" style="stroke:none; fill: #ccc"></rect>   
  6. <circle id="circle1" cx="100" cy="50" r="50" style="fill: #000" />   
  7. <circle id="circle1" cx="300" cy="100" r="50" style="fill: #000" />   
  8. <circle id="circle1" cx="100" cy="200" r="50" style="fill: #000" />   
  9. </mask>   
  10. </defs>   
  11. <rect x="0" y="0" width="100%" height="100%" style="stroke: none; fill: #ccc; mask: url(#mask3)"></rect>   
  12. </svg>   
  13. <img src="http://img6.cache.netease.com/cnews/2014/11/3/20141103100737855b7.jpg" />   
  14. </div>  

 

CSS3 版

用 box-shadow ,代码如下:

CSS Code复制内容到剪贴板
  1. positionfixed;   
  2. left150px;   
  3. top35px;   
  4. width100px;   
  5. height100px;   
  6. border-radius: 100px;   
  7. box-shadow: rgba(0,0,0,.8) 0px 0px 0px 2005px;   
  8. z-index: 100;  

缺点是只能镂空一个洞。