【发布时间】:2016-09-21 19:42:47
【问题描述】:
我有一个 SVG 正在裁剪一个填充了颜色的 div。我需要的是使用遮罩来剪裁背景颜色并描边剪裁的结果。这可能吗?如果需要,我愿意重新配置不使用background-color。
var container = document.createElement('div');
var el = container.appendChild(document.createElement('div');
el.style["background-color"] = "orange";
el.style["-webkit-mask-image"] = 'url("img/marker.svg")';
el.style["mask-image"] = 'url("img/marker.svg")';
//marker.svg
<?xml version="1.0" encoding="utf-8"?>
<!-- Generator: Adobe Illustrator 20.1.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
<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"
viewBox="0 0 108 180" style="enable-background:new 0 0 108 180;" xml:space="preserve">
<style type="text/css">
.st0{fill:#7C1416;}
</style>
<path class="st0" d="M54,0C24.2,0,0,24.2,0,54s54,126,54,126s54-96.2,54-126S83.8,0,54,0z M54,77c-12.7,0-23-10.3-23-23
c0-12.7,10.3-23,23-23s23,10.3,23,23C77,66.7,66.7,77,54,77z"/>
</svg>
【问题讨论】:
-
您不只是使用 SVG 作为 div 的背景,而不是使用它来剪辑 div,有什么原因吗?
-
是的,我希望能够动态控制颜色。通过 JS。有没有办法从 irk 中读取 svg 并以编程方式更改 svg 上的全色?
-
什么是“讨厌”?这是链接的错字吗?如果您通过
<object>包含该文件,则可以修改该文件。但是你不能用 CSS 来设置它的样式。为此,您需要在页面中内联 SVG - 直接在代码中,或者通过从文件加载并将其插入 DOM。
标签: javascript css svg mask clip