javascript - 如何将 SVG 的宽度从百分比转换为像素?
问题描述
我创建了一个矢量图像并将宽度和高度百分比设置为 100%,如下所示:
var svg = document.createElementNS("http://www.w3.org/2000/svg", "svg");
var svgNS = svg.namespaceURI;
svg.setAttribute('id', 'idsvg');
svg.setAttribute('width', '100%');
svg.setAttribute('height', '100%');
现在我想创建一个位置为“100% - 20px”的矩形,但它不起作用,因为 100% 不是数字。我该如何解决这个问题?
解决方案
为此,您可以使用calc()
. 这将让您在指定 CSS 属性值时执行计算。
所以你的代码应该是这样的:
var svg = document.createElementNS("http://www.w3.org/2000/svg", "svg");
var svgNS = svg.namespaceURI;
svg.setAttribute('id', 'idsvg');
svg.setAttribute('width', 'calc(100% - 20px)');
svg.setAttribute('height', '100%');
注意:请记住,您不能在特定情况下使用calc(100% - 20px)
for height
,因为结果将是未知的。所以calc(100vh - 20px)
还是100%
自己用比较好。
推荐阅读
- model-view-controller - 控制器无法从 View PyPubsub 获取消息
- android - 导航到另一个片段后如何隐藏 BottomSheetDialogFragment
- sql - 停止所有具有特定作业名称的 SQL 代理服务器作业
- html - 如何将 html 放入 SVG 设备原型中?
- javafx - 如何引用 Java FX 的 fxml 文件中的值?
- node.js - 如何制作嵌套的异步请求火力库云功能(firestore)
- autohotkey - 在自动热键结果中双击键 ctrl+key
- python - 如何动态地将元素添加到 DataTable ipyvuetify?
- freetype2 - 为什么linearHoriAdvance不等于face->glyph->metrics->horiAdvance * 65536?
- sql - 非常小的“多”表的 SQL 一对多关系