我正在尝试创建本质上与 CSS 剪辑路径相反的东西。使用 clip-path 时,图像或 div 会被裁剪,以便仅保留您指定的形状,而其余背景将被有效删除。
我希望这样,如果我剪辑一个形状,它基本上会在最上层打一个洞并移除形状,而不是背景。这可能吗?我也对 SVG 解决方案持开放态度,但我是 SVG 的新手,所以请善待 :)
基本上,在下面的代码中,我有一个完全位于红色方块内的蓝色方块,并且希望能够从蓝色方块中打出一个形状,以便下面的红色层显示出形状曾经所在的位置。实际上会有一个图像作为背景层,所以我不能接受模仿我想要的但实际上没有冲出形状的伪效果。
任何帮助都会很棒!
代码笔: https ://codepen.io/emilychews/pen/GQmyqx
body {
width: 100%;
height: 100vh;
padding: 0; margin: 0;
display: flex;
}
#box {
margin: auto;
position: relative;
width: 33%;
height: 200px;
background: red;
}
#innerbox {
width: 100%;
height: 100%;
background: blue;
top: 0;
left: 0;
position: absolute;
}
<div id="box">
<div id="innerbox"></div>
</div>
原文由 pjk_ok 发布,翻译遵循 CC BY-SA 4.0 许可协议
您可以将图像 放在蓝色部分上方,然后在其上应用
clip-path
结果将与您在蓝色部分内部创建一个孔相同,如下图 所示:另一个想法是考虑多个背景,您将获得比 clip-path 更好的支持,而且代码更少:
更新
如果你想要一些不透明度,这里有一个想法,你必须使用
clip-path
复制内容(缺点):更新 2
您可以考虑使用 SVG 来满足您的初始要求。只需使用 SVG 而不是 div,您将在其中获得遮罩。
您还可以使用与背景相同的 SVG:
更新 3(我在 2020 年推荐的)
您可以使用 CSS 掩码来获得您想要的效果
mask-composite
和使用相同形状的倒置版本