<body>
<p class="underneath">
Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor
in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.
</p>
<div class="overlay"></div>
</body>
7条答案
按热度按时间lzfw57am1#
您可以使用2种不同的技术实现透明的圆形切口:
1. SVG
以下示例使用inline svg。第一个代码段使用mask element剪切透明圆,第二个空心圆使用path element生成。圆使用2个arc命令生成:
一个二个一个一个
在这种情况下使用SVG的主要优点是:
用
overflow:hidden;
创建一个div,在其中用border-radius创建一个round伪元素,给它一个巨大的方框阴影,没有背景:同样的方法是使用border而不是box-shadow。如果你需要支持不支持box-shadow的浏览器,比如IE8,这会很有趣。技术是一样的,但是你需要用top和left的值来补偿,以保持圆圈在div的中心:
pkbketx92#
这可以通过radial gradient背景和指针事件来实现(允许鼠标通过圆圈层进行交互,例如文本选择)。
这就是它的代码:
kjthegm63#
关于web-tiki的回答,我想补充的是,你总是可以用
translate(-50%,-50%)
居中一个div,所以使用border
-属性是没有问题的,它有更好的浏览器支持。你可以用这个技巧来获得真正的创造力:
一个一个二个一个一个一个三个一个一个一个一个一个四个一个
t2a7ltrp4#
关于“Pius Nyakoojo”中的“方法1”,稍微改进一下(见下文)就可以了。我个人认为这是最简单的解决方案:
l7mqbcuq5#
我们可以用
radial-gradient
和mask
来实现,用一个div,没有伪元素。圆半径也可以是百分比值:
一个二个一个一个
另一个想法:
反向:
mcdcgff06#
方法1-首选
方法二
一个二个一个一个
zvms9eto7#
你可以使用css蒙版和额外的svg图片。
尽管浏览器支持较弱