在 svg 中具有固定比例的文本段落
Text paragraph with fixed ratio within svg
我使用 JavaScript 即时生成动态 SVG 图形。为此,应将一段文本添加到 svg 图像内具有固定纵横比的框中。短文本长度和非常长文本长度之间的文本长度可能有所不同。由于实际字体大小对我的目的并不重要,因此我使用 viewBox 属性来显示框中的整个段落。到目前为止,据我研究和测试,svg 不提供任何自动换行功能,因此我可能会在foreignObject
中使用标准 HTML div
来使用 HTML 换行。
是否有可能根据其内容长度获得具有固定纵横比的div?我已经设法通过迭代减小宽度来获得这样的div,直到比率或多或少符合目的。但是这个解决方案相当不精确,需要在实际将其插入 svg 之前将div 添加到 DOM 中。有没有CSS解决方案?
不幸的是,没有人可以帮助解决这个问题,我实现了以下(或多或少有效)解决方案:
for(var i = 0; i < 200; i++){
if($('#wrapper').width()/$('#wrapper').height() <= 5){
console.log($('#wrapper').width()/$('#wrapper').height())
break;
}
$('#wrapper').width($('#wrapper').width()*0.8);
}
for(var y = 0; y < 200; y++){
if($('#wrapper').width()/$('#wrapper').height() >= 4.9){
break;
}
$('#wrapper').width($('#wrapper').width()*1.02);
}
此方法尝试以迭代方式将纵横比收敛到近似正确的比率。
到目前为止,这不是一个最佳解决方案,但至少是一个可行的解决方案。
相关文章:
- Javascript-在文本区域中断,但不在段落中中断
- 可以't通过DOM更改javascript中的段落文本
- 无法使用jquery克隆没有文本的段落
- 如何按从当前单词到段落中该句子(.)结尾的范围选择文本
- 如何隐藏和显示 html 输入文本和段落
- 单击“段落到文本区域”后,它会更新段落中的文本
- 将数组中的数据作为段落添加到一个文本区域
- 删除没有文本的段落
- 从文本框中获取文本并将其显示在段落中
- 将文本值与复选框值之和相乘,并将其显示在段落中
- 使用XML将头文本、段落文本和按钮和每个图像绑定
- 获取元素中的段落文本
- JavaScript在段落中的页面加载后添加文本
- 使用文本节点打印段落
- 每当我按下输入框内的键盘输入按钮(其中有文本)时,都会出现新的段落
- 在 svg 中具有固定比例的文本段落
- 在文本段落中查找单词
- 如何在使用 GET 方法发送 url 时保留文本区域输入中的文本段落
- 是否可以在单击后突出显示其他页面中的元素(可能是文本段落)?
- 如何在文本段落中的每一个单词上添加跨度