SVG中fill-rule="evenodd"不生效,无法实现路径透明挖洞怎么办
解决SVG中evenodd填充规则不生效的孔洞问题
你现在的问题是把fill-rule="evenodd"用在了第二个独立的<path>上,但这个规则只对单个<path>内部的多个子路径生效,两个分开的<path>是独立的图形,没法互相挖洞。
要实现孔洞效果,你需要把两个路径合并成同一个<path>的子路径,具体做法是把两个d属性的路径数据用逗号分隔,然后给这个复合路径设置fill-rule="evenodd"和填充色:
<svg xmlns="http://www.w3.org/2000/svg" viewBox="200 0 270 80"> <path d="M 230 10 L 220 20 L 220 60 L 230 70 L 250 70 L 260 60 L 260 20 L 250 10 L 230 10, M 235 20 L 230 25 L 230 55 L 235 60 L 245 60 L 250 55 L 250 25 L 245 20 L 235 20" fill="#FF5500" fill-rule="evenodd"/> </svg>
原理是:复合路径里的多个子路径,evenodd规则会根据路径的环绕次数决定填充区域——外部路径环绕一次的区域会被填充,内部子路径环绕后,重叠区域的环绕次数变成2,就会被镂空,这样就形成了你要的透明孔洞效果。
内容的提问来源于stack exchange,提问作者RaiuProGram
相关产品推荐
相关产品推荐

