我试图使用外部SVG图像屏蔽内容,如下所示:
#homepage-banner .desktop-slider.masked {
-webkit-mask:url(news-panel-mask.svg) left top no-repeat; /* Chrome/Safari (Webkit) */
mask: url(news-panel-mask.svg#mask); /* Firefox */
}
news-panel-mask.svg文件包含以下内容:
<?xml version="1.0" encoding="utf-8"?>
<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
width="1170px" height="494px" viewBox="0 0 1170 494" enable-background="new 0 0 1170 494" xml:space="preserve">
<defs>
<mask id="mask" maskUnits="userSpaceOnUse">
<path fill="white" d="M1170.001,494V0h-352v141.605c0,2.2-0.521,5.274-2.075,6.832l-21.725,21.393c-1.554,1.557-3.2,4.631-3.2,6.832v131.692
c0,2.2,2.021,5.274,3.575,6.832l20.975,21.393c1.554,1.557,2.45,4.631,2.45,6.831V494H1170.001z"/>
</mask>
</defs>
</svg>
这适用于Firefox,但我需要删除svg文件中的<defs>
和<mask>
标记才能使其在Chrome上运行。有没有办法解决这个问题,所以我可以为两个浏览器使用相同的svg文件?
感谢您的帮助。
答案 0 :(得分:2)
正如我在上面的评论中所链接的,解决方案是为.svg文件中的每个浏览器使用单独的路径:
<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" width="1170px" height="494px" viewBox="0 0 1170 494" enable-background="new 0 0 1170 494" xml:space="preserve">
<!-- Webkit -->
<path fill="white" d="M1170.001,494V0h-352v141.605c0,2.2-0.521,5.274-2.075,6.832l-21.725,21.393c-1.554,1.557-3.2,4.631-3.2,6.832v131.692
c0,2.2,2.021,5.274,3.575,6.832l20.975,21.393c1.554,1.557,2.45,4.631,2.45,6.831V494H1170.001z"/>
<!-- Firefox -->
<defs>
<mask id="mask" maskUnits="userSpaceOnUse">
<path fill="white" d="M1170.001,494V0h-352v141.605c0,2.2-0.521,5.274-2.075,6.832l-21.725,21.393c-1.554,1.557-3.2,4.631-3.2,6.832v131.692
c0,2.2,2.021,5.274,3.575,6.832l20.975,21.393c1.554,1.557,2.45,4.631,2.45,6.831V494H1170.001z"/>
</mask>
</defs>
</svg>