html - SVG 文本元素不可见
问题描述
基本上我想将SVG
画布映射到 -1..1 并在画布上打印一些文本。
没有请求映射的简单示例是:
<style>
.text {font: 14pt sans-serif; fill: red;}
</style>
<svg class="text" viewBox="0 0 100 100" xmlns="http://www.w3.org/2000/svg">
<text x="0" y="14pt">TEXT</text>
</svg>
我想要的是这段代码来显示文本:
<style>
.text {font: 14pt sans-serif; fill: red;}
</style>
<svg class="text" viewBox="-1 -1 2 2" xmlns="http://www.w3.org/2000/svg">
<text x="0" y="0">TEXT</text>
</svg>
正如我从MDN了解到的,画布的中心将位于 0,0。我希望文本字符串打印在中心(实际上在零点之上)。我肯定错过了这个问题。你能帮助我吗?
解决方案
正如我所评论的:您的字体太大:14pt 与 svg 画布的大小:宽度:2,高度:2。为了理解会发生什么,我将 svg 画布居中在窗口中间(带有银色边框的小方块)并添加overflow:visible;
,以便您可以看到文本。
.text {font: 14pt sans-serif; fill: red;}
svg{
border:1px solid silver;
width:25px;
height:25px;
display:block;
margin:auto;
position:absolute;
left:0;right:0;top:0;bottom:0;
overflow:visible;
}
<svg class="text" viewBox="-1 -1 2 2" xmlns="http://www.w3.org/2000/svg">
<text x="0" y="0">TEXT</text>
</svg>
您的问题的解决方案是设置更大的 viewBox 和更小的字体大小。您可能很想为您拥有的 viewBox 使用非常小的字体大小 (-1 -1 2 2)。请阅读这篇文章:SVG 中数字的限制
推荐阅读
- java - HashMap 如何决定序列
- aws-dms - 允许所有端口从 DMS 连接到 docDB?
- algorithm - 如何在 O(nloglogn) 时间复杂度内对 range[1, logn**logn] 中的 n 个元素进行排序?
- javascript - 如何在 Span 和之前 br Selenium WebDriver 之间获取单个文本节点
- javascript - 无法解决 Angular 6 compiler.js 错误
- sonarqube - SonarQube 的重复密度与文档提供的公式不匹配
- python - 在 Cython 模块中加载与链接
- python - 使用 Statsmodel 自相关函数时的排序数据
- ruby-on-rails - 如何设置搜索查询
- webrtc - STUN 服务器真的有必要吗?