【发布时间】:2014-08-01 00:05:12
【问题描述】:
基本上,我需要将 CSS background-image、background-repeat:no-repeat、background-position: 50% 50% 和 background-size: 90%(略有不同)模仿为 SVG 形状。它应该看起来像这样(百分比、盾牌和锚点作为背景图像):
要求是:
- 图像必须与
fill颜色一起使用,并且在其上独立 (background-image) - 只能是一张图片,不能有很多副本 (
background-repeat:no-repeat) - 它必须在形状内居中 (
background-position: 50% 50%) - 图片必须适合形状并且不能超出边框
- 理想情况下,应该对图像应用一种填充 (
background-size: 90%)
我对 SVG 的使用还不是很熟练。尝试使用patterns 并使用模式单位和纵横比:
<pattern id="p2" height=".9" width=".9"
patternUnits="objectBoundingBox"
patternContentUnits="userSpaceOnUse"
viewBox="0 0 140 165" preserveAspectRatio="xMidYMid meet"
>
<g width="1" height="1" transform="matrix(1.25,0,0,-1.25,0,164.4025)" preserveAspectRatio="xMidYMid meet">
...
</g>
</pattern>
通过这种方式,图像被缩放到形状大小的 90%(图案width 和height),通过viewBox 调整居中(仅适用于这个特定的)。但在 Firefox 中重复并被拉伸(从 v29 开始),就好像它是 preserveAspectRatio = none。在 Chrome 中没有拉伸。而且我想不出一种方法来使用带有填充颜色的图像。
非常感谢任何帮助。
【问题讨论】:
标签: svg background-image