我正在为数据可视化编写内联SVG代码,并且尝试将<mask>
填充的<pattern>
应用于多个SVG <rect>
元素。
我找不到patternUnits
,patternContentUnits
,maskUnits
和maskContentUnits
的组合,该组合使遮罩填充了要应用的每个矩形的100%而没有拉伸模式。可能吗模式本身并不复杂,应该看起来像这样:correct pattern dimensions applied
由于性能优化,我不想将<defs>
标签放在组件根目录下的单独svg中。
#my-defs {
position: absolute;
top: -1000px;
left: -1000px;
}
#my-svg {
width: 200px;
height: 3em;
}
#my-svg rect {
width: 100%;
height: 80%;
}
<svg id="my-defs">
<defs>
<pattern id="diagonal-hatch-pattern" patternUnits="userSpaceonUse" width="4" height="4">
<path d="M-1,1 l2,-2 M0,4 l4,-4 M3,5 l2,-2" stroke="white" strokeWidth="1" />
</pattern>
<mask id="diagonal-hatch-mask" x="0" y="0" width="1" height="1" maskContentUnits="objectBoundingBox">
<rect fill="url(#diagonal-hatch-pattern)" x="0" y="0" width="1" height="1" />
</mask>
</defs>
</svg>
<svg id="my-svg">
<rect fill="steelblue" mask="url(#diagonal-hatch-mask)" />
</svg>