我试图创建一个CSS clip-path的反向路径,当使用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>
3条答案
按热度按时间6ljaweal1#
您可以将图像放在蓝色部分的上方,并在其上应用
clip-path
,然后结果将与在蓝色部分内创建一个孔以查看下方的图像相同:另一个想法是考虑多个背景,你会有比clip-path更好的支持,也更少的代码:
一个二个一个一个
如果你想要一些透明度,这里有一个想法,你必须使用
clip-path
复制内容(缺点):您可以考虑SVG来满足您的初始需求,只需使用SVG而不是div(您将在其中使用掩码)即可。
您也可以使用相同的SVG作为背景:
您可以使用CSS遮罩来获得您想要的效果与
mask-composite
而倒置的版本使用相同的形状
一个12b1x一个13b1x
bkhjykvo2#
这在谷歌排名很高,答案并没有解决我的问题b/c我不能触摸我的背景图像,所以这里是另一种方法来做到这一点:
创建一个带有剪贴路径的框架。
我把clip-div放在图片里面是为了方便,但是你也可以把它放在图片外面,但是要确保你能接受浏览器对clip-path的有限支持。
a64a0gku3#
要在var()和calc()的帮助下扩展@leonheess的伟大工作,您可以设置x/y/width/height的变量,并根据js熟悉的属性轻松地在正方形中移动。
如果你真的愿意,你甚至可以更进一步,在html中定义你的css变量,比如:
一个二个一个一个