[英]svg clipPath doesn't clip
我正在尝试通过SVG和clipPath 在图像上创建透明箭头 。 这是带有工作解决方案的jsfiddle 。
当我尝试在div
容器中应用此解决方案时, clipPath
不会裁剪并且图像背景为白色。
.poi-wrapper{ display: flex; background: white; } .background-img{ width: 110px; height: 110px; } .svg-background, .svg-image { clip-path: url(#clip-triangle); } svg.poi-image { position: absolute; height: 110px; width: 110px; } .intro-content{ vertical-align: top; padding-left: 10px; padding-right: 5px; background: white; height: 100px; }
<div class="label-wrapper" style="position: absolute; font-family: "Helvetica Neue"; font-weight: 300; color: white; width: 809px; left: 112px;"> <div id="poi-0" class="poi-wrapper poi-intro" style="height: 100px; position: absolute; font-family: "Helvetica Neue"; font-weight: 300; background: white; color: black;"> <div class="background-img"> <svg class="poi-image"> <defs> <clipPath id="clip-triangle"> <poligon points="0,0 110,0 110,100 30,100 20,110 10,100 0,100 0,0"></poligon> </clipPath> </defs> <rect class="svg-background" width="110px" height="110px" clip-path="url(#clip-triangle)"></rect> <image class="svg-image" width="110px" height="110px" clip-path="url(#clip-triangle)" xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://upload.wikimedia.org/wikipedia/en/thumb/6/6c/Seafarers_title.jpg/225px-Seafarers_title.jpg"></image> </svg> </div> <div class="intro-content"> <span class="poi-header">One step away</span><span class="poi-subheading">1 hour and 28 minutes</span> <ul class="poi-details"> <li>3</li> <li>4</li> </ul> </div> </div> </div>
我制作了两个svg
元素,一个包含多边形,另一个包含rect,image,就像在工作示例中一样。
之后,我从实际的工作示例中复制了clipPath代码,现在它可以工作了。
检查以下示例
.poi-wrapper { display: flex; background: white; } .background-img { width: 110px; height: 110px; } .svg-background, .svg-image { clip-path: url(#clip-triangle); } svg.poi-image { position: absolute; height: 110px; width: 110px; } .intro-content { vertical-align: top; padding-left: 10px; padding-right: 5px; background: white; height: 100px; }
<div class="label-wrapper" style="position: absolute; font-family: "Helvetica Neue"; font-weight: 300; color: white; width: 809px; left: 112px;"> <div id="poi-0" class="poi-wrapper poi-intro" style="height: 100px; position: absolute; font-family: "Helvetica Neue"; font-weight: 300; background: white; color: black;"> <div class="background-img"> <svg class="poi-image"> <rect class="svg-background" width="110px" height="110px"></rect> <image class="svg-image" width="110px" height="110px"></image> </svg> </div> <svg id="svg-defs"> <defs> <clipPath id="clip-triangle"> <polygon points="0,0 110,0 110,100 30,100 20,110 10,100 0,100 0,0"/> </clipPath> </defs> </svg> </div> </div>
在我的代码中,我有poligon
元素而不是polygon
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.