我正在使用svg.js绘制我的SVG。我想知道,是否有可能掩盖旋转元素。我可以实现旋转蒙面元素,这是不一样的。
查看一个最小的工作示例 - http://jsfiddle.net/mreq/LP7sa/1/ - 我希望用红色矩形遮盖旋转的图像。该示例生成以下代码:
<svg xmlns="http://www.w3.org/2000/svg" id="SvgjsSvg1000" version="1.1" width="100%" height="100%" xlink="http://www.w3.org/1999/xlink" style="position:relative;overflow:hidden;left:0px;top:0px;">
<rect id="SvgjsRect1003" width="50%" height="50%" y="75" x="125" fill="red"/>
<image id="SvgjsImage1004" href="http://t1.gstatic.com/images?q=tbn:ANd9GcQo_CFlPKdX-_-EEs34S-Y8T9l2kVNY59fwfhCKHBK90XSwS21grA" width="400" height="250" transform="rotate(75 200 125)" mask="url("#SvgjsMask1005")"/>
<defs id="SvgjsDefs1001">
<mask id="SvgjsMask1005">
<rect id="SvgjsRect1002" width="50%" height="50%" fill="#ffffff" x="125" y="75"/>
</mask>
</defs>
</svg>
解决方案可以是通用的SVG - 它不必使用svg.js并且可以使用任何其他库。我尝试旋转蒙版 - 矩形,但这不会,因为我需要调整大小,移动和翻转图像。
答案 0 :(得分:7)
只需将掩码(或剪辑路径)放在父<g>
元素上,例如this:
<svg xmlns="http://www.w3.org/2000/svg" id="SvgjsSvg1000" version="1.1" width="100%" height="100%" xlink="http://www.w3.org/1999/xlink" style="position:relative;overflow:hidden;left:0px;top:0px;">
<defs>
<mask id="mask" maskUnits="userSpaceOnUse">
<rect id="SvgjsRect1003" width="50%" height="20%" y="75" x="125" fill="white"/>
</mask>
</defs>
<g mask="url(#mask)">
<image id="SvgjsImage1004" xlink:href="http://t1.gstatic.com/images?q=tbn:ANd9GcQo_CFlPKdX-_-EEs34S-Y8T9l2kVNY59fwfhCKHBK90XSwS21grA" width="400" height="250" transform="rotate(75 200 125)" />
</g>
</svg>