다음 구현을 사용하여 SVG 및 일부 CSS를 사용하여 요소를 마스크합니다.SVG가 별도의 파일이지만 인라인이 아닌 경우 클립 경로/웹 키트 마스크가 작동합니다.
//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'를 대신 사용해 보셨습니까? 적어도 "같은"속성을 사용하고 있습니다. –