clip-path 解决方案 --------------------------------------------------------- ---->
您可以使用clip-path 来执行此操作:
.rect {
position: absolute;
width: 165px;
height: 100px;
background-color: black;
-webkit-clip-path: polygon(0 0, 0 100%, 40% 100%, 50% 75%, 60% 100%, 100% 100%, 100% 0%);
}
body {
background-color: lightblue;
}
注意: Firefox 不支持此属性。
在 Chrome 上运行良好。
查看浏览器对 clip-path 的支持 ----------> HERE。
<svg> 解决方案 - 将支持所有浏览器 [除了 IE8] -------- ----------------->
由于 Firefox 仍然支持 clip-path: url(),因此您可以创建一个内联 svg 元素,并在 clipPath 内定义 points 的 polygon 元素。给 clipPath 元素一个 id(#mask) 并在 CSS 中使用它而不是 polygon(0 0, 0 100%, 40% 100%, 50% 75%, 60% 100%, 100% 100%, 100% 0%);。
HTML:
<div class="rect"></div>
<svg>
<defs>
<clipPath id="mask">
<polygon points="0,0 0,100 66,100 82.5,75 99,100 165,100 165,0 " />
</clipPath>
</defs>
</svg>
CSS:
.rect {
position: absolute;
width: 165px;
height: 100px;
background-color: black;
-webkit-clip-path: url(#mask);
clip-path: url(#mask);
}
body {
background-color: lightblue;
}
<svg> 没有任何解决方案CSS ---------------------------------------->
HTML:
<svg>
<polygon points="0,0 0,100 66,100 82.5,75 99,100 165,100 165,0" style="fill:black" />
</svg>
查看支持svg的浏览器 ----------> HERE