作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
是否可以在 Snapsvg 中的矩形元素中创建例如圆孔?我尝试使用白色和黑色元素以及 mask 功能,但我无法弄清楚。大多数结果是倒置的(我只看到带有矩形颜色的圆圈)或根本没有效果。搜索谷歌也没有帮助 - 我发现的唯一相关的东西是 that但是当我尝试使用 Snapsvg 复制它时,它的效果并不像我之前尝试描述的那样好(我必须承认,我不完全确定这是我的错误还是因为 snapsvg 掩码处理)。
这非常重要,这将是使用矩形的简单解决方案,而不是使用路径或类似事物的解决方案。
我想要实现的目标与游戏制作者表面类似 - 带有孔(光)的黑暗前景,我可以通过它看到背景。
我还在寻找可以处理元素中多个圆孔和动态位置变化的解决方案。
谢谢您的任何回答,我希望这是可能的。
PS:对不起我的英语,我不是来自英语国家
最佳答案
给你。我已经大致地重新塑造了你的形象。我制作了一个黑色矩形,其中有一个孔,您可以通过它看到绿色背景。
var s = Snap("#svg");
// Make a green rectangle. Something for us to see through the mask.
var greenbg = s.rect(0,0, 400,300);
greenbg.attr({
fill: "darkseagreen"
});
// Now create the mask.
// We want the mask to be a hole through a rectangle, so the mask
// needs to be a white (solid) rectangle with a black (hole) circle
// on top of it.
var maskrect = s.rect(0,0, 400,300); // the rect
maskrect.attr({
fill: "white"
});
var maskcircle = s.circle(140,130, 80); // the circular hole
// Now group these two items to create the combined object that becomes the mask.
spotlightmask = s.group(maskrect, maskcircle);
// Add a black foreground rectangle that we will apply the mask to.
var blackfg = s.rect(0,0, 400,300);
// Attch the mask to the black foreground rect.
blackfg.attr({
mask: spotlightmask
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/snap.svg/0.4.1/snap.svg-min.js"></script>
<svg id="svg" width="500" height="500"></svg>
关于javascript - Snapsvg 使用蒙版在矩形中创建孔,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32304991/
我是一名优秀的程序员,十分优秀!