javascript - 使用js动态添加SVG mask

标签 javascript jquery svg two.js

我使用 jquery 和two.js 的组合来创建动画 svg。我遇到了一个奇怪的错误,即标记添加不正确并且浏览器未呈现。

真正奇怪的部分是,如果我在 Chrome 中打开检查器并在蒙版元素上选择“编辑为 html”并向蒙版添加任何额外元素,整个内容就会按预期呈现。

我复制/粘贴了 html 并发现了这一点:

style="mask: url("#mask1");"

我使用 vanilla js 来设置样式:

document.querySelector('#two_106').style.mask = "url('#mask1')"

但没有效果。

这是标记的重要部分:

<svg version="1.1" width="1339" height="805" style="overflow: hidden; display: block; top: 0px; left: 0px; right: 0px; bottom: 0px; position: fixed;">

    <defs>
        <mask id="mask1" x="0" y="0" width="1000" height="1000">
            <g id="two_2" transform="matrix(1 0 0 1 0 0)" opacity="1">
                <!-- path elements -->
            </g>
        </mask>
    </defs>

    <g id="two_106" transform="matrix(1 0 0 1 0 0)" opacity="1" style="mask: url(&quot;#mask1&quot;);"> 
<!-- path elements -->
    </g>

</svg>

最佳答案

你真的想要这个...

document.querySelector('#two_106').style.mask = "url(#mask1)"

单引号会变成 html 转义字符,但您无论如何都不需要它们。

关于javascript - 使用js动态添加SVG mask ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35639175/

相关文章:

javascript - jquery: this.not (':animated' ) && that.is (':visible' ) 不遵守规则,语法问题?只有几行代码

javascript - 在加载主图像时加载图像

javascript - 为什么 three.js SVGLoader 会颠倒渲染 svgs?

html - 无法在 Safari 中渲染 SVG 图像

javascript - 在 Bootstrap 导航栏中禁用新行

JavaScript 检查表单是否为空

javascript - foreach 内的 $timeout

html - 为什么流体背景 SVG 文件不能在所有尺寸下正确显示?

javascript - 如何将 JavascriptSerializer 序列化的 DateTime 字符串转换为 Javascript Date 对象

javascript - 无法从javascript中的数据表服务器端调用CSS类