gpt4 book ai didi

javascript - 当 header 中有 标记时,为什么 snapsvg mask 在 Chrome 和 Firefox 中不起作用?

转载 作者:行者123 更新时间:2023-11-30 10:12:02 25 4
gpt4 key购买 nike

这是我的代码

    var s = Snap("#mySVG");
var r = s.rect(0,0,100,200,20,20).attr({ stroke: '#FFFFFF', 'strokeWidth': 20, fill: 'red' });
var clip1 = s.rect(0,0,200,60).attr({ stroke: '#FFFFFF', 'strokeWidth': 1, fill: 'white' });
r.attr({ mask: clip1 });

掩码在 IE 10 中按预期工作,但在 Firefox 32 和 Chrome 37 中无效。

怎么了?

编辑user13500 回答后。我解决了这个问题,从一个空白页面开始,然后从我的非工作页面导入所有元素。 header 中的基本标记似乎阻止它在 FF 和 Chrome 下工作。这对我来说看起来很疯狂,因为除了掩码之外的其他一切都有效,所以这不是脚本路径问题。

 <base href="http://127.0.0.1/mySiteDev/">

最佳答案

是的,正如 @Robert Longson 评论的那样, masks url 随 base 标签变化。您可以通过纯 HTML/SVG 将示例重现为:

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<title>Snap base</title>
<style media="screen">
body {
background: #fff;
}
</style>
<base href="http://127.0.0.1/mySiteDev/">
</head>
<body>
<svg id="mySVG">
<defs>
<mask id="Si0fh161e4">
<rect x="0" y="0" width="200" height="60" stroke="#ffffff"
style="stroke-width: 1px;" fill="#ffffff">
</rect>
</mask>
</defs>
<rect x="0" y="0" width="100" height="200" rx="20" ry="20" stroke="#ffffff"
fill="#ff0000" style="stroke-width: 20px;" mask="url('#Si0fh161e4')">
<!-- Problem URL --^ -->
</rect>
</svg>
</body>
</html>

这里的 url url('#Si0fh161e4') 使用 http://127.0.0.1/mySiteDev/,要更正它必须包含文档。例如

mask="url('the_document.html#Si0fh161e4')"></rect>

或者,有点没用;

<base href="//127.0.0.1/mySiteDev/the_document.html">
<base href="the_document.html">
...

破坏了可用性

我没有在 Snap 文档中找到任何关于设置 URL 基础的内容,但我会进一步查看。


旧答案:

您的代码在这里工作正常。 Chrome 37、Firefox 32、Opera 12。

结果:

enter image description here


示例片段(您的代码):

window.onload = function () {
var s = Snap("#mySVG");
var r = s.rect(0, 0, 100, 200, 20, 20).attr({
stroke : '#FFFFFF',
strokeWidth : 20,
fill : 'red'
});
var clip1 = s.rect(0, 0, 200, 60).attr({
stroke : '#FFFFFF',
strokeWidth : 1,
fill : 'white'
});
r.attr({
mask: clip1
});
};
<script src="//cdnjs.cloudflare.com/ajax/libs/snap.svg/0.3.0/snap.svg-min.js"></script>
<svg id="mySVG"></svg>

关于javascript - 当 header 中有 <base> 标记时,为什么 snapsvg mask 在 Chrome 和 Firefox 中不起作用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25999037/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com