javascript - 如何在 SVG 上使用 preserveAspectRatio使用 SVG.JS
问题描述
我最近发现在 SVG 中的符号上使用“preserveAspectRatio”,老实说,我一直在尝试完成的设计类型改变了游戏规则。但是,我似乎无法使用 SVG.JS 让它工作。
/* canvas created */
var draw = SVG('maindiv').viewbox('0 0 500 500').attr({ 'preserveAspectRatio': 'none' })
/* polgon created */
var polyg = draw.polygon('0,150 500,150 500,500 0,500').fill('black')
/* symbol created and inserted, with functioning viewbox but preserveAspect ratio not working */
var txt = draw.symbol().viewbox('0 0 500 500').attr({ 'preserveAspectRatio': 'xMinYMin meet' })
txt.text('Some Text').font({family: 'Arial',weight: 'bold',size: 30,fill: '#f06'})
var title = draw.use(txt)
/* clickable animation */
polyg.click(function() {
this.animate().attr({'points':'0,350 500,350 500,500 0,500'})
})
如果您查看链接中的代码,黑色多边形正确扩展了整个视口,但实际上是符号的文本不应随视口缩放。继续调整窗口大小,您将看到文本自行调整大小。
有任何想法吗?缺少有关如何使用 SVG.JS 执行此操作的文档,因此我相信这将帮助一些试图在同一个 SVG 画布中拥有多个元素的相同挑战的人,其中一些元素响应视口和一些静态的。
解决方案
推荐阅读
- python-3.x - 如何判断一棵树是否包含在另一棵树中?
- python - 如何使用 Flask 请求将 GET 参数传递给 url
- google-cloud-platform - 在 Google Cloud Functions 之间进行内部通信?
- reactjs - 浏览器接管时反应可加载的服务器端重新渲染和重新获取
- postgresql - 夜间劳动时间的第一次和最后一次
- keycloak - 没有 keycloak 适配器的 REST 应用程序的 Keycloak 授权服务
- javascript - 使用 webcrawler 获取从异步函数调用的站点上的数据
- java - java.io.EOFException 被抛出
- scala - 转换 Spark DataFrame 以进行 ML 处理
- mariadb - Galera 集群数据库同步,但不是表数据问题