超级简单实现截图阴影蒙层

629 阅读1分钟

前言:

最近在写一个截图的工具。需要实现一个类似pc端截图软件的阴影蒙层。
因为我要先创建框选框,并且大小是变化的。总结下大致有下面几种方案:

1. 使用半透明的边框

将边框设置的足够宽,覆盖整个屏幕,再设置边框颜色的透明度就可以实现类似的效果了。

border: 10000px soild rgba(0,0,0,0.35)

2.设置阴影

给框选框设置阴影,阴影扩散半径设置能覆盖整个屏幕,再设置阴影颜色透明度。

box-shadow: 0px 0px 0px 10000px rgba(0,0,0,0.35)

3.利用css clip-path属性

在绘制框选框的之前创建蒙层标签,设置背景色,宽高整个浏览器视口。利用css的clip-path属性来裁剪一个空心的矩形。

clip-path: polygon(50% 0%, 100% 50%, 50% 100%, 0% 50%);

4.使用双层div

将整个屏幕截图并作为背景显示在两个div中,内层设置透明度,外层根据框选区域进行裁剪显示图片,也能达到类似的效果。

5.利用svg/canvas进行绘制

利用SVG或者canvas的绘图功能进行绘制阴影。实现还是比较繁琐的就没有去实践了。


最终考虑还是第一种和第二种比较方便。不需要获取元素的宽高就可以快速实现功能。