【发布时间】:2013-12-12 19:22:17
【问题描述】:
我正在使用以下实现来使用 SVG 和一些 CSS 来屏蔽元素。
//styles.css
.elementToBeMasked {
width: 100%;
height: 100%;
position: absolute;
z-index: 1;
display: block;
overflow: hidden;
clip-path:url(rhombus.svg#rhombusclip);
-webkit-mask:url(rhombus.svg#rhombus);
-webkit-mask-repeat:no-repeat;
} ...
//rhombus.svg
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<svg xmlns="http://www.w3.org/2000/svg" version="1.1" width="500" height="500">
<clipPath id="rhombusclip">
<path id="rhombuspath" d="M0,0 L500,0 500,500 100,500 z" fill="#000000" />
</clipPath>
<path id="rhombus" d="M0,0 L500,0 500,500 100,500 z" fill="#000000" />
</svg>
这适用于 Chrome、Safari 和 Firefox。但是,我希望对一些属性进行动画处理,因此我一直在尝试将 SVG 内联到我的 HTML 中。
这是我的内联 SVG 代码:
//index.html
<div class="elementToBeMasked">...</div>
<svg xmlns="http://www.w3.org/2000/svg" version="1.1" width="500" height="500">
<clipPath id="rhombusclip">
<path id="rhombuspath" d="M0,0 L500,0 500,500 100,500 z" fill="#000000" />
</clipPath>
<path id="rhombus" d="M0,0 L500,0 500,500 100,500 z" fill="#000000" />
</svg>
这是我更新的 CSS:
//styles.css
.elementToBeMasked {
...
clip-path:url(index.html#rhombusclip);
-webkit-mask:url(index.html#rhombus);
}
此 实现不适用于任何浏览器。任何建议将不胜感激。
【问题讨论】:
-
我认为同时使用
clip-path和mask(或-webkit-mask)是个坏主意。它们可能看起来做同样的事情,但它们是独立的属性。您是否尝试过使用clip-path和-webkit-clip-path代替?那么至少您使用的是“相同”的属性。
标签: javascript css svg clipping css-mask