html - 防止 SVG 背景图像缩放

标签 html css svg image-scaling

我使用带有蒙版的 SVG 元素来“剔除”或“打洞”文本,以便可以显示底层图像。我当前设置的唯一问题是,当调整浏览器窗口大小时,图像元素会拉伸(stretch)和扭曲,而不是保持固定的宽高比/大小。

我一直在研究 svg 规范,并阅读过有关preserveAspectRatio 的内容,但似乎没有任何效果。

这是我正在使用的基本元素:

<svg xmlns="http://www.w3.org/2000/svg" width="100%" height="100%" xmlns:xlink="http://www.w3.org/1999/xlink">
          <defs>
            <mask id="masktext1">
              <rect width="100%" height="100%" fill="#fff" />
              <text width="100%" class="svgtext">TEXT 1</text>
            </mask>
          </defs>
          <image xlink:href="https://s3.amazonaws.com/f.cl.ly/items/1w3F3d130t2q1i2n2b2Y/pattern.png" mask="url(#masktext1)" width="100%" height="100%" x="0" y="0" preserveAspectRatio="xMinYMin slice" />
        </svg>

这是一个 JS Fiddle 示例。请注意,当您水平调整窗口大小时,该问题就会显现出来。

http://jsfiddle.net/785yjwws/

最佳答案

按照chipChocolate.py的建议,通过阅读viewBox找到了解决方案。我发现this great article by on sarasoueidan.com这有很大帮助。最终的解决方案涉及将图像元素的宽度和高度设置为背景图像的完整大小,以编程方式为空间设置父 svg 元素的宽度和高度,然后设置 viewBox = "0 0 [程序化宽度] [程序化高度]" 框架内容。

关于html - 防止 SVG 背景图像缩放,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28220103/

相关文章:

javascript - 为什么网络套接字在 nodejs 上表现不同?

javascript - 如何在提交后重置表单

javascript - 为我的网站加载自定义社交按钮,例如 Gplus 或 FB

css - 将图像的高度设置为动态宽度(仅使用 CSS)

html - img 在 foreignObject 内部 在 svg 内部 在 img 内部

javascript - 如何验证两个复选框并确保至少选中一个?

html - 自定义 CSS 导航菜单,无下拉菜单

html - 如何定位导航栏?

javascript - SVG 作为 Div 的内联背景图像不起作用

css - SVG 悬停时的闪耀/光泽效果?