【发布时间】:2021-04-18 02:59:43
【问题描述】:
我正在使用名为 rqrcode 的 Ruby gem 生成 QR 码作为 SVG,然后将其作为 API 响应发送。在前端(Vue.js)中,我需要以指定的大小显示 SVG。
现在我的代码看起来像这样,虽然它会渲染 SVG,但我无法指定大小。
<div v-html="qrCode" />
我尝试向 div 添加样式,但 SVG 完全忽略了它。为了给你一个想法,这就是它的样子:
我的理解是,您可以在<svg> 标签内使用width、height 和viewBox 来缩放SVG。
但是,无法在 rqrcode 中指定这些属性 - 高度和宽度由 gem 决定,并且开始的 svg 标记如下所示:
<svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:ev="http://www.w3.org/2001/xml-events" width="246" height="246" shape-rendering="crispEdges">
所以我的问题是,如何从父容器指定内联 SVG 的大小以适应父容器?
[编辑澄清]如果<svg> 标记中的尺寸大于我的 div 容器,我希望 svg 缩小以适合容器。
反之亦然 - 如果尺寸更小,我希望 svg 扩展以适应容器。我不确定这是否可能。
【问题讨论】:
-
对于 div,将位置更改为相对...在 div 样式中指定高度和宽度
-
对于 svg 类,将高度和宽度设置为 100%
-
而不是
width="246" height="246"使用viewBox="0 0 246 246" -
@enxaneta 正如我在问题中所写,我无法设置
width、height或viewBox,因为<svg>标签内的所有内容都是由rqrcode 自动生成的宝石。我的问题是您是否可以从其父容器缩放 SVG。 -
然后使用javascript摆脱
width和height并设置viewBox,正如enxaneta所说,这是你问题的根本原因