【发布时间】:2017-05-10 22:44:06
【问题描述】:
我是 SVG 的新手,所以这可能是一个简单的问题。我正在尝试制作一个在矩形内具有简单三角形形状的 SVG 蒙版。我想要实现的是让矩形响应他的宽度,但三角形应该 - 获得固定尺寸 - 始终位于视口的中心
用我的 sn-p 你会更好理解的:
.header-arrow {
height: 70px;
}
svg {
height: inherit;
}
#arrow-down-alpha {
transform: translateX(calc(50vw - 130px/2));
}
<div class="header-arrow">
<svg width="100%">
<defs>
<mask id="myMask" x="0" y="0" width="100%" height="100%">
<rect fill="white" x="0" y="0" width="100%" height="100%" />
<polygon id="arrow-down-alpha" fill="black" x="00" y="0" width="165px" height="100%" points="55.91 37.8 111.81 0 0 0 55.91 37.8" />
</mask>
</defs>
<rect id="base-mask" mask="url(#myMask)" x="0" y="0" width="100%" height="100%" />
</svg>
</div>
它现在在 chrome 中工作,但 translateX(或翻译)在 firefox 和 edge 中不工作。我尝试使用 transform SVG 属性,但似乎无法使用百分比值。 我对视图框不是很熟悉,但我不确定它在这种情况下是否会有所帮助。
感谢任何帮助!
【问题讨论】:
-
我确信这是骗人的。试着先这么找。
-
x、y、width和height不是<polygon>的有效属性。 -
很遗憾,新的 CSS 单元类型(如
vw)在用于 SVG 元素时得不到很好的支持。